vdpau: make state tracker far less noisy
[mesa.git] / src / gallium / state_trackers / vdpau / query.c
index eb7cfbcdd362097b596736be6a679656a69d2030..abe5b8f6701ce10c86aaaddd97ec932d0b224493 100644 (file)
@@ -31,6 +31,7 @@
 #include <pipe/p_screen.h>
 #include <pipe/p_defines.h>
 #include <math.h>
+#include <util/u_debug.h>
 
 
 VdpStatus
@@ -61,18 +62,20 @@ vlVdpVideoSurfaceQueryCapabilities(VdpDevice device, VdpChromaType surface_chrom
    uint32_t max_2d_texture_level;
    VdpStatus ret;
 
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying video surfaces\n");
+
    if (!(is_supported && max_width && max_height))
       return VDP_STATUS_INVALID_POINTER;
 
    vlVdpDevice *dev = vlGetDataHTAB(device);
    if (!dev)
       return VDP_STATUS_INVALID_HANDLE;
-   
+
    vlscreen = vl_screen_create(dev->display, dev->screen);
    if (!vlscreen)
       return VDP_STATUS_RESOURCES;
 
-   /* XXX: Current limits */ 
+   /* XXX: Current limits */
    *is_supported = true;
    if (surface_chroma_type != VDP_CHROMA_TYPE_420)  {
          *is_supported = false;
@@ -87,9 +90,9 @@ vlVdpVideoSurfaceQueryCapabilities(VdpDevice device, VdpChromaType surface_chrom
 
    /* I am not quite sure if it is max_2d_texture_level-1 or just max_2d_texture_level */
    *max_width = *max_height = pow(2,max_2d_texture_level-1);
-   
+
    vl_screen_destroy(vlscreen);
-   
+
    return VDP_STATUS_OK;
    no_sup:
    return ret;
@@ -100,8 +103,10 @@ vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities(VdpDevice device, VdpChromaTyp
                                                   VdpYCbCrFormat bits_ycbcr_format,
                                                   VdpBool *is_supported)
 {
-       struct vl_screen *vlscreen;
-       
+   struct vl_screen *vlscreen;
+
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying get put video surfaces\n");
+
    if (!is_supported)
       return VDP_STATUS_INVALID_POINTER;
 
@@ -113,15 +118,15 @@ vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities(VdpDevice device, VdpChromaTyp
    if (!vlscreen)
       return VDP_STATUS_RESOURCES;
 
-   if (bits_ycbcr_format != VDP_YCBCR_FORMAT_Y8U8V8A8
-                                      *is_supported = vlscreen->pscreen->is_format_supported(vlscreen->pscreen,
-                                   FormatToPipe(bits_ycbcr_format),
-                                   PIPE_TEXTURE_2D,
-                                   PIPE_BIND_RENDER_TARGET, 
-                                   PIPE_TEXTURE_GEOM_NON_SQUARE );
-                                                                  
+   if (bits_ycbcr_format != VDP_YCBCR_FORMAT_Y8U8V8A8 && bits_ycbcr_format != VDP_YCBCR_FORMAT_V8U8Y8A8)
+      *is_supported = vlscreen->pscreen->is_format_supported(vlscreen->pscreen,
+                                                             FormatToPipe(bits_ycbcr_format),
+                                                             PIPE_TEXTURE_2D,
+                                                             1,
+                                                             PIPE_BIND_RENDER_TARGET);
+
    vl_screen_destroy(vlscreen);
-                                                                  
+
    return VDP_STATUS_OK;
 }
 
@@ -135,14 +140,16 @@ vlVdpDecoderQueryCapabilities(VdpDevice device, VdpDecoderProfile profile,
    uint32_t max_decode_height;
    uint32_t max_2d_texture_level;
    struct vl_screen *vlscreen;
-       
+
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying decoder\n");
+
    if (!(is_supported && max_level && max_macroblocks && max_width && max_height))
       return VDP_STATUS_INVALID_POINTER;
-         
+
    vlVdpDevice *dev = vlGetDataHTAB(device);
    if (!dev)
       return VDP_STATUS_INVALID_HANDLE;
-   
+
    vlscreen = vl_screen_create(dev->display, dev->screen);
    if (!vlscreen)
       return VDP_STATUS_RESOURCES;
@@ -152,24 +159,24 @@ vlVdpDecoderQueryCapabilities(VdpDevice device, VdpDecoderProfile profile,
           *is_supported = false;
           return VDP_STATUS_OK;
    }
-   
+
    if (p_profile != PIPE_VIDEO_PROFILE_MPEG2_SIMPLE && p_profile != PIPE_VIDEO_PROFILE_MPEG2_MAIN)  {
           *is_supported = false;
           return VDP_STATUS_OK;
    }
-          
+
    /* XXX hack, need to implement something more sane when the decoders have been implemented */
    max_2d_texture_level = vlscreen->pscreen->get_param( vlscreen->pscreen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS );
    max_decode_width = max_decode_height = pow(2,max_2d_texture_level-2);
-   if (!(max_decode_width && max_decode_height))  
+   if (!(max_decode_width && max_decode_height))
       return VDP_STATUS_RESOURCES;
-       
+
    *is_supported = true;
    *max_width = max_decode_width;
    *max_height = max_decode_height;
    *max_level = 16;
    *max_macroblocks = (max_decode_width/16) * (max_decode_height/16);
-   
+
    vl_screen_destroy(vlscreen);
 
    return VDP_STATUS_OK;
@@ -182,6 +189,8 @@ vlVdpOutputSurfaceQueryCapabilities(VdpDevice device, VdpRGBAFormat surface_rgba
    if (!(is_supported && max_width && max_height))
       return VDP_STATUS_INVALID_POINTER;
 
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying ouput surfaces\n");
+
    return VDP_STATUS_NO_IMPLEMENTATION;
 }
 
@@ -189,6 +198,23 @@ VdpStatus
 vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities(VdpDevice device, VdpRGBAFormat surface_rgba_format,
                                                     VdpBool *is_supported)
 {
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying output surfaces get put native cap\n");
+
+   if (!is_supported)
+      return VDP_STATUS_INVALID_POINTER;
+
+   return VDP_STATUS_NO_IMPLEMENTATION;
+}
+
+VdpStatus
+vlVdpOutputSurfaceQueryPutBitsIndexedCapabilities(VdpDevice device,
+                                                  VdpRGBAFormat surface_rgba_format,
+                                                  VdpIndexedFormat bits_indexed_format,
+                                                  VdpColorTableFormat color_table_format,
+                                                  VdpBool *is_supported)
+{
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying output surfaces get put indexed cap\n");
+
    if (!is_supported)
       return VDP_STATUS_INVALID_POINTER;
 
@@ -200,6 +226,7 @@ vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities(VdpDevice device, VdpRGBAFormat
                                                 VdpYCbCrFormat bits_ycbcr_format,
                                                 VdpBool *is_supported)
 {
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying output surfaces put ycrcb cap\n");
    if (!is_supported)
       return VDP_STATUS_INVALID_POINTER;
 
@@ -210,6 +237,7 @@ VdpStatus
 vlVdpBitmapSurfaceQueryCapabilities(VdpDevice device, VdpRGBAFormat surface_rgba_format,
                                     VdpBool *is_supported, uint32_t *max_width, uint32_t *max_height)
 {
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying bitmap surfaces\n");
    if (!(is_supported && max_width && max_height))
       return VDP_STATUS_INVALID_POINTER;
 
@@ -220,6 +248,7 @@ VdpStatus
 vlVdpVideoMixerQueryFeatureSupport(VdpDevice device, VdpVideoMixerFeature feature,
                                    VdpBool *is_supported)
 {
+   VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Querying mixer feature support\n");
    if (!is_supported)
       return VDP_STATUS_INVALID_POINTER;