diff options
author | mano-wii <germano.costa@ig.com.br> | 2019-09-19 17:17:50 +0300 |
---|---|---|
committer | mano-wii <germano.costa@ig.com.br> | 2019-09-19 17:18:18 +0300 |
commit | d0c772f68b84267e15630064fc21cc54fc7209f0 (patch) | |
tree | cd8bed7fec343ce76a82c26cdf7857973d5281dc /source | |
parent | cb5ed2e5f458190cbea2ba41d00f7fe001ab00a7 (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')
-rw-r--r-- | source/blender/draw/modes/shaders/common_view_lib.glsl | 7 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_shader.c | 3 |
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"); |