mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 05:28:05 +02:00
nouveau: hook up video decoding with nouveau_context
This doesn't include nvfx since its context struct is not derived from common nouveau_context (yet).
This commit is contained in:
parent
76bccaff0c
commit
ea316c5e06
8 changed files with 56 additions and 1 deletions
|
|
@ -10,6 +10,7 @@ LIBRARY_INCLUDES = \
|
|||
C_SOURCES = nouveau_screen.c \
|
||||
nouveau_fence.c \
|
||||
nouveau_mm.c \
|
||||
nouveau_buffer.c
|
||||
nouveau_buffer.c \
|
||||
nouveau_video.c
|
||||
|
||||
include ../../Makefile.template
|
||||
|
|
|
|||
|
|
@ -23,4 +23,7 @@ nouveau_context(struct pipe_context *pipe)
|
|||
return (struct nouveau_context *)pipe;
|
||||
}
|
||||
|
||||
void
|
||||
nouveau_context_init_vdec(struct nouveau_context *);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ nouveau_screen_bo_from_handle(struct pipe_screen *pscreen,
|
|||
int nouveau_screen_init(struct nouveau_screen *, struct nouveau_device *);
|
||||
void nouveau_screen_fini(struct nouveau_screen *);
|
||||
|
||||
void nouveau_screen_init_vdec(struct nouveau_screen *);
|
||||
|
||||
|
||||
#ifndef NOUVEAU_NVC0
|
||||
|
|
|
|||
39
src/gallium/drivers/nouveau/nouveau_video.c
Normal file
39
src/gallium/drivers/nouveau/nouveau_video.c
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
|
||||
#include "vl/vl_decoder.h"
|
||||
#include "vl/vl_video_buffer.h"
|
||||
|
||||
#include "nouveau/nouveau_screen.h"
|
||||
#include "nouveau/nouveau_context.h"
|
||||
|
||||
static int
|
||||
nouveau_screen_get_video_param(struct pipe_screen *pscreen,
|
||||
enum pipe_video_profile profile,
|
||||
enum pipe_video_cap param)
|
||||
{
|
||||
switch (param) {
|
||||
case PIPE_VIDEO_CAP_SUPPORTED:
|
||||
return vl_profile_supported(pscreen, profile);
|
||||
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
|
||||
return 1;
|
||||
case PIPE_VIDEO_CAP_MAX_WIDTH:
|
||||
case PIPE_VIDEO_CAP_MAX_HEIGHT:
|
||||
return vl_video_buffer_max_size(pscreen);
|
||||
default:
|
||||
debug_printf("unknown video param: %d\n", param);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nouveau_screen_init_vdec(struct nouveau_screen *screen)
|
||||
{
|
||||
screen->base.get_video_param = nouveau_screen_get_video_param;
|
||||
screen->base.is_video_format_supported = vl_video_buffer_is_format_supported;
|
||||
}
|
||||
|
||||
void
|
||||
nouveau_context_init_vdec(struct nouveau_context *nv)
|
||||
{
|
||||
nv->pipe.create_video_decoder = vl_create_decoder;
|
||||
nv->pipe.create_video_buffer = vl_video_buffer_create;
|
||||
}
|
||||
|
|
@ -149,6 +149,8 @@ nv50_create(struct pipe_screen *pscreen, void *priv)
|
|||
assert(nv50->draw);
|
||||
draw_set_rasterize_stage(nv50->draw, nv50_draw_render_stage(nv50));
|
||||
|
||||
nouveau_context_init_vdec(&nv50->base);
|
||||
|
||||
return pipe;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -315,6 +315,8 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
|
|||
|
||||
nv50_screen_init_resource_functions(pscreen);
|
||||
|
||||
nouveau_screen_init_vdec(&screen->base);
|
||||
|
||||
ret = nouveau_bo_new(dev, NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0, 4096,
|
||||
&screen->fence.bo);
|
||||
if (ret)
|
||||
|
|
|
|||
|
|
@ -150,6 +150,8 @@ nvc0_create(struct pipe_screen *pscreen, void *priv)
|
|||
assert(nvc0->draw);
|
||||
draw_set_rasterize_stage(nvc0->draw, nvc0_draw_render_stage(nvc0));
|
||||
|
||||
nouveau_context_init_vdec(&nvc0->base);
|
||||
|
||||
return pipe;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@
|
|||
#include "util/u_format_s3tc.h"
|
||||
#include "pipe/p_screen.h"
|
||||
|
||||
#include "vl/vl_decoder.h"
|
||||
#include "vl/vl_video_buffer.h"
|
||||
|
||||
#include "nvc0_context.h"
|
||||
#include "nvc0_screen.h"
|
||||
|
||||
|
|
@ -373,6 +376,8 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
|
|||
|
||||
nvc0_screen_init_resource_functions(pscreen);
|
||||
|
||||
nouveau_screen_init_vdec(&screen->base);
|
||||
|
||||
ret = nouveau_bo_new(dev, NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0, 4096,
|
||||
&screen->fence.bo);
|
||||
if (ret)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue