The following code is broken on AMD's proprietary GLSL compiler: ```glsl uint idx = ...; vec4 values = ...; float some_value = values[idx & 3]; ``` It index the wrong components, to fix this the following pessimized code is emitted when that bug is present: ```glsl uint idx = ...; vec4 values = ...; float some_value; if ((idx & 3) == 0) some_value = values.x; if ((idx & 3) == 1) some_value = values.y; if ((idx & 3) == 2) some_value = values.z; if ((idx & 3) == 3) some_value = values.w; ``` |
||
---|---|---|
.. | ||
gl_buffer_cache.cpp | ||
gl_buffer_cache.h | ||
gl_device.cpp | ||
gl_device.h | ||
gl_global_cache.cpp | ||
gl_global_cache.h | ||
gl_primitive_assembler.cpp | ||
gl_primitive_assembler.h | ||
gl_rasterizer_cache.cpp | ||
gl_rasterizer_cache.h | ||
gl_rasterizer.cpp | ||
gl_rasterizer.h | ||
gl_resource_manager.cpp | ||
gl_resource_manager.h | ||
gl_sampler_cache.cpp | ||
gl_sampler_cache.h | ||
gl_shader_cache.cpp | ||
gl_shader_cache.h | ||
gl_shader_decompiler.cpp | ||
gl_shader_decompiler.h | ||
gl_shader_disk_cache.cpp | ||
gl_shader_disk_cache.h | ||
gl_shader_gen.cpp | ||
gl_shader_gen.h | ||
gl_shader_manager.cpp | ||
gl_shader_manager.h | ||
gl_shader_util.cpp | ||
gl_shader_util.h | ||
gl_state.cpp | ||
gl_state.h | ||
gl_stream_buffer.cpp | ||
gl_stream_buffer.h | ||
maxwell_to_gl.h | ||
renderer_opengl.cpp | ||
renderer_opengl.h | ||
utils.cpp | ||
utils.h |