[Bf-blender-cvs] [77f1f13663d] master: GPU: AMD: Remove workaround that doesn't work

mano-wii noreply at git.blender.org
Wed Sep 18 17:34:47 CEST 2019


Commit: 77f1f13663d3dc2207803e08482fef92d92f44c2
Author: mano-wii
Date:   Wed Sep 18 12:33:00 2019 -0300
Branches: master
https://developer.blender.org/rB77f1f13663d3dc2207803e08482fef92d92f44c2

GPU: AMD: Remove workaround that doesn't work

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

M	source/blender/draw/modes/shaders/common_view_lib.glsl
M	source/blender/gpu/intern/gpu_batch.c
M	source/blender/gpu/intern/gpu_shader.c

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

diff --git a/source/blender/draw/modes/shaders/common_view_lib.glsl b/source/blender/draw/modes/shaders/common_view_lib.glsl
index a554db7d4a4..e669eb9d39a 100644
--- a/source/blender/draw/modes/shaders/common_view_lib.glsl
+++ b/source/blender/draw/modes/shaders/common_view_lib.glsl
@@ -36,10 +36,6 @@ uniform int baseInstance;
 #  ifdef IN_PLACE_INSTANCES
 /* When drawing instances of an object at the same position. */
 #    define instanceId 0
-#  elif defined(GPU_CRAPPY_AMD_DRIVER)
-/* NOTE: This does contain the baseInstance ofset */
-in int _instanceId;
-#    define instanceId (_instanceId - baseInstance)
 #  else
 #    define instanceId gl_InstanceID
 #  endif
diff --git a/source/blender/gpu/intern/gpu_batch.c b/source/blender/gpu/intern/gpu_batch.c
index 9c0c001b979..76459d7ad45 100644
--- a/source/blender/gpu/intern/gpu_batch.c
+++ b/source/blender/gpu/intern/gpu_batch.c
@@ -447,34 +447,6 @@ static void create_bindings(GPUVertBuf *verts,
   }
 }
 
-static void instance_id_workaround(GPUBatch *batch)
-{
-  /**
-   * 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. To workaround this,
-   * we create a new vertex attrib containing the expected value of gl_InstanceID.
-   **/
-  const GPUShaderInput *input = GPU_shaderinterface_attr(batch->interface, "_instanceId");
-  if (input) {
-#define DRW_RESOURCE_CHUNK_LEN 512 /* Keep in sync. */
-    static GLint vbo_id = 0;
-    if (vbo_id == 0) {
-      short data[DRW_RESOURCE_CHUNK_LEN];
-      for (int i = 0; i < DRW_RESOURCE_CHUNK_LEN; i++) {
-        data[i] = i;
-      }
-      /* GPU_context takes care of deleting `vbo_id` at the end. */
-      vbo_id = GPU_buf_alloc();
-      glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
-      glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
-    }
-    glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
-    glEnableVertexAttribArray(input->location);
-    glVertexAttribIPointer(input->location, 1, GL_SHORT, 0, NULL);
-    glVertexAttribDivisor(input->location, 1);
-  }
-}
-
 static void batch_update_program_bindings(GPUBatch *batch, uint i_first)
 {
   /* Reverse order so first vbos have more prevalence (in term of attrib override). */
@@ -489,9 +461,6 @@ static void batch_update_program_bindings(GPUBatch *batch, uint i_first)
   if (batch->elem) {
     GPU_indexbuf_use(batch->elem);
   }
-  if (GPU_crappy_amd_driver()) {
-    instance_id_workaround(batch);
-  }
 }
 
 void GPU_batch_program_use_begin(GPUBatch *batch)
diff --git a/source/blender/gpu/intern/gpu_shader.c b/source/blender/gpu/intern/gpu_shader.c
index 7e8cb8a4fa0..f896848648c 100644
--- a/source/blender/gpu/intern/gpu_shader.c
+++ b/source/blender/gpu/intern/gpu_shader.c
@@ -258,9 +258,6 @@ 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_CRAPPY_AMD_DRIVER\n");
-    }
   }
   else if (GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY)) {
     strcat(defines, "#define GPU_NVIDIA\n");



More information about the Bf-blender-cvs mailing list