Merge branch 'pipe-video'
[mesa.git] / src / gallium / drivers / nvfx / nvfx_screen.c
index 8569b5a190b7fc4d1338c24df64ceef1f2e9d7ad..8cb6cd0938e9890ca7cee0d25685ffebdd1dacaf 100644 (file)
@@ -3,6 +3,8 @@
 #include "util/u_format.h"
 #include "util/u_format_s3tc.h"
 #include "util/u_simple_screen.h"
+#include "vl/vl_decoder.h"
+#include "vl/vl_video_buffer.h"
 
 #include "nouveau/nouveau_screen.h"
 #include "nouveau/nv_object.xml.h"
@@ -209,6 +211,24 @@ nvfx_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_cap param)
        }
 }
 
+static int
+nvfx_screen_get_video_param(struct pipe_screen *screen,
+                               enum pipe_video_profile profile,
+                               enum pipe_video_cap param)
+{
+       switch (param) {
+       case PIPE_VIDEO_CAP_SUPPORTED:
+               return vl_profile_supported(screen, profile);
+       case PIPE_VIDEO_CAP_NPOT_TEXTURES:
+               return 0;
+       case PIPE_VIDEO_CAP_MAX_WIDTH:
+       case PIPE_VIDEO_CAP_MAX_HEIGHT:
+               return vl_video_buffer_max_size(screen);
+       default:
+               return 0;
+       }
+}
+
 static boolean
 nvfx_screen_is_format_supported(struct pipe_screen *pscreen,
                                     enum pipe_format format,
@@ -469,7 +489,9 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
        pscreen->get_param = nvfx_screen_get_param;
        pscreen->get_shader_param = nvfx_screen_get_shader_param;
        pscreen->get_paramf = nvfx_screen_get_paramf;
+       pscreen->get_video_param = nvfx_screen_get_video_param;
        pscreen->is_format_supported = nvfx_screen_is_format_supported;
+       pscreen->is_video_format_supported = vl_video_buffer_is_format_supported;
        pscreen->context_create = nvfx_create;
 
        ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, 4096, &screen->fence);