diff options
author | jk | 2019-12-13 16:25:47 -0500 |
---|---|---|
committer | jk | 2019-12-13 16:25:47 -0500 |
commit | d42c0ced9abda7550a6c144fd012669a9ccd411d (patch) | |
tree | 52e33b533013219df03dbfcb1048649705a38975 /vaapi-fix.patch | |
parent | d94f5e13dfca9ff5e1f61dfae19569b4e981ffaf (diff) | |
download | aur-d42c0ced9abda7550a6c144fd012669a9ccd411d.tar.gz |
uppkg 79.0.3945.79
Diffstat (limited to 'vaapi-fix.patch')
-rw-r--r-- | vaapi-fix.patch | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/vaapi-fix.patch b/vaapi-fix.patch index a1343731dcaf..b5372d1a2556 100644 --- a/vaapi-fix.patch +++ b/vaapi-fix.patch @@ -1,6 +1,6 @@ --- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc +++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -635,6 +635,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( +@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's // internal decoded frame. if (buffer_allocation_mode_ != BufferAllocationMode::kNone && @@ -8,24 +8,22 @@ !vpp_vaapi_wrapper_) { vpp_vaapi_wrapper_ = VaapiWrapper::Create( VaapiWrapper::kVideoProcess, VAProfileNone, -@@ -650,7 +651,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( - // only used as a copy destination. Therefore, the VaapiWrapper used and - // owned by |picture| is |vpp_vaapi_wrapper_|. +@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( + PictureBuffer buffer = buffers[i]; + buffer.set_size(requested_pic_size_); std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create( - (buffer_allocation_mode_ == BufferAllocationMode::kNone) + ((buffer_allocation_mode_ == BufferAllocationMode::kNone) || + (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau)) ? vaapi_wrapper_ : vpp_vaapi_wrapper_, - make_context_current_cb_, bind_image_cb_, buffers[i]); -@@ -1077,6 +1079,14 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() { - + make_context_current_cb_, bind_image_cb_, buffer); +@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() { + VaapiVideoDecodeAccelerator::BufferAllocationMode VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { + // NVIDIA blobs use VDPAU -+ if (base::StartsWith(VaapiWrapper::GetVendorStringForTesting(), -+ "Splitted-Desktop Systems VDPAU", -+ base::CompareCase::SENSITIVE)) { ++ if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) { + LOG(INFO) << "VA-API driver on VDPAU backend"; + return BufferAllocationMode::kWrapVdpau; + } @@ -33,7 +31,7 @@ // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT // |output_mode_| as well. if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT) -@@ -1089,7 +1099,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { +@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { // depends on the bitstream and sometimes it's not enough to cover the amount // of frames needed by the client pipeline (see b/133733739). // TODO(crbug.com/911754): Enable for VP9 Profile 2. @@ -50,5 +48,27 @@ kNormal, + kWrapVdpau, }; - + // Decides the concrete buffer allocation mode, depending on the hardware +--- a/media/gpu/vaapi/vaapi_wrapper.cc ++++ b/media/gpu/vaapi/vaapi_wrapper.cc +@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType( + } else if (base::StartsWith(va_vendor_string, "Intel iHD driver", + base::CompareCase::SENSITIVE)) { + return media::VAImplementation::kIntelIHD; ++ } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU", ++ base::CompareCase::SENSITIVE)) { ++ return media::VAImplementation::kNVIDIAVDPAU; + } + return media::VAImplementation::kOther; + } +--- a/media/gpu/vaapi/vaapi_wrapper.h ++++ b/media/gpu/vaapi/vaapi_wrapper.h +@@ -79,6 +79,7 @@ enum class VAImplementation { + kIntelIHD, + kOther, + kInvalid, ++ kNVIDIAVDPAU, + }; + + // This class handles VA-API calls and ensures proper locking of VA-API calls |