[Bf-blender-cvs] [d34c5eec19a] master: GPU: Fix Negative Shift

Jeroen Bakker noreply at git.blender.org
Thu Apr 16 16:21:36 CEST 2020


Commit: d34c5eec19ad828237cff0916cc23240d0c25aa1
Author: Jeroen Bakker
Date:   Thu Apr 16 10:39:30 2020 +0200
Branches: master
https://developer.blender.org/rBd34c5eec19ad828237cff0916cc23240d0c25aa1

GPU: Fix Negative Shift

glAttributes also include `gl_` names. These don't have a location and
should be ignored during shader interface creation. Those internal names
received a location of -1 and therefore the bitmasking was undefined.

Users wouldn't notice this, but ASAN warned developers of this situation.
ASAN could quit making ASAN un-usable as most shaders have this issue.

Reviewed By: Clément Foucault`

Differential Revision: https://developer.blender.org/D7448

===================================================================

M	source/blender/gpu/intern/gpu_shader_interface.c

===================================================================

diff --git a/source/blender/gpu/intern/gpu_shader_interface.c b/source/blender/gpu/intern/gpu_shader_interface.c
index cb1cd9a6f6d..db8ec60fa9a 100644
--- a/source/blender/gpu/intern/gpu_shader_interface.c
+++ b/source/blender/gpu/intern/gpu_shader_interface.c
@@ -254,8 +254,11 @@ GPUShaderInterface *GPU_shaderinterface_create(int32_t program)
     }
 
     /* TODO: reject DOUBLE gl_types */
-
     input->location = glGetAttribLocation(program, name);
+    /* Ignore OpenGL names like `gl_BaseInstanceARB`, `gl_InstanceID` and `gl_VertexID`. */
+    if (input->location == -1) {
+      continue;
+    }
 
     shaderface->enabled_attr_mask |= (1 << input->location);



More information about the Bf-blender-cvs mailing list