summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGurchetan Singh <[email protected]>2019-09-25 10:06:23 -0700
committerGurchetan Singh <[email protected]>2019-10-02 17:57:47 -0700
commitaad4127c41b70981f5c8a5aad6e3d7922a812ccb (patch)
treed813e3e7d76279b8e8194f771ab51da7c5211de5 /src
parent2899bbe37ac8399503a735db68a41071811ded85 (diff)
virgl: modify resource_create_from_handle(..) callback
This commit makes no functional changes, just adds the revelant plumbing. Reviewed by: Robert Tarasov <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/virgl/virgl_resource.c9
-rw-r--r--src/gallium/drivers/virgl/virgl_winsys.h6
-rw-r--r--src/gallium/winsys/virgl/drm/virgl_drm_winsys.c6
3 files changed, 18 insertions, 3 deletions
diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c
index ca4db39dab1..530f8e57fe7 100644
--- a/src/gallium/drivers/virgl/virgl_resource.c
+++ b/src/gallium/drivers/virgl/virgl_resource.c
@@ -507,6 +507,8 @@ static struct pipe_resource *virgl_resource_from_handle(struct pipe_screen *scre
struct winsys_handle *whandle,
unsigned usage)
{
+ uint32_t winsys_stride, plane_offset, plane;
+ uint64_t modifier;
struct virgl_screen *vs = virgl_screen(screen);
if (templ->target == PIPE_BUFFER)
return NULL;
@@ -517,7 +519,12 @@ static struct pipe_resource *virgl_resource_from_handle(struct pipe_screen *scre
pipe_reference_init(&res->u.b.reference, 1);
virgl_resource_layout(&res->u.b, &res->metadata);
- res->hw_res = vs->vws->resource_create_from_handle(vs->vws, whandle);
+ plane = winsys_stride = plane_offset = modifier = 0;
+ res->hw_res = vs->vws->resource_create_from_handle(vs->vws, whandle,
+ &plane,
+ &winsys_stride,
+ &plane_offset,
+ &modifier);
if (!res->hw_res) {
FREE(res);
return NULL;
diff --git a/src/gallium/drivers/virgl/virgl_winsys.h b/src/gallium/drivers/virgl/virgl_winsys.h
index 9abfec6898b..97885c99955 100644
--- a/src/gallium/drivers/virgl/virgl_winsys.h
+++ b/src/gallium/drivers/virgl/virgl_winsys.h
@@ -80,7 +80,11 @@ struct virgl_winsys {
struct virgl_hw_res *res);
struct virgl_hw_res *(*resource_create_from_handle)(struct virgl_winsys *vws,
- struct winsys_handle *whandle);
+ struct winsys_handle *whandle,
+ uint32_t *plane,
+ uint32_t *stride,
+ uint32_t *plane_offset,
+ uint64_t *modifier);
boolean (*resource_get_handle)(struct virgl_winsys *vws,
struct virgl_hw_res *res,
uint32_t stride,
diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
index 741064a958c..01e1f51d757 100644
--- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
@@ -301,7 +301,11 @@ alloc:
static struct virgl_hw_res *
virgl_drm_winsys_resource_create_handle(struct virgl_winsys *qws,
- struct winsys_handle *whandle)
+ struct winsys_handle *whandle,
+ uint32_t *plane,
+ uint32_t *stride,
+ uint32_t *plane_offset,
+ uint64_t *modifier)
{
struct virgl_drm_winsys *qdws = virgl_drm_winsys(qws);
struct drm_gem_open open_arg = {};