From e4389fe0eeca196c62e8ea3be5f506a4f162f492 Mon Sep 17 00:00:00 2001 From: Ganesh Belgur Ramachandra Date: Mon, 19 Jun 2023 14:50:41 -0500 Subject: [PATCH] nouveau: implementation for get_resources() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Jesse Natalie Reviewed-by: Marek Olšák Reviewed-by: Karol Herbst Part-of: --- src/gallium/drivers/nouveau/nouveau_video.c | 15 +++++++++++++++ src/gallium/drivers/nouveau/nouveau_vp3_video.c | 15 +++++++++++++++ src/gallium/drivers/nouveau/nv50/nv84_video.c | 16 ++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/src/gallium/drivers/nouveau/nouveau_video.c b/src/gallium/drivers/nouveau/nouveau_video.c index eb3fe8c0361..69e2a40e382 100644 --- a/src/gallium/drivers/nouveau/nouveau_video.c +++ b/src/gallium/drivers/nouveau/nouveau_video.c @@ -637,6 +637,20 @@ vl: return vl_create_decoder(context, templ); } +static void +nouveau_video_buffer_resources(struct pipe_video_buffer *buffer, + struct pipe_resource **resources) +{ + struct nouveau_video_buffer *buf = (struct nouveau_video_buffer *)buffer; + unsigned i; + + assert(buf); + + for (i = 0; i < buf->num_planes; ++i) { + resources[i] = buf->resources[i]; + } +} + static struct pipe_sampler_view ** nouveau_video_buffer_sampler_view_planes(struct pipe_video_buffer *buffer) { @@ -790,6 +804,7 @@ nouveau_video_buffer_create(struct pipe_context *pipe, buffer->base.context = pipe; buffer->base.destroy = nouveau_video_buffer_destroy; + buffer->base.get_resources = nouveau_video_buffer_resources; buffer->base.get_sampler_view_planes = nouveau_video_buffer_sampler_view_planes; buffer->base.get_sampler_view_components = nouveau_video_buffer_sampler_view_components; buffer->base.get_surfaces = nouveau_video_buffer_surfaces; diff --git a/src/gallium/drivers/nouveau/nouveau_vp3_video.c b/src/gallium/drivers/nouveau/nouveau_vp3_video.c index ab46b3df6a6..e264f665437 100644 --- a/src/gallium/drivers/nouveau/nouveau_vp3_video.c +++ b/src/gallium/drivers/nouveau/nouveau_vp3_video.c @@ -36,6 +36,20 @@ #include "util/format/u_format.h" #include "util/u_sampler.h" +static void +nouveau_vp3_video_buffer_resources(struct pipe_video_buffer *buffer, + struct pipe_resource **resources) +{ + struct nouveau_vp3_video_buffer *buf = (struct nouveau_vp3_video_buffer *)buffer; + unsigned i; + + assert(buf); + + for (i = 0; i < buf->num_planes; ++i) { + resources[i] = buf->resources[i]; + } +} + static struct pipe_sampler_view ** nouveau_vp3_video_buffer_sampler_view_planes(struct pipe_video_buffer *buffer) { @@ -101,6 +115,7 @@ nouveau_vp3_video_buffer_create(struct pipe_context *pipe, buffer->base.destroy = nouveau_vp3_video_buffer_destroy; buffer->base.width = templat->width; buffer->base.height = templat->height; + buffer->base.get_resources = nouveau_vp3_video_buffer_resources; buffer->base.get_sampler_view_planes = nouveau_vp3_video_buffer_sampler_view_planes; buffer->base.get_sampler_view_components = nouveau_vp3_video_buffer_sampler_view_components; buffer->base.get_surfaces = nouveau_vp3_video_buffer_surfaces; diff --git a/src/gallium/drivers/nouveau/nv50/nv84_video.c b/src/gallium/drivers/nouveau/nv50/nv84_video.c index 683f59c8b83..d946b2bfe12 100644 --- a/src/gallium/drivers/nouveau/nv50/nv84_video.c +++ b/src/gallium/drivers/nouveau/nv50/nv84_video.c @@ -554,6 +554,21 @@ fail: return NULL; } +static void +nv84_video_buffer_resources(struct pipe_video_buffer *buffer, + struct pipe_resource **resources) +{ + struct nv84_video_buffer *buf = (struct nv84_video_buffer *)buffer; + unsigned num_planes = util_format_get_num_planes(buffer->buffer_format); + unsigned i; + + assert(buf); + + for (i = 0; i < num_planes; ++i) { + resources[i] = buf->resources[i]; + } +} + static struct pipe_sampler_view ** nv84_video_buffer_sampler_view_planes(struct pipe_video_buffer *buffer) { @@ -639,6 +654,7 @@ nv84_video_buffer_create(struct pipe_context *pipe, buffer->base.destroy = nv84_video_buffer_destroy; buffer->base.width = template->width; buffer->base.height = template->height; + buffer->base.get_resources = nv84_video_buffer_resources; buffer->base.get_sampler_view_planes = nv84_video_buffer_sampler_view_planes; buffer->base.get_sampler_view_components = nv84_video_buffer_sampler_view_components; buffer->base.get_surfaces = nv84_video_buffer_surfaces;