Transform feedback primitives written query fix
pixelProgress[cluster].processedPrimitives could have been cleared
between the moment where it has been written and where it is read,
so I added a local variable to prevent this issue.
Change-Id: I495ed5c9e845c276890d6193b2fe4b8208f993d1
Reviewed-on: https://swiftshader-review.googlesource.com/5061
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp
index 71c50e9..feee3d4 100644
--- a/src/Renderer/Renderer.cpp
+++ b/src/Renderer/Renderer.cpp
@@ -905,8 +905,9 @@
DrawData &data = *draw.data;
int primitive = primitiveProgress[unit].firstPrimitive;
int count = primitiveProgress[unit].primitiveCount;
+ int processedPrimitives = primitive + count;
- pixelProgress[cluster].processedPrimitives = primitive + count;
+ pixelProgress[cluster].processedPrimitives = processedPrimitives;
if(pixelProgress[cluster].processedPrimitives >= draw.count)
{
@@ -947,7 +948,7 @@
}
break;
case Query::TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
- atomicAdd((volatile int*)&query->data, pixelProgress[cluster].processedPrimitives);
+ atomicAdd((volatile int*)&query->data, processedPrimitives);
break;
default:
break;