Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.glsl8
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