nouveau: implementation for get_resources()

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23159>
This commit is contained in:
Ganesh Belgur Ramachandra 2023-06-19 14:50:41 -05:00 committed by Marge Bot
parent 8e147746c4
commit e4389fe0ee
3 changed files with 46 additions and 0 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;