From 77f1f13663d3dc2207803e08482fef92d92f44c2 Mon Sep 17 00:00:00 2001 From: mano-wii Date: Wed, 18 Sep 2019 12:33:00 -0300 Subject: GPU: AMD: Remove workaround that doesn't work --- .../draw/modes/shaders/common_view_lib.glsl | 4 --- source/blender/gpu/intern/gpu_batch.c | 31 ---------------------- source/blender/gpu/intern/gpu_shader.c | 3 --- 3 files changed, 38 deletions(-) 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"); -- cgit v1.2.3