virgl: query blob mem
Resource blob also modifies resource info. Let's use this functionality. Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4821>
This commit is contained in:
parent
3b54e5837a
commit
87383e3163
|
@ -572,7 +572,8 @@ static struct pipe_resource *virgl_resource_from_handle(struct pipe_screen *scre
|
||||||
&plane,
|
&plane,
|
||||||
&winsys_stride,
|
&winsys_stride,
|
||||||
&plane_offset,
|
&plane_offset,
|
||||||
&modifier);
|
&modifier,
|
||||||
|
&res->blob_mem);
|
||||||
|
|
||||||
virgl_resource_layout(&res->u.b, &res->metadata, plane, winsys_stride,
|
virgl_resource_layout(&res->u.b, &res->metadata, plane, winsys_stride,
|
||||||
plane_offset, modifier);
|
plane_offset, modifier);
|
||||||
|
|
|
@ -33,6 +33,10 @@
|
||||||
#include "virgl_screen.h"
|
#include "virgl_screen.h"
|
||||||
#define VR_MAX_TEXTURE_2D_LEVELS 15
|
#define VR_MAX_TEXTURE_2D_LEVELS 15
|
||||||
|
|
||||||
|
#define VIRGL_BLOB_MEM_GUEST 1
|
||||||
|
#define VIRGL_BLOB_MEM_HOST3D 2
|
||||||
|
#define VIRGL_BLOB_MEM_HOST3D_GUEST 3
|
||||||
|
|
||||||
struct winsys_handle;
|
struct winsys_handle;
|
||||||
struct virgl_screen;
|
struct virgl_screen;
|
||||||
struct virgl_context;
|
struct virgl_context;
|
||||||
|
@ -63,6 +67,7 @@ struct virgl_resource {
|
||||||
* usable.
|
* usable.
|
||||||
*/
|
*/
|
||||||
unsigned bind_history;
|
unsigned bind_history;
|
||||||
|
uint32_t blob_mem;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct virgl_transfer {
|
struct virgl_transfer {
|
||||||
|
|
|
@ -85,7 +85,8 @@ struct virgl_winsys {
|
||||||
uint32_t *plane,
|
uint32_t *plane,
|
||||||
uint32_t *stride,
|
uint32_t *stride,
|
||||||
uint32_t *plane_offset,
|
uint32_t *plane_offset,
|
||||||
uint64_t *modifier);
|
uint64_t *modifier,
|
||||||
|
uint32_t *blob_mem);
|
||||||
boolean (*resource_get_handle)(struct virgl_winsys *vws,
|
boolean (*resource_get_handle)(struct virgl_winsys *vws,
|
||||||
struct virgl_hw_res *res,
|
struct virgl_hw_res *res,
|
||||||
uint32_t stride,
|
uint32_t stride,
|
||||||
|
|
|
@ -389,7 +389,8 @@ virgl_drm_winsys_resource_create_handle(struct virgl_winsys *qws,
|
||||||
uint32_t *plane,
|
uint32_t *plane,
|
||||||
uint32_t *stride,
|
uint32_t *stride,
|
||||||
uint32_t *plane_offset,
|
uint32_t *plane_offset,
|
||||||
uint64_t *modifier)
|
uint64_t *modifier,
|
||||||
|
uint32_t *blob_mem)
|
||||||
{
|
{
|
||||||
struct virgl_drm_winsys *qdws = virgl_drm_winsys(qws);
|
struct virgl_drm_winsys *qdws = virgl_drm_winsys(qws);
|
||||||
struct drm_gem_open open_arg = {};
|
struct drm_gem_open open_arg = {};
|
||||||
|
@ -464,6 +465,8 @@ virgl_drm_winsys_resource_create_handle(struct virgl_winsys *qws,
|
||||||
}
|
}
|
||||||
|
|
||||||
res->res_handle = info_arg.res_handle;
|
res->res_handle = info_arg.res_handle;
|
||||||
|
res->blob_mem = info_arg.blob_mem;
|
||||||
|
*blob_mem = info_arg.blob_mem;
|
||||||
|
|
||||||
res->size = info_arg.size;
|
res->size = info_arg.size;
|
||||||
pipe_reference_init(&res->reference, 1);
|
pipe_reference_init(&res->reference, 1);
|
||||||
|
|
|
@ -52,6 +52,7 @@ struct virgl_hw_res {
|
||||||
|
|
||||||
/* false when the resource is known to be idle */
|
/* false when the resource is known to be idle */
|
||||||
int maybe_busy;
|
int maybe_busy;
|
||||||
|
uint32_t blob_mem;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue