Don't use dummy surface for vaCreateContext (#87)

Mesa ignores this parameter.

[ROCm/rocjpeg commit: ed919ec7d4]
This commit is contained in:
David Rosca
2024-12-03 14:49:57 +01:00
کامیت شده توسط GitHub
والد 83948fb659
کامیت 452c6acd2d
2فایلهای تغییر یافته به همراه1 افزوده شده و 21 حذف شده
@@ -325,12 +325,6 @@ RocJpegVappiDecoder::~RocJpegVappiDecoder() {
ERR("Error: Failed to destroy VAAPI buffer");
}
VAStatus va_status;
if (va_surface_id_ != 0) {
va_status = vaDestroySurfaces(va_display_, &va_surface_id_, 1);
if (va_status != VA_STATUS_SUCCESS) {
ERR("ERROR: vaDestroySurfaces failed!");
}
}
if (va_context_id_ != 0) {
va_status = vaDestroyContext(va_display_, va_context_id_);
if (va_status != VA_STATUS_SUCCESS) {
@@ -506,20 +500,7 @@ RocJpegStatus RocJpegVappiDecoder::CreateDecoderConfig() {
*/
RocJpegStatus RocJpegVappiDecoder::CreateDecoderContext() {
uint32_t surface_format;
surface_format = VA_RT_FORMAT_YUV420;
VASurfaceAttrib surface_attrib;
surface_attrib.type = VASurfaceAttribPixelFormat;
surface_attrib.flags = VA_SURFACE_ATTRIB_SETTABLE;
surface_attrib.value.type = VAGenericValueTypeInteger;
surface_attrib.value.value.i = VA_FOURCC_NV12;
// Create a dummy surface with a resolution of min_picture_width_ x min_picture_height_ supported by the hardware.
// This surface is only used to create the context for the decoding pipeline, as context creation requires an initial surface.
// During the actual submission, the appropriate surfaces with the correct resolution will be created.
CHECK_VAAPI(vaCreateSurfaces(va_display_, surface_format, min_picture_width_, min_picture_height_, &va_surface_id_, 1, &surface_attrib, 1));
CHECK_VAAPI(vaCreateContext(va_display_, va_config_id_, min_picture_width_, min_picture_height_, VA_PROGRESSIVE, &va_surface_id_, 1, &va_context_id_));
CHECK_VAAPI(vaCreateContext(va_display_, va_config_id_, min_picture_width_, min_picture_height_, VA_PROGRESSIVE, nullptr, 0, &va_context_id_));
return ROCJPEG_STATUS_SUCCESS;
}
@@ -346,7 +346,6 @@ private:
uint32_t max_picture_height_; // The maximum height of the picture
VADisplay va_display_; // The VAAPI display
VAContextID va_context_id_; // The VAAPI context ID
VASurfaceID va_surface_id_; // The VAAPI surface IDs
std::vector<VAConfigAttrib> va_config_attrib_; // The VAAPI configuration attributes
VAConfigID va_config_id_; // The VAAPI configuration ID
VAProfile va_profile_; // The VAAPI profile