summarylogtreecommitdiffstats
path: root/vaapi-fix.patch
diff options
context:
space:
mode:
authorjk2019-12-13 16:25:47 -0500
committerjk2019-12-13 16:25:47 -0500
commitd42c0ced9abda7550a6c144fd012669a9ccd411d (patch)
tree52e33b533013219df03dbfcb1048649705a38975 /vaapi-fix.patch
parentd94f5e13dfca9ff5e1f61dfae19569b4e981ffaf (diff)
downloadaur-d42c0ced9abda7550a6c144fd012669a9ccd411d.tar.gz
uppkg 79.0.3945.79
Diffstat (limited to 'vaapi-fix.patch')
-rw-r--r--vaapi-fix.patch44
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