diff options
Diffstat (limited to 'source/blender/draw/intern/shaders/draw_command_generate_comp.glsl')
-rw-r--r-- | source/blender/draw/intern/shaders/draw_command_generate_comp.glsl | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/draw/intern/shaders/draw_command_generate_comp.glsl b/source/blender/draw/intern/shaders/draw_command_generate_comp.glsl index 5adcb0b441d..e1aeb08410e 100644 --- a/source/blender/draw/intern/shaders/draw_command_generate_comp.glsl +++ b/source/blender/draw/intern/shaders/draw_command_generate_comp.glsl @@ -11,7 +11,7 @@ void write_draw_call(DrawGroup group, uint group_id) { DrawCommand cmd; - cmd.vertex_len = abs(group.vertex_len); + cmd.vertex_len = group.vertex_len; cmd.vertex_first = group.vertex_first; if (group.base_index != -1) { cmd.base_index = group.base_index; @@ -20,11 +20,13 @@ void write_draw_call(DrawGroup group, uint group_id) else { cmd._instance_first_array = group.start; } + /* NOTE: Set instance count to 0 if vertex count is 0 to avoid a crash in some drivers. */ + /* Back-facing command. */ - cmd.instance_len = group_buf[group_id].back_facing_counter; + cmd.instance_len = (cmd.vertex_len == 0) ? 0 : group_buf[group_id].back_facing_counter; command_buf[group_id * 2 + 0] = cmd; /* Front-facing command. */ - cmd.instance_len = group_buf[group_id].front_facing_counter; + cmd.instance_len = (cmd.vertex_len == 0) ? 0 : group_buf[group_id].front_facing_counter; command_buf[group_id * 2 + 1] = cmd; /* Reset the counters for a next command gen dispatch. Avoids resending the whole data just |