[vlc-commits] d3d: handle new Intel driver version formats

Steve Lhomme git at videolan.org
Fri Apr 6 11:23:41 CEST 2018


vlc/vlc-3.0 | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Thu Apr  5 08:37:48 2018 +0200| [cbf97f925e8f9ce7feeb6002055f17ba9d78faa0] | committer: Jean-Baptiste Kempf

d3d: handle new Intel driver version formats

aa.bb.16.dddd becomes aa.bb.100.dddd
and after aa.bb.100.9999 comes aa.bb.101.1000

When we need to target higher versions we'll use 101.11000 internally so the
build number can be compared with all formats.

(cherry picked from commit 704ad60d442661ddab1327b8546e1ce2ceb89bcd)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=cbf97f925e8f9ce7feeb6002055f17ba9d78faa0
---

 modules/video_chroma/d3d11_fmt.c | 11 +++++++++--
 modules/video_chroma/d3d9_fmt.c  |  6 ++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/modules/video_chroma/d3d11_fmt.c b/modules/video_chroma/d3d11_fmt.c
index 0932c4228d..9247ac0628 100644
--- a/modules/video_chroma/d3d11_fmt.c
+++ b/modules/video_chroma/d3d11_fmt.c
@@ -375,6 +375,13 @@ int D3D11CheckDriverVersion(d3d11_device_t *d3d_dev, UINT vendorId, const struct
     if (vendorId && adapterDesc.VendorId != vendorId)
         return VLC_SUCCESS;
 
+    int build = d3d_dev->WDDM.build;
+    if (adapterDesc.VendorId == GPU_MANUFACTURER_INTEL && d3d_dev->WDDM.revision >= 100)
+    {
+        /* new Intel driver format */
+        build += (d3d_dev->WDDM.revision - 100) * 1000;
+    }
+
     if (min_ver->wddm)
     {
         if (d3d_dev->WDDM.wddm > min_ver->wddm)
@@ -398,9 +405,9 @@ int D3D11CheckDriverVersion(d3d11_device_t *d3d_dev, UINT vendorId, const struct
     }
     if (min_ver->build)
     {
-        if (d3d_dev->WDDM.build > min_ver->build)
+        if (build > min_ver->build)
             return VLC_SUCCESS;
-        else if (d3d_dev->WDDM.build != min_ver->build)
+        else if (build != min_ver->build)
             return VLC_EGENERIC;
     }
     return VLC_SUCCESS;
diff --git a/modules/video_chroma/d3d9_fmt.c b/modules/video_chroma/d3d9_fmt.c
index 73ad2aa55a..a0a0bb12a5 100644
--- a/modules/video_chroma/d3d9_fmt.c
+++ b/modules/video_chroma/d3d9_fmt.c
@@ -273,6 +273,12 @@ int D3D9CheckDriverVersion(d3d9_handle_t *hd3d, d3d9_device_t *d3d_dev,
     revision     = (int) (identifier.DriverVersion.LowPart  >> 16 & 0xFFFF);
     build        = (int) (identifier.DriverVersion.LowPart  >>  0 & 0xFFFF);
 
+    if (identifier.VendorId == GPU_MANUFACTURER_INTEL && revision >= 100)
+    {
+        /* new Intel driver format */
+        build += (revision - 100) * 1000;
+    }
+
     bool newer =
            wddm > min_ver->wddm ||
           (wddm == min_ver->wddm && (d3d_features > min_ver->d3d_features ||



More information about the vlc-commits mailing list