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:
authormano-wii <germano.costa@ig.com.br>2019-09-19 17:17:50 +0300
committermano-wii <germano.costa@ig.com.br>2019-09-19 17:18:18 +0300
commitd0c772f68b84267e15630064fc21cc54fc7209f0 (patch)
treecd8bed7fec343ce76a82c26cdf7857973d5281dc /source/blender
parentcb5ed2e5f458190cbea2ba41d00f7fe001ab00a7 (diff)
Fix T69853: Object orientation is wrong with some AMD deprecated drivers.
This solution only reuses the performance workaround made for Intel. But the original problem was not solved. Not much we can do to solve it.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/draw/modes/shaders/common_view_lib.glsl7
-rw-r--r--source/blender/gpu/intern/gpu_shader.c3
2 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/draw/modes/shaders/common_view_lib.glsl b/source/blender/draw/modes/shaders/common_view_lib.glsl
index e669eb9d39a..fa4bb4f68c0 100644
--- a/source/blender/draw/modes/shaders/common_view_lib.glsl
+++ b/source/blender/draw/modes/shaders/common_view_lib.glsl
@@ -36,6 +36,11 @@ uniform int baseInstance;
# ifdef IN_PLACE_INSTANCES
/* When drawing instances of an object at the same position. */
# define instanceId 0
+# elif defined(GPU_DEPRECATED_AMD_DRIVER)
+/* A driver bug make it so that when using an attribute with GL_INT_2_10_10_10_REV as format,
+ * the gl_InstanceID is incremented by the 2 bit component of the attrib.
+ * Ignore gl_InstanceID then. */
+# define instanceId 0
# else
# define instanceId gl_InstanceID
# endif
@@ -66,7 +71,7 @@ flat in int resourceIDFrag;
# define resource_id resourceIDFrag
#endif
-#ifndef GPU_INTEL
+#if !defined(GPU_INTEL) && !defined(GPU_DEPRECATED_AMD_DRIVER)
struct ObjectMatrices {
mat4 drw_modelMatrix;
mat4 drw_modelMatrixInverse;
diff --git a/source/blender/gpu/intern/gpu_shader.c b/source/blender/gpu/intern/gpu_shader.c
index f896848648c..015df078228 100644
--- a/source/blender/gpu/intern/gpu_shader.c
+++ b/source/blender/gpu/intern/gpu_shader.c
@@ -258,6 +258,9 @@ static void gpu_shader_standard_defines(char defines[MAX_DEFINE_LENGTH])
/* some useful defines to detect GPU type */
if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_ANY)) {
strcat(defines, "#define GPU_ATI\n");
+ if (GPU_crappy_amd_driver()) {
+ strcat(defines, "#define GPU_DEPRECATED_AMD_DRIVER\n");
+ }
}
else if (GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY)) {
strcat(defines, "#define GPU_NVIDIA\n");