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>
&plane,
&winsys_stride,
&plane_offset,
- &modifier);
+ &modifier,
+ &res->blob_mem);
virgl_resource_layout(&res->u.b, &res->metadata, plane, winsys_stride,
plane_offset, modifier);
#include "virgl_screen.h"
#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 virgl_screen;
struct virgl_context;
* usable.
*/
unsigned bind_history;
+ uint32_t blob_mem;
};
struct virgl_transfer {
uint32_t *plane,
uint32_t *stride,
uint32_t *plane_offset,
- uint64_t *modifier);
+ uint64_t *modifier,
+ uint32_t *blob_mem);
boolean (*resource_get_handle)(struct virgl_winsys *vws,
struct virgl_hw_res *res,
uint32_t stride,
uint32_t *plane,
uint32_t *stride,
uint32_t *plane_offset,
- uint64_t *modifier)
+ uint64_t *modifier,
+ uint32_t *blob_mem)
{
struct virgl_drm_winsys *qdws = virgl_drm_winsys(qws);
struct drm_gem_open open_arg = {};
}
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;
pipe_reference_init(&res->reference, 1);
/* false when the resource is known to be idle */
int maybe_busy;
+ uint32_t blob_mem;
};