diff --git a/src/gallium/frontends/va/config.c b/src/gallium/frontends/va/config.c index e05096b5df5..588b69bfaf2 100644 --- a/src/gallium/frontends/va/config.c +++ b/src/gallium/frontends/va/config.c @@ -640,9 +640,7 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoin config->entrypoint); for (int i = 0; i < num_attribs; i++) { if (attrib_list[i].type == VAConfigAttribRTFormat) { - if (attrib_list[i].value & supported_rt_formats) { - config->rt_format = attrib_list[i].value; - } else { + if (!(attrib_list[i].value & supported_rt_formats)) { FREE(config); return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT; } @@ -653,10 +651,6 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoin } } - /* Default value if not specified in the input attributes. */ - if (!config->rt_format) - config->rt_format = supported_rt_formats; - mtx_lock(&drv->mutex); *config_id = handle_table_add(drv->htab, config); mtx_unlock(&drv->mutex); @@ -733,9 +727,7 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoin } } if (attrib_list[i].type == VAConfigAttribRTFormat) { - if (attrib_list[i].value & supported_rt_formats) { - config->rt_format = attrib_list[i].value; - } else { + if (!(attrib_list[i].value & supported_rt_formats)) { FREE(config); return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT; } @@ -756,10 +748,6 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoin } } - /* Default value if not specified in the input attributes. */ - if (!config->rt_format) - config->rt_format = supported_rt_formats; - mtx_lock(&drv->mutex); *config_id = handle_table_add(drv->htab, config); mtx_unlock(&drv->mutex); @@ -836,7 +824,9 @@ vlVaQueryConfigAttributes(VADriverContextP ctx, VAConfigID config_id, VAProfile *num_attribs = 1; attrib_list[0].type = VAConfigAttribRTFormat; - attrib_list[0].value = config->rt_format; + attrib_list[0].value = get_screen_supported_va_rt_formats(drv->pipe->screen, + config->profile, + config->entrypoint); return VA_STATUS_SUCCESS; } diff --git a/src/gallium/frontends/va/surface.c b/src/gallium/frontends/va/surface.c index 27f3914d3ae..cfbc5845e36 100644 --- a/src/gallium/frontends/va/surface.c +++ b/src/gallium/frontends/va/surface.c @@ -540,49 +540,44 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id, i = 0; - if (config->rt_format & VA_RT_FORMAT_YUV420) { - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_NV12, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_YV12, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_IYUV, attribs, &i); - } + /* VA_RT_FORMAT_YUV420 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_NV12, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_YV12, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_IYUV, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_YUV420_10) { - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P010, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P016, attribs, &i); - } + /* VA_RT_FORMAT_YUV420_10 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P010, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P016, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_YUV420_12) - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P012, attribs, &i); + /* VA_RT_FORMAT_YUV420_12 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_P012, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_YUV400) - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_Y8_400_UNORM, attribs, &i); + /* VA_RT_FORMAT_YUV400 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_Y8_400_UNORM, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_YUV422) { - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_UYVY, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_YUYV, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_Y8_U8_V8_440_UNORM, attribs, &i); - } + /* VA_RT_FORMAT_YUV422 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_UYVY, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_YUYV, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_Y8_U8_V8_440_UNORM, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_YUV444) - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_Y8_U8_V8_444_UNORM, attribs, &i); + /* VA_RT_FORMAT_YUV444 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_Y8_U8_V8_444_UNORM, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_RGBP) - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8_G8_B8_UNORM, attribs, &i); + /* VA_RT_FORMAT_RGBP */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8_G8_B8_UNORM, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_RGB32) { - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8G8B8A8_UNORM, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B8G8R8A8_UNORM, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8G8B8X8_UNORM, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B8G8R8X8_UNORM, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_A8R8G8B8_UNORM, attribs, &i); - } + /* VA_RT_FORMAT_RGB32 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8G8B8A8_UNORM, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B8G8R8A8_UNORM, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8G8B8X8_UNORM, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B8G8R8X8_UNORM, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_A8R8G8B8_UNORM, attribs, &i); - if (config->rt_format & VA_RT_FORMAT_RGB32_10) { - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R10G10B10A2_UNORM, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B10G10R10A2_UNORM, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R10G10B10X2_UNORM, attribs, &i); - vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B10G10R10X2_UNORM, attribs, &i); - } + /* VA_RT_FORMAT_RGB32_10 */ + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R10G10B10A2_UNORM, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B10G10R10A2_UNORM, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R10G10B10X2_UNORM, attribs, &i); + vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B10G10R10X2_UNORM, attribs, &i); attribs[i].type = VASurfaceAttribMemoryType; attribs[i].value.type = VAGenericValueTypeInteger; diff --git a/src/gallium/frontends/va/va_private.h b/src/gallium/frontends/va/va_private.h index 81e04a23e0d..e1acc1843a1 100644 --- a/src/gallium/frontends/va/va_private.h +++ b/src/gallium/frontends/va/va_private.h @@ -447,7 +447,6 @@ typedef struct { enum pipe_video_profile profile; enum pipe_video_entrypoint entrypoint; enum pipe_h2645_enc_rate_control_method rc; - unsigned int rt_format; } vlVaConfig; typedef struct vlVaSurface {