GPU: AMD: Remove workaround that doesn't work
This commit is contained in:
parent
f9beb1bef1
commit
77f1f13663
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue