Windows: Disable shader draw parameter support on certain Qualcomm GPUs #127148
@ -453,6 +453,27 @@ static void detect_workarounds()
|
||||
}
|
||||
}
|
||||
|
||||
/* Snapdragon X Elite devices currently have a driver bug that results in
|
||||
* eevee rendering a black cube with anything except an emission shader
|
||||
* if shader draw parameters are enabled (#122837) */
|
||||
#if defined(WIN32)
|
||||
long long driverVersion = 0;
|
||||
if (GPU_type_matches(GPU_DEVICE_QUALCOMM, GPU_OS_WIN, GPU_DRIVER_ANY)) {
|
||||
if (BLI_windows_get_directx_driver_version(L"Qualcomm(R) Adreno(TM)", &driverVersion)) {
|
||||
/* Parse out the driver version */
|
||||
WORD ver0 = (driverVersion >> 48) & 0xffff;
|
||||
|
||||
/* X Elite devices have GPU driver version 31, and currently no known release version of the
|
||||
* GPU driver renders the cube correctly. This will be changed when a working driver version
|
||||
* is released to commercial devices to only enable these flags on older drivers. */
|
||||
if (ver0 == 31) {
|
||||
|
||||
GCaps.shader_draw_parameters_support = false;
|
||||
GLContext::shader_draw_parameters_support = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Some Intel drivers have issues with using mips as frame-buffer targets if
|
||||
* GL_TEXTURE_MAX_LEVEL is higher than the target MIP.
|
||||
* Only check at the end after all other workarounds because this uses the drawing code.
|
||||
|
Loading…
Reference in New Issue
Block a user
are there older versions we need to worry about?
No, version 30.x.x.x, which is the current release on 8cx Gen3, doesn't have the issue.
Only public builds of 31.x.x.x (the current release on X Elite devices, the new generation) exhibit the issue. In the future, when we get a fixed version of the driver, I'll expand the check to only enable these flags below that sub-version
There is a similar check in that file (line 153) where I disable older drivers due to a bug, also, which by extension disables older devices.
Allright, fair enough, if driver 32 comes out and it doesn't fix the issue, people are back to black cubes for blender versions that may not get any more maintenance releases,
if (ver0 >= 31) {
be better here, You can always come in back later and add a&& vers < N
to whitelist the newer drivers and disable the workaround on those.I'd rather see people on the workaround longer than needed, than potentially going back to black cubes.
Driver 32 would be with the next generation of chips that aren't due for a few years yet :) the new release for this gen would be a sub-version release, which I was intending on adding later - can swap it to a
>
though, no problem