|
|
|
@ -255,57 +255,3 @@ error: |
|
|
|
D3D9_Destroy( hd3d ); |
|
|
|
return VLC_EGENERIC; |
|
|
|
} |
|
|
|
|
|
|
|
int D3D9CheckDriverVersion(d3d9_handle_t *hd3d, d3d9_device_t *d3d_dev, |
|
|
|
UINT vendorId, const struct wddm_version *min_ver) |
|
|
|
{ |
|
|
|
D3DADAPTER_IDENTIFIER9 identifier; |
|
|
|
HRESULT hr = IDirect3D9_GetAdapterIdentifier(hd3d->obj, d3d_dev->adapterId, 0, &identifier); |
|
|
|
if (FAILED(hr)) |
|
|
|
return VLC_EGENERIC; |
|
|
|
|
|
|
|
if (vendorId && identifier.VendorId != vendorId) |
|
|
|
return VLC_SUCCESS; |
|
|
|
|
|
|
|
int wddm, d3d_features, revision, build; |
|
|
|
wddm = (int) (identifier.DriverVersion.HighPart >> 16 & 0xFFFF); |
|
|
|
d3d_features = (int) (identifier.DriverVersion.HighPart >> 0 & 0xFFFF); |
|
|
|
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; |
|
|
|
} |
|
|
|
|
|
|
|
if (min_ver->wddm) |
|
|
|
{ |
|
|
|
if (wddm > min_ver->wddm) |
|
|
|
return VLC_SUCCESS; |
|
|
|
else if (wddm != min_ver->wddm) |
|
|
|
return VLC_EGENERIC; |
|
|
|
} |
|
|
|
if (min_ver->d3d_features) |
|
|
|
{ |
|
|
|
if (d3d_features > min_ver->d3d_features) |
|
|
|
return VLC_SUCCESS; |
|
|
|
else if (d3d_features != min_ver->d3d_features) |
|
|
|
return VLC_EGENERIC; |
|
|
|
} |
|
|
|
if (min_ver->revision) |
|
|
|
{ |
|
|
|
if (revision > min_ver->revision) |
|
|
|
return VLC_SUCCESS; |
|
|
|
else if (revision != min_ver->revision) |
|
|
|
return VLC_EGENERIC; |
|
|
|
} |
|
|
|
if (min_ver->build) |
|
|
|
{ |
|
|
|
if (build > min_ver->build) |
|
|
|
return VLC_SUCCESS; |
|
|
|
else if (build != min_ver->build) |
|
|
|
return VLC_EGENERIC; |
|
|
|
} |
|
|
|
return VLC_SUCCESS; |
|
|
|
} |
|
|
|
|