This extension adds the following new variants: - shadow sampler support - rectangle sampler support - nonconstant texture offsets - constant component select parameter - independent offsets per texel support
Signed-off-by: Chris Forbes <[email protected]> --- tests/all.tests | 2 + .../fs-gather-comp-float-samplers.frag | 28 ++++++++ .../fs-gather-comp-int-samplers.frag | 28 ++++++++ .../fs-gather-comp-uint-samplers.frag | 28 ++++++++ .../fs-gather-float-samplers.frag | 28 ++++++++ .../builtin-functions/fs-gather-int-samplers.frag | 28 ++++++++ .../fs-gather-shadow-samplers.frag | 30 +++++++++ .../builtin-functions/fs-gather-uint-samplers.frag | 28 ++++++++ .../fs-gatherOffset-comp-float-samplers.frag | 25 ++++++++ .../fs-gatherOffset-comp-int-samplers.frag | 25 ++++++++ .../fs-gatherOffset-comp-uint-samplers.frag | 25 ++++++++ .../fs-gatherOffset-float-samplers.frag | 25 ++++++++ .../fs-gatherOffset-int-samplers.frag | 25 ++++++++ .../fs-gatherOffset-shadow-samplers.frag | 26 ++++++++ .../fs-gatherOffset-uint-samplers.frag | 25 ++++++++ .../fs-gatherOffset-uniform-offset.frag | 21 ++++++ .../builtin-functions/fs-gatherOffsets.frag | 75 ++++++++++++++++++++++ .../vs-gather-comp-float-samplers.vert | 28 ++++++++ .../vs-gather-comp-int-samplers.vert | 28 ++++++++ .../vs-gather-comp-must-be-constexpr.vert | 18 ++++++ .../vs-gather-comp-uint-samplers.vert | 28 ++++++++ .../vs-gather-float-samplers.vert | 28 ++++++++ .../builtin-functions/vs-gather-int-samplers.vert | 28 ++++++++ .../vs-gather-offsets-must-be-constexpr.vert | 16 +++++ .../vs-gather-shadow-samplers.vert | 30 +++++++++ .../builtin-functions/vs-gather-uint-samplers.vert | 28 ++++++++ .../vs-gatherOffset-comp-float-samplers.vert | 25 ++++++++ .../vs-gatherOffset-comp-int-samplers.vert | 25 ++++++++ .../vs-gatherOffset-comp-uint-samplers.vert | 25 ++++++++ .../vs-gatherOffset-float-samplers.vert | 25 ++++++++ .../vs-gatherOffset-int-samplers.vert | 25 ++++++++ .../vs-gatherOffset-shadow-samplers.vert | 26 ++++++++ .../vs-gatherOffset-uint-samplers.vert | 25 ++++++++ .../vs-gatherOffset-uniform-offset.vert | 21 ++++++ .../builtin-functions/vs-gatherOffsets.vert | 75 ++++++++++++++++++++++ 35 files changed, 976 insertions(+) create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-float-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-int-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-uint-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-float-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-int-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-shadow-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-uint-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-float-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-int-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-uint-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-float-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-int-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-shadow-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uint-samplers.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uniform-offset.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffsets.frag create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-float-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-int-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-must-be-constexpr.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-uint-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-float-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-int-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-offsets-must-be-constexpr.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-shadow-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-uint-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-float-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-int-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-uint-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-float-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-int-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-shadow-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uint-samplers.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uniform-offset.vert create mode 100644 tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffsets.vert diff --git a/tests/all.tests b/tests/all.tests index 5343c2b..2363cae 100644 --- a/tests/all.tests +++ b/tests/all.tests @@ -1311,6 +1311,8 @@ spec['ARB_gpu_shader5'] = arb_gpu_shader5 add_shader_test_dir(arb_gpu_shader5, testsDir + '/spec/arb_gpu_shader5', recursive=True) +import_glsl_parser_tests(arb_gpu_shader5, + testsDir + '/spec/arb_gpu_shader5', ['']) arb_texture_query_levels = Group() spec['ARB_texture_query_levels'] = arb_texture_query_levels diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-float-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-float-samplers.frag new file mode 100644 index 0000000..6c679f3 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-float-samplers.frag @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform samplerCube sCube; +uniform samplerCubeArray sCubeArray; +uniform sampler2DRect s2DRect; + +void main() +{ + vec4 res = vec4(0); + + res += textureGather(s2D, vec2(0), 0); + res += textureGather(s2DArray, vec3(0), 1); + res += textureGather(sCube, vec3(0), 2); + res += textureGather(sCubeArray, vec4(0), 3); + res += textureGather(s2DRect, vec2(0), 0); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-int-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-int-samplers.frag new file mode 100644 index 0000000..b7683a6 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-int-samplers.frag @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isamplerCube sCube; +uniform isamplerCubeArray sCubeArray; +uniform isampler2DRect s2DRect; + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGather(s2D, vec2(0), 0); + res += textureGather(s2DArray, vec3(0), 1); + res += textureGather(sCube, vec3(0), 2); + res += textureGather(sCubeArray, vec4(0), 3); + res += textureGather(s2DRect, vec2(0), 0); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-uint-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-uint-samplers.frag new file mode 100644 index 0000000..c5958e5 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-comp-uint-samplers.frag @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usamplerCube sCube; +uniform usamplerCubeArray sCubeArray; +uniform usampler2DRect s2DRect; + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGather(s2D, vec2(0), 0); + res += textureGather(s2DArray, vec3(0), 1); + res += textureGather(sCube, vec3(0), 2); + res += textureGather(sCubeArray, vec4(0), 3); + res += textureGather(s2DRect, vec2(0), 0); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-float-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-float-samplers.frag new file mode 100644 index 0000000..e9576c8 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-float-samplers.frag @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform samplerCube sCube; +uniform samplerCubeArray sCubeArray; +uniform sampler2DRect s2DRect; + +void main() +{ + vec4 res = vec4(0); + + res += textureGather(s2D, vec2(0)); + res += textureGather(s2DArray, vec3(0)); + res += textureGather(sCube, vec3(0)); + res += textureGather(sCubeArray, vec4(0)); + res += textureGather(s2DRect, vec2(0)); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-int-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-int-samplers.frag new file mode 100644 index 0000000..33380ad --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-int-samplers.frag @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isamplerCube sCube; +uniform isamplerCubeArray sCubeArray; +uniform isampler2DRect s2DRect; + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGather(s2D, vec2(0)); + res += textureGather(s2DArray, vec3(0)); + res += textureGather(sCube, vec3(0)); + res += textureGather(sCubeArray, vec4(0)); + res += textureGather(s2DRect, vec2(0)); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-shadow-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-shadow-samplers.frag new file mode 100644 index 0000000..5b820a1 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-shadow-samplers.frag @@ -0,0 +1,30 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform sampler2DShadow s2D; +uniform sampler2DArrayShadow s2DArray; +uniform samplerCubeShadow sCube; +uniform samplerCubeArrayShadow sCubeArray; +uniform sampler2DRectShadow s2DRect; + +void main() +{ + vec4 res = vec4(0); + + float refz = 0.5; + + res += textureGather(s2D, vec2(0), refz); + res += textureGather(s2DArray, vec3(0), refz); + res += textureGather(sCube, vec3(0), refz); + res += textureGather(sCubeArray, vec4(0), refz); + res += textureGather(s2DRect, vec2(0), refz); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-uint-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-uint-samplers.frag new file mode 100644 index 0000000..b5567b2 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gather-uint-samplers.frag @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usamplerCube sCube; +uniform usamplerCubeArray sCubeArray; +uniform usampler2DRect s2DRect; + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGather(s2D, vec2(0)); + res += textureGather(s2DArray, vec3(0)); + res += textureGather(sCube, vec3(0)); + res += textureGather(sCubeArray, vec4(0)); + res += textureGather(s2DRect, vec2(0)); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-float-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-float-samplers.frag new file mode 100644 index 0000000..c49bedc --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-float-samplers.frag @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform sampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + vec4 res = vec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset, 0); + res += textureGatherOffset(s2DArray, vec3(0), offset, 1); + res += textureGatherOffset(s2DRect, vec2(0), offset, 2); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-int-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-int-samplers.frag new file mode 100644 index 0000000..d914150 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-int-samplers.frag @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset, 0); + res += textureGatherOffset(s2DArray, vec3(0), offset, 1); + res += textureGatherOffset(s2DRect, vec2(0), offset, 2); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-uint-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-uint-samplers.frag new file mode 100644 index 0000000..daceb3a --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-comp-uint-samplers.frag @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset, 0); + res += textureGatherOffset(s2DArray, vec3(0), offset, 1); + res += textureGatherOffset(s2DRect, vec2(0), offset, 2); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-float-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-float-samplers.frag new file mode 100644 index 0000000..658ec66 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-float-samplers.frag @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform sampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + vec4 res = vec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + res += textureGatherOffset(s2DArray, vec3(0), offset); + res += textureGatherOffset(s2DRect, vec2(0), offset); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-int-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-int-samplers.frag new file mode 100644 index 0000000..9f0d00c --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-int-samplers.frag @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + res += textureGatherOffset(s2DArray, vec3(0), offset); + res += textureGatherOffset(s2DRect, vec2(0), offset); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-shadow-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-shadow-samplers.frag new file mode 100644 index 0000000..de88335 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-shadow-samplers.frag @@ -0,0 +1,26 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2DShadow s2D; +uniform sampler2DArrayShadow s2DArray; +uniform sampler2DRectShadow s2DRect; + +void main() +{ + vec4 res = vec4(0); + + float refz = 0.5; + ivec2 offset = ivec2(-8, 7); + + res += textureGatherOffset(s2D, vec2(0), refz, offset); + res += textureGatherOffset(s2DArray, vec3(0), refz, offset); + res += textureGatherOffset(s2DRect, vec2(0), refz, offset); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uint-samplers.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uint-samplers.frag new file mode 100644 index 0000000..46c0f83 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uint-samplers.frag @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + res += textureGatherOffset(s2DArray, vec3(0), offset); + res += textureGatherOffset(s2DRect, vec2(0), offset); + + gl_FragColor = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uniform-offset.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uniform-offset.frag new file mode 100644 index 0000000..3747d1d --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uniform-offset.frag @@ -0,0 +1,21 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform ivec2 offset; /* ARB_gpu_shader5 allows this to be uniform + rather than constexpr */ + +void main() +{ + vec4 res = vec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffsets.frag b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffsets.frag new file mode 100644 index 0000000..f5b1c97 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffsets.frag @@ -0,0 +1,75 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform sampler2DRect s2DRect; + +uniform isampler2D is2D; +uniform isampler2DArray is2DArray; +uniform isampler2DRect is2DRect; + +uniform usampler2D us2D; +uniform usampler2DArray us2DArray; +uniform usampler2DRect us2DRect; + +uniform sampler2DShadow ss2D; +uniform sampler2DArrayShadow ss2DArray; +uniform sampler2DRectShadow ss2DRect; + +const ivec2[] offsets = ivec2[]( + ivec2(-8, 7), + ivec2(-8, -8), + ivec2(7, -8), + ivec2(7, 7) +); + +const float refz = 0.5; + +void main() +{ + vec4 res = vec4(0); + + /* float samplers, no component select */ + res += textureGatherOffsets(s2D, vec2(0), offsets); + res += textureGatherOffsets(s2DArray, vec3(0), offsets); + res += textureGatherOffsets(s2DRect, vec2(0), offsets); + + /* float samplers, component select */ + res += textureGatherOffsets(s2D, vec2(0), offsets, 0); + res += textureGatherOffsets(s2DArray, vec3(0), offsets, 1); + res += textureGatherOffsets(s2DRect, vec2(0), offsets, 2); + + /* int samplers, no component select */ + res += textureGatherOffsets(is2D, vec2(0), offsets); + res += textureGatherOffsets(is2DArray, vec3(0), offsets); + res += textureGatherOffsets(is2DRect, vec2(0), offsets); + + /* int samplers, component select */ + res += textureGatherOffsets(is2D, vec2(0), offsets, 0); + res += textureGatherOffsets(is2DArray, vec3(0), offsets, 1); + res += textureGatherOffsets(is2DRect, vec2(0), offsets, 2); + + /* uint samplers, no component select */ + res += textureGatherOffsets(us2D, vec2(0), offsets); + res += textureGatherOffsets(us2DArray, vec3(0), offsets); + res += textureGatherOffsets(us2DRect, vec2(0), offsets); + + /* uint samplers, component select */ + res += textureGatherOffsets(us2D, vec2(0), offsets, 0); + res += textureGatherOffsets(us2DArray, vec3(0), offsets, 1); + res += textureGatherOffsets(us2DRect, vec2(0), offsets, 2); + + /* shadow samplers, no component select (none available) */ + res += textureGatherOffsets(ss2D, vec2(0), refz, offsets); + res += textureGatherOffsets(ss2DArray, vec3(0), refz, offsets); + res += textureGatherOffsets(ss2DRect, vec2(0), refz, offsets); + + gl_FragColor = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-float-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-float-samplers.vert new file mode 100644 index 0000000..1174175 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-float-samplers.vert @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform samplerCube sCube; +uniform samplerCubeArray sCubeArray; +uniform sampler2DRect s2DRect; + +void main() +{ + vec4 res = vec4(0); + + res += textureGather(s2D, vec2(0), 0); + res += textureGather(s2DArray, vec3(0), 1); + res += textureGather(sCube, vec3(0), 2); + res += textureGather(sCubeArray, vec4(0), 3); + res += textureGather(s2DRect, vec2(0), 0); + + gl_Position = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-int-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-int-samplers.vert new file mode 100644 index 0000000..3f6647f --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-int-samplers.vert @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isamplerCube sCube; +uniform isamplerCubeArray sCubeArray; +uniform isampler2DRect s2DRect; + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGather(s2D, vec2(0), 0); + res += textureGather(s2DArray, vec3(0), 1); + res += textureGather(sCube, vec3(0), 2); + res += textureGather(sCubeArray, vec4(0), 3); + res += textureGather(s2DRect, vec2(0), 0); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-must-be-constexpr.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-must-be-constexpr.vert new file mode 100644 index 0000000..1dc13d7 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-must-be-constexpr.vert @@ -0,0 +1,18 @@ +// [config] +// expect_result: fail +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform sampler2D s2D; + +in int component_select; /* not a const expr! */ + +void main() +{ + gl_Position = textureGather(s2D, vec2(0), component_select); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-uint-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-uint-samplers.vert new file mode 100644 index 0000000..4ecde23 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-comp-uint-samplers.vert @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usamplerCube sCube; +uniform usamplerCubeArray sCubeArray; +uniform usampler2DRect s2DRect; + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGather(s2D, vec2(0), 0); + res += textureGather(s2DArray, vec3(0), 1); + res += textureGather(sCube, vec3(0), 2); + res += textureGather(sCubeArray, vec4(0), 3); + res += textureGather(s2DRect, vec2(0), 0); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-float-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-float-samplers.vert new file mode 100644 index 0000000..94e100e --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-float-samplers.vert @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform samplerCube sCube; +uniform samplerCubeArray sCubeArray; +uniform sampler2DRect s2DRect; + +void main() +{ + vec4 res = vec4(0); + + res += textureGather(s2D, vec2(0)); + res += textureGather(s2DArray, vec3(0)); + res += textureGather(sCube, vec3(0)); + res += textureGather(sCubeArray, vec4(0)); + res += textureGather(s2DRect, vec2(0)); + + gl_Position = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-int-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-int-samplers.vert new file mode 100644 index 0000000..335e609 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-int-samplers.vert @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isamplerCube sCube; +uniform isamplerCubeArray sCubeArray; +uniform isampler2DRect s2DRect; + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGather(s2D, vec2(0)); + res += textureGather(s2DArray, vec3(0)); + res += textureGather(sCube, vec3(0)); + res += textureGather(sCubeArray, vec4(0)); + res += textureGather(s2DRect, vec2(0)); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-offsets-must-be-constexpr.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-offsets-must-be-constexpr.vert new file mode 100644 index 0000000..b00a20b --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-offsets-must-be-constexpr.vert @@ -0,0 +1,16 @@ +// [config] +// expect_result: fail +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform ivec2[4] offsets; + +void main() +{ + gl_Position = textureGatherOffsets(s2D, vec2(0), offsets); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-shadow-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-shadow-samplers.vert new file mode 100644 index 0000000..d37b16c --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-shadow-samplers.vert @@ -0,0 +1,30 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform sampler2DShadow s2D; +uniform sampler2DArrayShadow s2DArray; +uniform samplerCubeShadow sCube; +uniform samplerCubeArrayShadow sCubeArray; +uniform sampler2DRectShadow s2DRect; + +void main() +{ + vec4 res = vec4(0); + + float refz = 0.5; + + res += textureGather(s2D, vec2(0), refz); + res += textureGather(s2DArray, vec3(0), refz); + res += textureGather(sCube, vec3(0), refz); + res += textureGather(sCubeArray, vec4(0), refz); + res += textureGather(s2DRect, vec2(0), refz); + + gl_Position = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-uint-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-uint-samplers.vert new file mode 100644 index 0000000..5b72c9d --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gather-uint-samplers.vert @@ -0,0 +1,28 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 GL_ARB_texture_cube_map_array +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_texture_cube_map_array: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usamplerCube sCube; +uniform usamplerCubeArray sCubeArray; +uniform usampler2DRect s2DRect; + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGather(s2D, vec2(0)); + res += textureGather(s2DArray, vec3(0)); + res += textureGather(sCube, vec3(0)); + res += textureGather(sCubeArray, vec4(0)); + res += textureGather(s2DRect, vec2(0)); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-float-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-float-samplers.vert new file mode 100644 index 0000000..0cb939f --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-float-samplers.vert @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform sampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + vec4 res = vec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset, 0); + res += textureGatherOffset(s2DArray, vec3(0), offset, 1); + res += textureGatherOffset(s2DRect, vec2(0), offset, 2); + + gl_Position = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-int-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-int-samplers.vert new file mode 100644 index 0000000..3d9e97e --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-int-samplers.vert @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset, 0); + res += textureGatherOffset(s2DArray, vec3(0), offset, 1); + res += textureGatherOffset(s2DRect, vec2(0), offset, 2); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-uint-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-uint-samplers.vert new file mode 100644 index 0000000..99f75aa --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-comp-uint-samplers.vert @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset, 0); + res += textureGatherOffset(s2DArray, vec3(0), offset, 1); + res += textureGatherOffset(s2DRect, vec2(0), offset, 2); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-float-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-float-samplers.vert new file mode 100644 index 0000000..7d251ec --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-float-samplers.vert @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform sampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + vec4 res = vec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + res += textureGatherOffset(s2DArray, vec3(0), offset); + res += textureGatherOffset(s2DRect, vec2(0), offset); + + gl_Position = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-int-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-int-samplers.vert new file mode 100644 index 0000000..df0d41f --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-int-samplers.vert @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform isampler2D s2D; +uniform isampler2DArray s2DArray; +uniform isampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + ivec4 res = ivec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + res += textureGatherOffset(s2DArray, vec3(0), offset); + res += textureGatherOffset(s2DRect, vec2(0), offset); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-shadow-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-shadow-samplers.vert new file mode 100644 index 0000000..74f9f28 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-shadow-samplers.vert @@ -0,0 +1,26 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2DShadow s2D; +uniform sampler2DArrayShadow s2DArray; +uniform sampler2DRectShadow s2DRect; + +void main() +{ + vec4 res = vec4(0); + + float refz = 0.5; + ivec2 offset = ivec2(-8, 7); + + res += textureGatherOffset(s2D, vec2(0), refz, offset); + res += textureGatherOffset(s2DArray, vec3(0), refz, offset); + res += textureGatherOffset(s2DRect, vec2(0), refz, offset); + + gl_Position = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uint-samplers.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uint-samplers.vert new file mode 100644 index 0000000..75d762f --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uint-samplers.vert @@ -0,0 +1,25 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform usampler2D s2D; +uniform usampler2DArray s2DArray; +uniform usampler2DRect s2DRect; + +const ivec2 offset = ivec2(-8, 7); + +void main() +{ + uvec4 res = uvec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + res += textureGatherOffset(s2DArray, vec3(0), offset); + res += textureGatherOffset(s2DRect, vec2(0), offset); + + gl_Position = vec4(res); +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uniform-offset.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uniform-offset.vert new file mode 100644 index 0000000..bf13257 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffset-uniform-offset.vert @@ -0,0 +1,21 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform ivec2 offset; /* ARB_gpu_shader5 allows this to be uniform + rather than constexpr */ + +void main() +{ + vec4 res = vec4(0); + + res += textureGatherOffset(s2D, vec2(0), offset); + + gl_Position = res; +} diff --git a/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffsets.vert b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffsets.vert new file mode 100644 index 0000000..e87f484 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/compiler/builtin-functions/vs-gatherOffsets.vert @@ -0,0 +1,75 @@ +// [config] +// expect_result: pass +// glsl_version: 1.50 +// require_extensions: GL_ARB_gpu_shader5 +// [end config] + +#version 150 +#extension GL_ARB_gpu_shader5: require + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform sampler2DRect s2DRect; + +uniform isampler2D is2D; +uniform isampler2DArray is2DArray; +uniform isampler2DRect is2DRect; + +uniform usampler2D us2D; +uniform usampler2DArray us2DArray; +uniform usampler2DRect us2DRect; + +uniform sampler2DShadow ss2D; +uniform sampler2DArrayShadow ss2DArray; +uniform sampler2DRectShadow ss2DRect; + +const ivec2[] offsets = ivec2[]( + ivec2(-8, 7), + ivec2(-8, -8), + ivec2(7, -8), + ivec2(7, 7) +); + +const float refz = 0.5; + +void main() +{ + vec4 res = vec4(0); + + /* float samplers, no component select */ + res += textureGatherOffsets(s2D, vec2(0), offsets); + res += textureGatherOffsets(s2DArray, vec3(0), offsets); + res += textureGatherOffsets(s2DRect, vec2(0), offsets); + + /* float samplers, component select */ + res += textureGatherOffsets(s2D, vec2(0), offsets, 0); + res += textureGatherOffsets(s2DArray, vec3(0), offsets, 1); + res += textureGatherOffsets(s2DRect, vec2(0), offsets, 2); + + /* int samplers, no component select */ + res += textureGatherOffsets(is2D, vec2(0), offsets); + res += textureGatherOffsets(is2DArray, vec3(0), offsets); + res += textureGatherOffsets(is2DRect, vec2(0), offsets); + + /* int samplers, component select */ + res += textureGatherOffsets(is2D, vec2(0), offsets, 0); + res += textureGatherOffsets(is2DArray, vec3(0), offsets, 1); + res += textureGatherOffsets(is2DRect, vec2(0), offsets, 2); + + /* uint samplers, no component select */ + res += textureGatherOffsets(us2D, vec2(0), offsets); + res += textureGatherOffsets(us2DArray, vec3(0), offsets); + res += textureGatherOffsets(us2DRect, vec2(0), offsets); + + /* uint samplers, component select */ + res += textureGatherOffsets(us2D, vec2(0), offsets, 0); + res += textureGatherOffsets(us2DArray, vec3(0), offsets, 1); + res += textureGatherOffsets(us2DRect, vec2(0), offsets, 2); + + /* shadow samplers, no component select (none available) */ + res += textureGatherOffsets(ss2D, vec2(0), refz, offsets); + res += textureGatherOffsets(ss2DArray, vec3(0), refz, offsets); + res += textureGatherOffsets(ss2DRect, vec2(0), refz, offsets); + + gl_Position = res; +} -- 1.8.4 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
