[Resend without the giant attachment that made the list angry.] On 09/09/2014 11:19 AM, Ian Romanick wrote: > On 09/08/2014 09:58 PM, Tapani Pälli wrote: >> Hi Ian; >> >> I was planning to have a 'custom' layout-std140 test with some doubles >> included. I think I will instead copy-paste this one and add doubles in >> to the mix. Is there any way I could introduce "optional content" in to >> this test when extension is present or should I rather make a copy of >> the whole test? > > I only included this test because it came directly from the specification. > > I don't think we'll need any hand written tests for fp64. :) I've > attached a sample test from the fully random test generator. I think by > using the "directed" mode we'll be able to generate all the tests we'll > need.
http://people.freedesktop.org/~idr/test.shader_test > Note: I haven't tested any of the fp64 support yet, so that test may be > completely bogus. > >> (I have some ubo fixes for double in my "fp64_fixes" Mesa tree but not >> yet tested) >> >> Thanks; >> >> // Tapani >> >> >> On 09/09/2014 12:34 AM, Ian Romanick wrote: >>> From: Ian Romanick <ian.d.roman...@intel.com> >>> >>> This comes almost verbatim from the ARB_uniform_buffer_object spec. >>> It's also mostly redundant with the layout-std140 test... which will be >>> removed soon. >>> >>> This test passes on NVIDIA's closed source driver (version 331.89 on >>> GTX260) >>> >>> Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> >>> --- >>> .../example_from_spec.shader_test | 218 >>> +++++++++++++++++++++ >>> 1 file changed, 218 insertions(+) >>> create mode 100644 >>> tests/spec/arb_uniform_buffer_object/example_from_spec.shader_test >>> >>> diff --git >>> a/tests/spec/arb_uniform_buffer_object/example_from_spec.shader_test >>> b/tests/spec/arb_uniform_buffer_object/example_from_spec.shader_test >>> new file mode 100644 >>> index 0000000..b14b6a1 >>> --- /dev/null >>> +++ b/tests/spec/arb_uniform_buffer_object/example_from_spec.shader_test >>> @@ -0,0 +1,218 @@ >>> +[require] >>> +GLSL >= 1.30 >>> +GL_ARB_uniform_buffer_object >>> + >>> +[vertex shader] >>> +#extension GL_ARB_uniform_buffer_object : require >>> + >>> +struct f_struct { >>> + int d; >>> + bvec2 e; >>> +}; >>> + >>> +struct o_struct { >>> + uvec3 j; >>> + vec2 k; >>> + float l[2]; >>> + vec2 m; >>> + mat3 n[2]; >>> +}; >>> + >>> +layout(std140) uniform Example { >>> + // Base types below consume 4 basic machine units >>> + // >>> + // base base align >>> + // rule align off. off. bytes used >>> + // ---- ------ ---- ---- ----------------------- >>> + float a; // 1 4 0 0 0..3 >>> + vec2 b; // 2 8 4 8 8..15 >>> + vec3 c; // 3 16 16 16 16..27 >>> + f_struct // 9 16 28 32 (align begin) >>> +// int d; // 1 4 32 32 32..35 >>> +// bvec2 e; // 2 8 36 40 40..47 >>> + f; // 9 16 48 48 (pad end) >>> + float g; // 1 4 48 48 48..51 >>> + float h[2]; // 4 16 52 64 64..67 (h[0]) >>> + // 80 80..83 (h[1]) >>> + // 4 16 84 96 (pad end of h) >>> + mat2x3 i; // 5/4 16 96 96 96..107 (i, column 0) >>> + // 112 112..123 (i, column 1) >>> + // 5/4 16 124 128 (pad end of i) >>> + o_struct // 10 16 128 128 (align begin) >>> +// uvec3 j; // 3 16 128 128 128..139 (o[0].j) >>> +// vec2 k; // 2 8 140 144 144..151 (o[0].k) >>> +// float l[2]; // 4 16 152 160 160..163 (o[0].l[0]) >>> + // 176 176..179 (o[0].l[1]) >>> + // 4 16 180 192 (pad end of o[0].l) >>> +// vec2 m; // 2 8 192 192 192..199 (o[0].m) >>> +// mat3 n[2]; // 6/4 16 200 208 208..219 (o[0].n[0], column 0) >>> + // 224 224..235 (o[0].n[0], column 1) >>> + // 240 240..251 (o[0].n[0], column 2) >>> + // 256 256..267 (o[0].n[1], column 0) >>> + // 272 272..283 (o[0].n[1], column 1) >>> + // 288 288..299 (o[0].n[1], column 2) >>> + // 6/4 16 300 304 (pad end of o[0].n) >>> + // 9 16 304 304 (pad end of o[0]) >>> + // 3 16 304 304 304..315 (o[1].j) >>> + // 2 8 316 320 320..327 (o[1].k) >>> + // 4 16 328 336 336..347 (o[1].l[0]) >>> + // 352 352..355 (o[1].l[1]) >>> + // 4 16 356 368 (pad end of o[1].l) >>> + // 2 8 368 368 368..375 (o[1].m) >>> + // 6/4 16 376 384 384..395 (o[1].n[0], column 0) >>> + // 400 400..411 (o[1].n[0], column 1) >>> + // 416 416..427 (o[1].n[0], column 2) >>> + // 432 432..443 (o[1].n[1], column 0) >>> + // 448 448..459 (o[1].n[1], column 1) >>> + // 464 464..475 (o[1].n[1], column 2) >>> + // 6/4 16 476 480 (pad end of o[1].n) >>> + // 9 16 480 480 (pad end of o[1]) >>> + o[2]; >>> +}; >>> + >>> +void main() >>> +{ >>> + /* std140 (or shared) layout prevents any fields or blocks from being >>> + * eliminted. Section 2.11.6 of the OpenGL ES 3.0 spec makes this >>> + * explicit, but desktop GL specs only say it implicitly. Either way, >>> + * there is no need to reference any field of the std140 block. >>> + */ >>> + gl_Position = vec4(0); >>> +} >>> + >>> +[fragment shader] >>> +out vec4 piglit_fragcolor; >>> + >>> +void main() >>> +{ >>> + piglit_fragcolor = vec4(0); >>> +} >>> + >>> +[test] >>> +link success >>> + >>> +active uniform a GL_UNIFORM_TYPE GL_FLOAT >>> +active uniform a GL_UNIFORM_SIZE 1 >>> +active uniform a GL_UNIFORM_OFFSET 0 >>> +active uniform a GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform a GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform a GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform b GL_UNIFORM_TYPE GL_FLOAT_VEC2 >>> +active uniform b GL_UNIFORM_SIZE 1 >>> +active uniform b GL_UNIFORM_OFFSET 8 >>> +active uniform b GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform b GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform b GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform c GL_UNIFORM_TYPE GL_FLOAT_VEC3 >>> +active uniform c GL_UNIFORM_SIZE 1 >>> +active uniform c GL_UNIFORM_OFFSET 16 >>> +active uniform c GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform c GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform c GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform f.d GL_UNIFORM_TYPE GL_INT >>> +active uniform f.d GL_UNIFORM_SIZE 1 >>> +active uniform f.d GL_UNIFORM_OFFSET 32 >>> +active uniform f.d GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform f.d GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform f.d GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform f.e GL_UNIFORM_TYPE GL_BOOL_VEC2 >>> +active uniform f.e GL_UNIFORM_SIZE 1 >>> +active uniform f.e GL_UNIFORM_OFFSET 40 >>> +active uniform f.e GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform f.e GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform f.e GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform g GL_UNIFORM_TYPE GL_FLOAT >>> +active uniform g GL_UNIFORM_SIZE 1 >>> +active uniform g GL_UNIFORM_OFFSET 48 >>> +active uniform g GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform g GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform g GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform h[0] GL_UNIFORM_TYPE GL_FLOAT >>> +active uniform h[0] GL_UNIFORM_SIZE 2 >>> +active uniform h[0] GL_UNIFORM_OFFSET 64 >>> +active uniform h[0] GL_UNIFORM_ARRAY_STRIDE 16 >>> +active uniform h[0] GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform h[0] GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform i GL_UNIFORM_TYPE GL_FLOAT_MAT2x3 >>> +active uniform i GL_UNIFORM_SIZE 1 >>> +active uniform i GL_UNIFORM_OFFSET 96 >>> +active uniform i GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform i GL_UNIFORM_MATRIX_STRIDE 16 >>> +active uniform i GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[0].j GL_UNIFORM_TYPE GL_UNSIGNED_INT_VEC3 >>> +active uniform o[0].j GL_UNIFORM_SIZE 1 >>> +active uniform o[0].j GL_UNIFORM_OFFSET 128 >>> +active uniform o[0].j GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform o[0].j GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[0].j GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[0].k GL_UNIFORM_TYPE GL_FLOAT_VEC2 >>> +active uniform o[0].k GL_UNIFORM_SIZE 1 >>> +active uniform o[0].k GL_UNIFORM_OFFSET 144 >>> +active uniform o[0].k GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform o[0].k GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[0].k GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[0].l[0] GL_UNIFORM_TYPE GL_FLOAT >>> +active uniform o[0].l[0] GL_UNIFORM_SIZE 2 >>> +active uniform o[0].l[0] GL_UNIFORM_OFFSET 160 >>> +active uniform o[0].l[0] GL_UNIFORM_ARRAY_STRIDE 16 >>> +active uniform o[0].l[0] GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[0].l[0] GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[0].m GL_UNIFORM_TYPE GL_FLOAT_VEC2 >>> +active uniform o[0].m GL_UNIFORM_SIZE 1 >>> +active uniform o[0].m GL_UNIFORM_OFFSET 192 >>> +active uniform o[0].m GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform o[0].m GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[0].m GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[0].n[0] GL_UNIFORM_TYPE GL_FLOAT_MAT3 >>> +active uniform o[0].n[0] GL_UNIFORM_SIZE 2 >>> +active uniform o[0].n[0] GL_UNIFORM_OFFSET 208 >>> +active uniform o[0].n[0] GL_UNIFORM_ARRAY_STRIDE 48 >>> +active uniform o[0].n[0] GL_UNIFORM_MATRIX_STRIDE 16 >>> +active uniform o[0].n[0] GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[1].j GL_UNIFORM_TYPE GL_UNSIGNED_INT_VEC3 >>> +active uniform o[1].j GL_UNIFORM_SIZE 1 >>> +active uniform o[1].j GL_UNIFORM_OFFSET 304 >>> +active uniform o[1].j GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform o[1].j GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[1].j GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[1].k GL_UNIFORM_TYPE GL_FLOAT_VEC2 >>> +active uniform o[1].k GL_UNIFORM_SIZE 1 >>> +active uniform o[1].k GL_UNIFORM_OFFSET 320 >>> +active uniform o[1].k GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform o[1].k GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[1].k GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[1].l[0] GL_UNIFORM_TYPE GL_FLOAT >>> +active uniform o[1].l[0] GL_UNIFORM_SIZE 2 >>> +active uniform o[1].l[0] GL_UNIFORM_OFFSET 336 >>> +active uniform o[1].l[0] GL_UNIFORM_ARRAY_STRIDE 16 >>> +active uniform o[1].l[0] GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[1].l[0] GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[1].m GL_UNIFORM_TYPE GL_FLOAT_VEC2 >>> +active uniform o[1].m GL_UNIFORM_SIZE 1 >>> +active uniform o[1].m GL_UNIFORM_OFFSET 368 >>> +active uniform o[1].m GL_UNIFORM_ARRAY_STRIDE 0 >>> +active uniform o[1].m GL_UNIFORM_MATRIX_STRIDE 0 >>> +active uniform o[1].m GL_UNIFORM_IS_ROW_MAJOR 0 >>> + >>> +active uniform o[1].n[0] GL_UNIFORM_TYPE GL_FLOAT_MAT3 >>> +active uniform o[1].n[0] GL_UNIFORM_SIZE 2 >>> +active uniform o[1].n[0] GL_UNIFORM_OFFSET 384 >>> +active uniform o[1].n[0] GL_UNIFORM_ARRAY_STRIDE 48 >>> +active uniform o[1].n[0] GL_UNIFORM_MATRIX_STRIDE 16 >>> +active uniform o[1].n[0] GL_UNIFORM_IS_ROW_MAJOR 0 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit