GL_ARB_gpu_shader_fp64, GL_ARB_gpu_shader_fp64: Test in/out variables
The types from these two extensions lacked tests for in/out variables.
Mesa doesn't handle them well at the moment which I'm trying to address in mesa!2332 (closed)
Example of generated test:
[require]
GLSL >= 1.50
GL_ARB_gpu_shader_int64
[vertex shader]
#extension GL_ARB_gpu_shader_int64: require
#extension GL_ARB_shader_bit_encoding: enable
#extension GL_ARB_gpu_shader5: enable
precision highp float;
struct S1 {
float[3] f1;
i64vec3 iv1;
};
flat out S1 s1_1;
in vec4 piglit_vertex;
#if defined(GL_ARB_shader_bit_encoding) || defined(GL_ARB_gpu_shader5) || __VERSION__ >= 430
float float_get(float f, uint bits) { return uintBitsToFloat(bits); }
#else
float float_get(float f, uint bits) { return f; }
#endif
void main()
{
s1_1.f1[0] = float_get(21749.8434577, 0x46a9ebb0u);
s1_1.f1[1] = float_get(21749.8439612, 0x46a9ebb0u);
s1_1.f1[2] = float_get(21749.8444648, 0x46a9ebb0u);
s1_1.iv1.x = 1432970152;
s1_1.iv1.y = 1636374283;
s1_1.iv1.z = 1839778414;
gl_Position = piglit_vertex;
}
[fragment shader]
#extension GL_ARB_gpu_shader_int64: require
#extension GL_ARB_shader_bit_encoding: enable
#extension GL_ARB_gpu_shader5: enable
precision highp float;
struct S1 {
float[3] f1;
i64vec3 iv1;
};
flat in S1 s1_1;
out vec4 piglit_fragcolor;
#if defined(GL_ARB_shader_bit_encoding) || defined(GL_ARB_gpu_shader5) || __VERSION__ >= 430
bool float_match(float u, float f, uint bits) { return floatBitsToUint(u) == bits; }
#else
bool float_match(float u, float f, uint bits) { return u == f; }
#endif
void main()
{
bool pass = true;
if (!float_match(s1_1.f1[0], 21749.8434577, 0x46a9ebb0u))
pass = false;
if (!float_match(s1_1.f1[1], 21749.8439612, 0x46a9ebb0u))
pass = false;
if (!float_match(s1_1.f1[2], 21749.8444648, 0x46a9ebb0u))
pass = false;
if (s1_1.iv1.x != 1432970152)
pass = false;
if (s1_1.iv1.y != 1636374283)
pass = false;
if (s1_1.iv1.z != 1839778414)
pass = false;
piglit_fragcolor = pass ? vec4(0, 1, 0, 1) : vec4(1, 0, 0, 1);
}
[test]
link success
draw rect -1 -1 2 2
probe all rgba 0.0 1.0 0.0 1.0
CC: @tarceri