On 13 January 2012 16:18, Paul Berry <span dir="ltr"><<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I had previously been holding off on this because of concurrency bugs<br>
in the Mesa i965 implementation of transform feedback, but those bugs<br>
have long since been fixed.<br>
<br>
Verified on both the Mesa i965 (Sandy Bridge) and the nVidia<br>
proprietary Linux driver.<br>
---<br>
tests/all.tests | 100 +++++++++++-----------<br>
tests/spec/ext_transform_feedback/interleaved.c | 2 +-<br>
tests/spec/ext_transform_feedback/max-varyings.c | 2 +-<br>
tests/spec/ext_transform_feedback/output-type.c | 2 +-<br>
tests/spec/ext_transform_feedback/position.c | 2 +-<br>
tests/spec/ext_transform_feedback/separate.c | 2 +-<br>
6 files changed, 55 insertions(+), 55 deletions(-)<br>
<br>
diff --git a/tests/all.tests b/tests/all.tests<br>
index 2e5c7a3..5712783 100644<br>
--- a/tests/all.tests<br>
+++ b/tests/all.tests<br>
@@ -1419,8 +1419,8 @@ for mode in ['interleaved_ok_base', 'interleaved_ok_range',<br>
'bind_offset_offset_2', 'bind_offset_offset_3',<br>
'bind_offset_offset_5', 'not_a_program']:<br>
test_name = 'api-errors {0}'.format(mode)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
for varying in ['gl_Color', 'gl_SecondaryColor', 'gl_TexCoord',<br>
'gl_FogFragCoord', 'gl_Position', 'gl_PointSize',<br>
'gl_ClipVertex', 'gl_ClipDistance',<br>
@@ -1433,8 +1433,8 @@ for varying in ['gl_Color', 'gl_SecondaryColor', 'gl_TexCoord',<br>
'gl_ClipDistance[7]-no-subscript',<br>
'gl_ClipDistance[8]-no-subscript']:<br>
test_name = 'builtin-varyings {0}'.format(varying)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
ext_transform_feedback['discard-api'] = concurrent_test('ext_transform_feedback-discard-api')<br>
ext_transform_feedback['discard-bitmap'] = concurrent_test('ext_transform_feedback-discard-bitmap')<br>
ext_transform_feedback['discard-clear'] = concurrent_test('ext_transform_feedback-discard-clear')<br>
@@ -1443,50 +1443,50 @@ ext_transform_feedback['discard-drawarrays'] = concurrent_test('ext_transform_fe<br>
ext_transform_feedback['discard-drawpixels'] = concurrent_test('ext_transform_feedback-discard-drawpixels')<br>
for mode in ['main_binding', 'indexed_binding', 'buffer_start', 'buffer_size']:<br>
test_name = 'get-buffer-state {0}'.format(mode)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
ext_transform_feedback['immediate-reuse'] = concurrent_test('ext_transform_feedback-immediate-reuse')<br>
for mode in ['output', 'prims_generated', 'prims_written']:<br>
test_name = 'intervening-read {0}'.format(mode)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
-ext_transform_feedback['max-varyings'] = PlainExecTest(['ext_transform_feedback-max-varyings', '-auto'])<br>
-ext_transform_feedback['overflow-edge-cases'] = PlainExecTest(['ext_transform_feedback-overflow-edge-cases', '-auto'])<br>
-ext_transform_feedback['position-readback-bufferbase'] = PlainExecTest(['ext_transform_feedback-position', '-auto'])<br>
-ext_transform_feedback['position-readback-bufferbase-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'discard'])<br>
-ext_transform_feedback['position-readback-bufferoffset'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'offset'])<br>
-ext_transform_feedback['position-readback-bufferoffset-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'offset', 'discard'])<br>
-ext_transform_feedback['position-readback-bufferrange'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'range'])<br>
-ext_transform_feedback['position-readback-bufferrange-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'range', 'discard'])<br>
-<br>
-ext_transform_feedback['position-render-bufferbase'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'render'])<br>
-ext_transform_feedback['position-render-bufferbase-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'render', 'discard'])<br>
-ext_transform_feedback['position-render-bufferoffset'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'render', 'offset'])<br>
-ext_transform_feedback['position-render-bufferoffset-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'render', 'offset', 'discard'])<br>
-ext_transform_feedback['position-render-bufferrange'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'render', 'range'])<br>
-ext_transform_feedback['position-render-bufferrange-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'render', 'range', 'discard'])<br>
-<br>
-ext_transform_feedback['query-primitives_generated-bufferbase'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primgen'])<br>
-ext_transform_feedback['query-primitives_generated-bufferbase-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primgen', 'discard'])<br>
-ext_transform_feedback['query-primitives_generated-bufferoffset'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primgen', 'offset'])<br>
-ext_transform_feedback['query-primitives_generated-bufferoffset-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primgen', 'offset', 'discard'])<br>
-ext_transform_feedback['query-primitives_generated-bufferrange'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primgen', 'range'])<br>
-ext_transform_feedback['query-primitives_generated-bufferrange-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primgen', 'range', 'discard'])<br>
-<br>
-ext_transform_feedback['query-primitives_written-bufferbase'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primwritten'])<br>
-ext_transform_feedback['query-primitives_written-bufferbase-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primwritten', 'discard'])<br>
-ext_transform_feedback['query-primitives_written-bufferoffset'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primwritten', 'offset'])<br>
-ext_transform_feedback['query-primitives_written-bufferoffset-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primwritten', 'offset', 'discard'])<br>
-ext_transform_feedback['query-primitives_written-bufferrange'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primwritten', 'range'])<br>
-ext_transform_feedback['query-primitives_written-bufferrange-discard'] = PlainExecTest(['ext_transform_feedback-position', '-auto', 'primwritten', 'range', 'discard'])<br>
-<br>
-ext_transform_feedback['interleaved-attribs'] = PlainExecTest(['ext_transform_feedback-interleaved', '-auto'])<br>
-ext_transform_feedback['separate-attribs'] = PlainExecTest(['ext_transform_feedback-separate', '-auto'])<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
+ext_transform_feedback['max-varyings'] = concurrent_test('ext_transform_feedback-max-varyings')<br>
+ext_transform_feedback['overflow-edge-cases'] = concurrent_test('ext_transform_feedback-overflow-edge-cases')<br>
+ext_transform_feedback['position-readback-bufferbase'] = concurrent_test('ext_transform_feedback-position')<br>
+ext_transform_feedback['position-readback-bufferbase-discard'] = concurrent_test('ext_transform_feedback-position discard')<br>
+ext_transform_feedback['position-readback-bufferoffset'] = concurrent_test('ext_transform_feedback-position offset')<br>
+ext_transform_feedback['position-readback-bufferoffset-discard'] = concurrent_test('ext_transform_feedback-position offset discard')<br>
+ext_transform_feedback['position-readback-bufferrange'] = concurrent_test('ext_transform_feedback-position range')<br>
+ext_transform_feedback['position-readback-bufferrange-discard'] = concurrent_test('ext_transform_feedback-position range discard')<br>
+<br>
+ext_transform_feedback['position-render-bufferbase'] = concurrent_test('ext_transform_feedback-position render')<br>
+ext_transform_feedback['position-render-bufferbase-discard'] = concurrent_test('ext_transform_feedback-position render discard')<br>
+ext_transform_feedback['position-render-bufferoffset'] = concurrent_test('ext_transform_feedback-position render offset')<br>
+ext_transform_feedback['position-render-bufferoffset-discard'] = concurrent_test('ext_transform_feedback-position render offset discard')<br>
+ext_transform_feedback['position-render-bufferrange'] = concurrent_test('ext_transform_feedback-position render range')<br>
+ext_transform_feedback['position-render-bufferrange-discard'] = concurrent_test('ext_transform_feedback-position render range discard')<br>
+<br>
+ext_transform_feedback['query-primitives_generated-bufferbase'] = concurrent_test('ext_transform_feedback-position primgen')<br>
+ext_transform_feedback['query-primitives_generated-bufferbase-discard'] = concurrent_test('ext_transform_feedback-position primgen discard')<br>
+ext_transform_feedback['query-primitives_generated-bufferoffset'] = concurrent_test('ext_transform_feedback-position primgen offset')<br>
+ext_transform_feedback['query-primitives_generated-bufferoffset-discard'] = concurrent_test('ext_transform_feedback-position primgen offset discard')<br>
+ext_transform_feedback['query-primitives_generated-bufferrange'] = concurrent_test('ext_transform_feedback-position primgen range')<br>
+ext_transform_feedback['query-primitives_generated-bufferrange-discard'] = concurrent_test('ext_transform_feedback-position primgen range discard')<br>
+<br>
+ext_transform_feedback['query-primitives_written-bufferbase'] = concurrent_test('ext_transform_feedback-position primwritten')<br>
+ext_transform_feedback['query-primitives_written-bufferbase-discard'] = concurrent_test('ext_transform_feedback-position primwritten discard')<br>
+ext_transform_feedback['query-primitives_written-bufferoffset'] = concurrent_test('ext_transform_feedback-position primwritten offset')<br>
+ext_transform_feedback['query-primitives_written-bufferoffset-discard'] = concurrent_test('ext_transform_feedback-position primwritten offset discard')<br>
+ext_transform_feedback['query-primitives_written-bufferrange'] = concurrent_test('ext_transform_feedback-position primwritten range')<br>
+ext_transform_feedback['query-primitives_written-bufferrange-discard'] = concurrent_test('ext_transform_feedback-position primwritten range discard')<br>
+<br>
+ext_transform_feedback['interleaved-attribs'] = concurrent_test('ext_transform_feedback-interleaved')<br>
+ext_transform_feedback['separate-attribs'] = concurrent_test('ext_transform_feedback-separate')<br>
for drawcall in ['arrays', 'elements']:<br>
for mode in ['triangles', 'lines', 'points']:<br>
test_name = 'order {0} {1}'.format(drawcall, mode)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
for draw_mode in ['points', 'lines', 'line_loop', 'line_strip',<br>
'triangles', 'triangle_strip', 'triangle_fan',<br>
'quads', 'quad_strip', 'polygon']:<br>
@@ -1496,12 +1496,12 @@ for draw_mode in ['points', 'lines', 'line_loop', 'line_strip',<br>
continue<br>
test_name = 'tessellation {0} {1}'.format(<br>
draw_mode, shade_mode)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
for alignment in [0, 4, 8, 12]:<br>
test_name = 'alignment {0}'.format(alignment)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
<br>
for output_type in ['float', 'vec2', 'vec3', 'vec4', 'mat2', 'mat2x3',<br>
'mat2x4', 'mat3x2', 'mat3', 'mat3x4', 'mat4x2', 'mat4x3',<br>
@@ -1509,13 +1509,13 @@ for output_type in ['float', 'vec2', 'vec3', 'vec4', 'mat2', 'mat2x3',<br>
'uvec3', 'uvec4']:<br>
for suffix in ['', '[2]', '[2]-no-subscript']:<br>
test_name = 'output-type {0}{1}'.format(output_type, suffix)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
<br>
for mode in ['discard', 'buffer', 'prims_generated', 'prims_written']:<br>
test_name = 'generatemipmap {0}'.format(mode)<br>
- ext_transform_feedback[test_name] = PlainExecTest(<br>
- 'ext_transform_feedback-{0} -auto -fbo'.format(test_name))<br>
+ ext_transform_feedback[test_name] = concurrent_test(<br>
+ 'ext_transform_feedback-{0}'.format(test_name))<br>
<br>
arb_transform_feedback2 = Group()<br>
spec['ARB_transform_feedback2'] = arb_transform_feedback2<br>
diff --git a/tests/spec/ext_transform_feedback/interleaved.c b/tests/spec/ext_transform_feedback/interleaved.c<br>
index 01c6c82..3f84d36 100644<br>
--- a/tests/spec/ext_transform_feedback/interleaved.c<br>
+++ b/tests/spec/ext_transform_feedback/interleaved.c<br>
@@ -185,7 +185,7 @@ enum piglit_result piglit_display(void)<br>
<br>
assert(glGetError() == 0);<br>
<br>
- glutSwapBuffers();<br>
+ piglit_present_results();<br>
<br>
return pass ? PIGLIT_PASS : PIGLIT_FAIL;<br>
}<br>
diff --git a/tests/spec/ext_transform_feedback/max-varyings.c b/tests/spec/ext_transform_feedback/max-varyings.c<br>
index d2c474a..064cb9f 100644<br>
--- a/tests/spec/ext_transform_feedback/max-varyings.c<br>
+++ b/tests/spec/ext_transform_feedback/max-varyings.c<br>
@@ -277,7 +277,7 @@ piglit_display(void)<br>
}<br>
}<br>
<br>
- glutSwapBuffers();<br>
+ piglit_present_results();<br>
<br>
if (!pass)<br>
return PIGLIT_FAIL;<br>
diff --git a/tests/spec/ext_transform_feedback/output-type.c b/tests/spec/ext_transform_feedback/output-type.c<br>
index 10e7a8b..20a46b0 100644<br>
--- a/tests/spec/ext_transform_feedback/output-type.c<br>
+++ b/tests/spec/ext_transform_feedback/output-type.c<br>
@@ -1349,7 +1349,7 @@ enum piglit_result piglit_display(void)<br>
<br>
assert(glGetError() == 0);<br>
<br>
- glutSwapBuffers();<br>
+ piglit_present_results();<br>
<br>
return pass ? PIGLIT_PASS : PIGLIT_FAIL;<br>
}<br>
diff --git a/tests/spec/ext_transform_feedback/position.c b/tests/spec/ext_transform_feedback/position.c<br>
index 95a5b35..51dfc58 100644<br>
--- a/tests/spec/ext_transform_feedback/position.c<br>
+++ b/tests/spec/ext_transform_feedback/position.c<br>
@@ -278,7 +278,7 @@ enum piglit_result piglit_display(void)<br>
<br>
assert(glGetError() == 0);<br>
<br>
- glutSwapBuffers();<br>
+ piglit_present_results();<br>
<br>
return pass ? PIGLIT_PASS : PIGLIT_FAIL;<br>
}<br>
diff --git a/tests/spec/ext_transform_feedback/separate.c b/tests/spec/ext_transform_feedback/separate.c<br>
index 666e9be..da5beba 100644<br>
--- a/tests/spec/ext_transform_feedback/separate.c<br>
+++ b/tests/spec/ext_transform_feedback/separate.c<br>
@@ -169,7 +169,7 @@ enum piglit_result piglit_display(void)<br>
<br>
assert(glGetError() == 0);<br>
<br>
- glutSwapBuffers();<br>
+ piglit_present_results();<br>
<br>
return pass ? PIGLIT_PASS : PIGLIT_FAIL;<br>
}<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.7.6.5<br>
<br>
</font></span></blockquote></div><br>Any comments on this? I'd like to push it today.<br>