Add check for Qualcomm devices on Windows
Some of these devices are not capable of running >=4.0, due to issues with Mesa's Compute Shaders and their D3D drivers. This PR marks those GPUs as unsupported, and prints info to stdout. A driver update will be available for 8cx Gen3 on the 17th October from here: https://www.qualcomm.com/products/mobile/snapdragon/pcs-and-tablets/snapdragon-8-series-mobile-compute-platforms/snapdragon-8cx-gen-3-compute-platform#Software It will take longer via the standard MS Windows Update channels, as there is certification, testing, etc required, but it is possible to get the drivers, at least. This issue applies even when using emulated x64. If this does not get merged, all WoA devices will break with 4.0, where older ones will just launch a grey screen and crash, and newer ones will open, but scenes will not render correctly in Workbench. These devices work by using Mesa's D3D12 Gallium driver ("GLOn12"), which is why we have to read the DirectX driver version - the version reported by OpenGL is the mesa version, which is independent of the driver (which is the part with the bug). Pull Request: https://projects.blender.org/blender/blender/pulls/113674
This commit is contained in:
committed by
Clément Foucault
parent
051b02ed11
commit
4e69e49e7e
@@ -59,14 +59,14 @@ static PyObject *pygpu_platform_version_get(PyObject * /*self*/)
|
||||
return PyUnicode_FromString(GPU_platform_version());
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(
|
||||
pygpu_platform_device_type_get_doc,
|
||||
".. function:: device_type_get()\n"
|
||||
"\n"
|
||||
" Get GPU device type.\n"
|
||||
"\n"
|
||||
" :return: Device type ('APPLE', 'NVIDIA', 'AMD', 'INTEL', 'SOFTWARE', 'UNKNOWN').\n"
|
||||
" :rtype: str\n");
|
||||
PyDoc_STRVAR(pygpu_platform_device_type_get_doc,
|
||||
".. function:: device_type_get()\n"
|
||||
"\n"
|
||||
" Get GPU device type.\n"
|
||||
"\n"
|
||||
" :return: Device type ('APPLE', 'NVIDIA', 'AMD', 'INTEL', 'SOFTWARE', 'QUALCOMM', "
|
||||
"'UNKNOWN').\n"
|
||||
" :rtype: str\n");
|
||||
static PyObject *pygpu_platform_device_type_get(PyObject * /*self*/)
|
||||
{
|
||||
const char *device;
|
||||
@@ -85,6 +85,10 @@ static PyObject *pygpu_platform_device_type_get(PyObject * /*self*/)
|
||||
else if (GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
device = "SOFTWARE";
|
||||
}
|
||||
/* Right now we can only detect Qualcomm GPUs on Windows, not other OSes */
|
||||
else if (GPU_type_matches(GPU_DEVICE_QUALCOMM, GPU_OS_WIN, GPU_DRIVER_ANY)) {
|
||||
device = "QUALCOMM";
|
||||
}
|
||||
else {
|
||||
device = "UNKNOWN";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user