Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2020-12-09 14:14:44 +0300
committerJeroen Bakker <jeroen@blender.org>2020-12-09 14:15:15 +0300
commitbaf84ecbe4910d91a7e1586f207c575992f582a5 (patch)
treed400f5927e8ae36dbd0f4166dd9f277d10938a27 /source/blender/gpu
parent1a959e9fa8c45a6cf43b4e350b1f2707ea3ac063 (diff)
Workaround for Access Violation startup crash on deprecated Radeon GPUs on Windows
This is a workaround for T80804. There's a startup crash that happens on 2.91.0 on Windows, an `EXCEPTION_ACCESS_VIOLATION` on `atio6axx.dll`. It is triggered by `glClear` on the `detect_mip_render_workaround` function. The workaround moves the function after the device/driver workaround section and sets the flag to the affected one to avoid running the check. It is deprecated hardware that has not meet the minimum requirements since 2.79, but is still usable and this extends its usability a bit before the cards are finally blacklisted. Reviewed By: Jeroen Bakker Differential Revision: https://developer.blender.org/D9667
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/opengl/gl_backend.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/source/blender/gpu/opengl/gl_backend.cc b/source/blender/gpu/opengl/gl_backend.cc
index 26ec85ec872..08ad2343ba3 100644
--- a/source/blender/gpu/opengl/gl_backend.cc
+++ b/source/blender/gpu/opengl/gl_backend.cc
@@ -247,10 +247,6 @@ static void detect_workarounds()
return;
}
- /* Some Intel drivers have issues with using mips as framebuffer 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. */
- GCaps.mip_render_workaround = detect_mip_render_workaround();
/* Limit support for GLEW_ARB_base_instance to OpenGL 4.0 and higher. NVIDIA Quadro FX 4800
* (TeraScale) report that they support GLEW_ARB_base_instance, but the driver does not support
* GLEW_ARB_draw_indirect as it has an OpenGL3 context what also matches the minimum needed
@@ -271,6 +267,7 @@ static void detect_workarounds()
(strstr(version, "4.5.13399") || strstr(version, "4.5.13417") ||
strstr(version, "4.5.13422"))) {
GLContext::unused_fb_slot_workaround = true;
+ GCaps.mip_render_workaround = true;
GCaps.shader_image_load_store_support = false;
GCaps.broken_amd_driver = true;
}
@@ -362,6 +359,13 @@ static void detect_workarounds()
}
}
+ /* Some Intel drivers have issues with using mips as framebuffer 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.
+ * Also after device/driver flags to avoid the check that causes pre GCN Radeon to crash. */
+ if (GCaps.mip_render_workaround == false) {
+ GCaps.mip_render_workaround = detect_mip_render_workaround();
+ }
/* Disable multidraw if the base instance cannot be read. */
if (GLContext::shader_draw_parameters_support == false) {
GLContext::multi_draw_indirect_support = false;