yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
f3f23fec
main
1#version 450 core 2 3#extension GL_ARB_sparse_texture2 : enable 4#extension GL_ARB_sparse_texture_clamp : enable 5#extension GL_AMD_texture_gather_bias_lod : enable 6 7layout (set = 0 ,binding = 0 )uniform sampler1D s1D ; 8layout (set = 0 ,binding = 1 )uniform sampler2D s2D ; 9layout (set = 0 ,binding = 2 )uniform sampler3D s3D ; 10layout (set = 0 ,binding = 3 )uniform sampler2DRect s2DRect ; 11layout (set = 0 ,binding = 4 )uniform samplerCube sCube ; 12layout (set = 0 ,binding = 5 )uniform samplerBuffer sBuffer ; 13layout (set = 0 ,binding = 6 )uniform sampler2DMS s2DMS ; 14layout (set = 0 ,binding = 7 )uniform sampler1DArray s1DArray ; 15layout (set = 0 ,binding = 8 )uniform sampler2DArray s2DArray ; 16layout (set = 0 ,binding = 9 )uniform samplerCubeArray sCubeArray ; 17layout (set = 0 ,binding = 10 )uniform sampler2DMSArray s2DMSArray ; 18 19layout (set = 0 ,binding = 11 )uniform sampler1DShadow s1DShadow ; 20layout (set = 0 ,binding = 12 )uniform sampler2DShadow s2DShadow ; 21layout (set = 0 ,binding = 13 )uniform sampler2DRectShadow s2DRectShadow ; 22layout (set = 0 ,binding = 14 )uniform samplerCubeShadow sCubeShadow ; 23layout (set = 0 ,binding = 15 )uniform sampler1DArrayShadow s1DArrayShadow ; 24layout (set = 0 ,binding = 16 )uniform sampler2DArrayShadow s2DArrayShadow ; 25layout (set = 0 ,binding = 17 )uniform samplerCubeArrayShadow sCubeArrayShadow ; 26 27layout (set = 1 ,binding = 0 )layout (rgba16f )uniform image1D i1D ; 28layout (set = 1 ,binding = 1 )layout (rgba16f )uniform image2D i2D ; 29layout (set = 1 ,binding = 2 )layout (rgba16f )uniform image3D i3D ; 30layout (set = 1 ,binding = 3 )layout (rgba16f )uniform image2DRect i2DRect ; 31layout (set = 1 ,binding = 4 )layout (rgba16f )uniform imageCube iCube ; 32layout (set = 1 ,binding = 5 )layout (rgba16f )uniform image1DArray i1DArray ; 33layout (set = 1 ,binding = 6 )layout (rgba16f )uniform image2DArray i2DArray ; 34layout (set = 1 ,binding = 7 )layout (rgba16f )uniform imageCubeArray iCubeArray ; 35layout (set = 1 ,binding = 8 )layout (rgba16f )uniform imageBuffer iBuffer ; 36layout (set = 1 ,binding = 9 )layout (rgba16f )uniform image2DMS i2DMS ; 37layout (set = 1 ,binding = 10 )layout (rgba16f )uniform image2DMSArray i2DMSArray ; 38 39layout (set = 2 ,binding = 0 )uniform texture1D t1D ; 40layout (set = 2 ,binding = 1 )uniform texture2D t2D ; 41layout (set = 2 ,binding = 2 )uniform texture3D t3D ; 42layout (set = 2 ,binding = 3 )uniform texture2DRect t2DRect ; 43layout (set = 2 ,binding = 4 )uniform textureCube tCube ; 44layout (set = 2 ,binding = 5 )uniform texture1DArray t1DArray ; 45layout (set = 2 ,binding = 6 )uniform texture2DArray t2DArray ; 46layout (set = 2 ,binding = 7 )uniform textureCubeArray tCubeArray ; 47layout (set = 2 ,binding = 8 )uniform textureBuffer tBuffer ; 48layout (set = 2 ,binding = 9 )uniform texture2DMS t2DMS ; 49layout (set = 2 ,binding = 10 )uniform texture2DMSArray t2DMSArray ; 50 51layout (set = 2 ,binding = 11 )uniform sampler s ; 52layout (set = 2 ,binding = 12 )uniform samplerShadow sShadow ; 53 54layout (set = 3 ,binding = 0 ,input_attachment_index = 0 )uniform subpassInput subpass ; 55layout (set = 3 ,binding = 1 ,input_attachment_index = 0 )uniform subpassInputMS subpassMS ; 56 57layout (location = 0 )in float c1 ; 58layout (location = 1 )in vec2 c2 ; 59layout (location = 2 )in vec3 c3 ; 60layout (location = 3 )in vec4 c4 ; 61 62layout (location = 4 )in float compare ; 63layout (location = 5 )in float lod ; 64layout (location = 6 )in float bias ; 65layout (location = 7 )in float lodClamp ; 66 67layout (location = 8 )in float dPdxy1 ; 68layout (location = 9 )in vec2 dPdxy2 ; 69layout (location = 10 )in vec3 dPdxy3 ; 70 71const int offset1 = 1 ; 72const ivec2 offset2 = ivec2 (1 ); 73const ivec3 offset3 = ivec3 (1 ); 74const ivec2 offsets [4 ]= {offset2 ,offset2 ,offset2 ,offset2 }; 75 76layout (location = 0 )out vec4 fragColor ; 77 78vec4 testTexture () 79{ 80vec4 texel = vec4 (0.0 ); 81 82texel += texture (s1D ,c1 ); 83texel += texture (s2D ,c2 ); 84texel += texture (s3D ,c3 ); 85texel += texture (sCube ,c3 ); 86texel .x += texture (s1DShadow ,c3 ); 87texel .x += texture (s2DShadow ,c3 ); 88texel .x += texture (sCubeShadow ,c4 ); 89texel += texture (s1DArray ,c2 ); 90texel += texture (s2DArray ,c3 ); 91texel += texture (sCubeArray ,c4 ); 92texel .x += texture (s1DArrayShadow ,c3 ); 93texel .x += texture (s2DArrayShadow ,c4 ); 94texel += texture (s2DRect ,c2 ); 95texel .x += texture (s2DRectShadow ,c3 ); 96texel .x += texture (sCubeArrayShadow ,c4 ,compare ); 97 98return texel ; 99} 100 101vec4 testTextureProj () 102{ 103vec4 texel = vec4 (0.0 ); 104 105texel += textureProj (s1D ,c2 ); 106texel += textureProj (s1D ,c4 ); 107texel += textureProj (s2D ,c3 ); 108texel += textureProj (s2D ,c4 ); 109texel += textureProj (s3D ,c4 ); 110texel .x += textureProj (s1DShadow ,c4 ); 111texel .x += textureProj (s2DShadow ,c4 ); 112texel += textureProj (s2DRect ,c3 ); 113texel += textureProj (s2DRect ,c4 ); 114texel .x += textureProj (s2DRectShadow ,c4 ); 115 116return texel ; 117} 118 119vec4 testTextureLod () 120{ 121vec4 texel = vec4 (0.0 ); 122 123texel += textureLod (s1D ,c1 ,lod ); 124texel += textureLod (s2D ,c2 ,lod ); 125texel += textureLod (s3D ,c3 ,lod ); 126texel += textureLod (sCube ,c3 ,lod ); 127texel .x += textureLod (s1DShadow ,c3 ,lod ); 128texel .x += textureLod (s2DShadow ,c3 ,lod ); 129texel += textureLod (s1DArray ,c2 ,lod ); 130texel += textureLod (s2DArray ,c3 ,lod ); 131texel .x += textureLod (s1DArrayShadow ,c3 ,lod ); 132texel += textureLod (sCubeArray ,c4 ,lod ); 133 134return texel ; 135} 136 137vec4 testTextureOffset () 138{ 139vec4 texel = vec4 (0.0 ); 140 141texel += textureOffset (s1D ,c1 ,offset1 ); 142texel += textureOffset (s2D ,c2 ,offset2 ); 143texel += textureOffset (s3D ,c3 ,offset3 ); 144texel += textureOffset (s2DRect ,c2 ,offset2 ); 145texel .x += textureOffset (s2DRectShadow ,c3 ,offset2 ); 146texel .x += textureOffset (s1DShadow ,c3 ,offset1 ); 147texel .x += textureOffset (s2DShadow ,c3 ,offset2 ); 148texel += textureOffset (s1DArray ,c2 ,offset1 ); 149texel += textureOffset (s2DArray ,c3 ,offset2 ); 150texel .x += textureOffset (s1DArrayShadow ,c3 ,offset1 ); 151texel .x += textureOffset (s2DArrayShadow ,c4 ,offset2 ); 152 153return texel ; 154} 155 156vec4 testTextureProjOffset () 157{ 158vec4 texel = vec4 (0.0 ); 159 160texel += textureProjOffset (s1D ,c2 ,offset1 ); 161texel += textureProjOffset (s1D ,c4 ,offset1 ); 162texel += textureProjOffset (s2D ,c3 ,offset2 ); 163texel += textureProjOffset (s2D ,c4 ,offset2 ); 164texel += textureProjOffset (s3D ,c4 ,offset3 ); 165texel += textureProjOffset (s2DRect ,c3 ,offset2 ); 166texel += textureProjOffset (s2DRect ,c4 ,offset2 ); 167texel .x += textureProjOffset (s2DRectShadow ,c4 ,offset2 ); 168texel .x += textureProjOffset (s1DShadow ,c4 ,offset1 ); 169texel .x += textureProjOffset (s2DShadow ,c4 ,offset2 ); 170 171return texel ; 172} 173 174vec4 testTextureLodOffset () 175{ 176vec4 texel = vec4 (0.0 ); 177 178texel += textureLodOffset (s1D ,c1 ,lod ,offset1 ); 179texel += textureLodOffset (s2D ,c2 ,lod ,offset2 ); 180texel += textureLodOffset (s3D ,c3 ,lod ,offset3 ); 181texel .x += textureLodOffset (s1DShadow ,c3 ,lod ,offset1 ); 182texel .x += textureLodOffset (s2DShadow ,c3 ,lod ,offset2 ); 183texel += textureLodOffset (s1DArray ,c2 ,lod ,offset1 ); 184texel += textureLodOffset (s2DArray ,c3 ,lod ,offset2 ); 185texel .x += textureLodOffset (s1DArrayShadow ,c3 ,lod ,offset1 ); 186 187return texel ; 188} 189 190vec4 testTextureProjLodOffset () 191{ 192vec4 texel = vec4 (0.0 ); 193 194texel += textureProjLodOffset (s1D ,c2 ,lod ,offset1 ); 195texel += textureProjLodOffset (s1D ,c4 ,lod ,offset1 ); 196texel += textureProjLodOffset (s2D ,c3 ,lod ,offset2 ); 197texel += textureProjLodOffset (s2D ,c4 ,lod ,offset2 ); 198texel += textureProjLodOffset (s3D ,c4 ,lod ,offset3 ); 199texel .x += textureProjLodOffset (s1DShadow ,c4 ,lod ,offset1 ); 200texel .x += textureProjLodOffset (s2DShadow ,c4 ,lod ,offset2 ); 201 202return texel ; 203} 204 205vec4 testTexelFetch () 206{ 207vec4 texel = vec4 (0.0 ); 208 209texel += texelFetch (s1D ,int (c1 ),int (lod )); 210texel += texelFetch (s2D ,ivec2 (c2 ),int (lod )); 211texel += texelFetch (s3D ,ivec3 (c3 ),int (lod )); 212texel += texelFetch (s2DRect ,ivec2 (c2 )); 213texel += texelFetch (s1DArray ,ivec2 (c2 ),int (lod )); 214texel += texelFetch (s2DArray ,ivec3 (c3 ),int (lod )); 215texel += texelFetch (sBuffer ,int (c1 )); 216texel += texelFetch (s2DMS ,ivec2 (c2 ),1 ); 217texel += texelFetch (s2DMSArray ,ivec3 (c3 ),2 ); 218 219return texel ; 220} 221 222vec4 testTexelFetchOffset () 223{ 224vec4 texel = vec4 (0.0 ); 225 226texel += texelFetchOffset (s1D ,int (c1 ),int (lod ),offset1 ); 227texel += texelFetchOffset (s2D ,ivec2 (c2 ),int (lod ),offset2 ); 228texel += texelFetchOffset (s3D ,ivec3 (c3 ),int (lod ),offset3 ); 229texel += texelFetchOffset (s2DRect ,ivec2 (c2 ),offset2 ); 230texel += texelFetchOffset (s1DArray ,ivec2 (c2 ),int (lod ),offset1 ); 231texel += texelFetchOffset (s2DArray ,ivec3 (c3 ),int (lod ),offset2 ); 232 233return texel ; 234} 235 236vec4 testTextureGrad () 237{ 238vec4 texel = vec4 (0.0 ); 239 240texel += textureGrad (s1D ,c1 ,dPdxy1 ,dPdxy1 ); 241texel += textureGrad (s2D ,c2 ,dPdxy2 ,dPdxy2 ); 242texel += textureGrad (s3D ,c3 ,dPdxy3 ,dPdxy3 ); 243texel += textureGrad (sCube ,c3 ,dPdxy3 ,dPdxy3 ); 244texel += textureGrad (s2DRect ,c2 ,dPdxy2 ,dPdxy2 ); 245texel .x += textureGrad (s2DRectShadow ,c3 ,dPdxy2 ,dPdxy2 ); 246texel .x += textureGrad (s1DShadow ,c3 ,dPdxy1 ,dPdxy1 ); 247texel .x += textureGrad (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ); 248texel .x += textureGrad (sCubeShadow ,c4 ,dPdxy3 ,dPdxy3 ); 249texel += textureGrad (s1DArray ,c2 ,dPdxy1 ,dPdxy1 ); 250texel += textureGrad (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ); 251texel .x += textureGrad (s1DArrayShadow ,c3 ,dPdxy1 ,dPdxy1 ); 252texel .x += textureGrad (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ); 253texel += textureGrad (sCubeArray ,c4 ,dPdxy3 ,dPdxy3 ); 254 255return texel ; 256} 257 258vec4 testTextureGradOffset () 259{ 260vec4 texel = vec4 (0.0 ); 261 262texel += textureGradOffset (s1D ,c1 ,dPdxy1 ,dPdxy1 ,offset1 ); 263texel += textureGradOffset (s2D ,c2 ,dPdxy2 ,dPdxy2 ,offset2 ); 264texel += textureGradOffset (s3D ,c3 ,dPdxy3 ,dPdxy3 ,offset3 ); 265texel += textureGradOffset (s2DRect ,c2 ,dPdxy2 ,dPdxy2 ,offset2 ); 266texel .x += textureGradOffset (s2DRectShadow ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ); 267texel .x += textureGradOffset (s1DShadow ,c3 ,dPdxy1 ,dPdxy1 ,offset1 ); 268texel .x += textureGradOffset (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ); 269texel += textureGradOffset (s1DArray ,c2 ,dPdxy1 ,dPdxy1 ,offset1 ); 270texel += textureGradOffset (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ); 271texel .x += textureGradOffset (s1DArrayShadow ,c3 ,dPdxy1 ,dPdxy1 ,offset1 ); 272texel .x += textureGradOffset (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ); 273 274return texel ; 275} 276 277vec4 testTextureProjGrad () 278{ 279vec4 texel = vec4 (0.0 ); 280 281texel += textureProjGrad (s1D ,c2 ,dPdxy1 ,dPdxy1 ); 282texel += textureProjGrad (s1D ,c4 ,dPdxy1 ,dPdxy1 ); 283texel += textureProjGrad (s2D ,c3 ,dPdxy2 ,dPdxy2 ); 284texel += textureProjGrad (s2D ,c4 ,dPdxy2 ,dPdxy2 ); 285texel += textureProjGrad (s3D ,c4 ,dPdxy3 ,dPdxy3 ); 286texel += textureProjGrad (s2DRect ,c3 ,dPdxy2 ,dPdxy2 ); 287texel += textureProjGrad (s2DRect ,c4 ,dPdxy2 ,dPdxy2 ); 288texel .x += textureProjGrad (s2DRectShadow ,c4 ,dPdxy2 ,dPdxy2 ); 289texel .x += textureProjGrad (s1DShadow ,c4 ,dPdxy1 ,dPdxy1 ); 290texel .x += textureProjGrad (s2DShadow ,c4 ,dPdxy2 ,dPdxy2 ); 291 292return texel ; 293} 294 295vec4 testTextureProjGradoffset () 296{ 297vec4 texel = vec4 (0.0 ); 298 299texel += textureProjGradOffset (s1D ,c2 ,dPdxy1 ,dPdxy1 ,offset1 ); 300texel += textureProjGradOffset (s1D ,c4 ,dPdxy1 ,dPdxy1 ,offset1 ); 301texel += textureProjGradOffset (s2D ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ); 302texel += textureProjGradOffset (s2D ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ); 303texel += textureProjGradOffset (s2DRect ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ); 304texel += textureProjGradOffset (s2DRect ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ); 305texel .x += textureProjGradOffset (s2DRectShadow ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ); 306texel += textureProjGradOffset (s3D ,c4 ,dPdxy3 ,dPdxy3 ,offset3 ); 307texel .x += textureProjGradOffset (s1DShadow ,c4 ,dPdxy1 ,dPdxy1 ,offset1 ); 308texel .x += textureProjGradOffset (s2DShadow ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ); 309 310return texel ; 311} 312 313vec4 testTextureGather () 314{ 315vec4 texel = vec4 (0.0 ); 316 317texel += textureGather (s2D ,c2 ,0 ); 318texel += textureGather (s2DArray ,c3 ,0 ); 319texel += textureGather (sCube ,c3 ,0 ); 320texel += textureGather (sCubeArray ,c4 ,0 ); 321texel += textureGather (s2DRect ,c2 ,0 ); 322texel += textureGather (s2DShadow ,c2 ,compare ); 323texel += textureGather (s2DArrayShadow ,c3 ,compare ); 324texel += textureGather (sCubeShadow ,c3 ,compare ); 325texel += textureGather (sCubeArrayShadow ,c4 ,compare ); 326texel += textureGather (s2DRectShadow ,c2 ,compare ); 327 328return texel ; 329} 330 331vec4 testTextureGatherOffset () 332{ 333vec4 texel = vec4 (0.0 ); 334 335texel += textureGatherOffset (s2D ,c2 ,offset2 ,0 ); 336texel += textureGatherOffset (s2DArray ,c3 ,offset2 ,0 ); 337texel += textureGatherOffset (s2DRect ,c2 ,offset2 ,0 ); 338texel += textureGatherOffset (s2DShadow ,c2 ,compare ,offset2 ); 339texel += textureGatherOffset (s2DArrayShadow ,c3 ,compare ,offset2 ); 340texel += textureGatherOffset (s2DRectShadow ,c2 ,compare ,offset2 ); 341 342return texel ; 343} 344 345vec4 testTextureGatherOffsets () 346{ 347vec4 texel = vec4 (0.0 ); 348 349texel += textureGatherOffsets (s2D ,c2 ,offsets ,0 ); 350texel += textureGatherOffsets (s2DArray ,c3 ,offsets ,0 ); 351texel += textureGatherOffsets (s2DRect ,c2 ,offsets ,0 ); 352texel += textureGatherOffsets (s2DShadow ,c2 ,compare ,offsets ); 353texel += textureGatherOffsets (s2DArrayShadow ,c3 ,compare ,offsets ); 354texel += textureGatherOffsets (s2DRectShadow ,c2 ,compare ,offsets ); 355 356return texel ; 357} 358 359vec4 testTextureGatherLod () 360{ 361vec4 texel = vec4 (0.0 ); 362 363texel += textureGatherLodAMD (s2D ,c2 ,lod ,0 ); 364texel += textureGatherLodAMD (s2DArray ,c3 ,lod ,0 ); 365texel += textureGatherLodAMD (sCube ,c3 ,lod ,0 ); 366texel += textureGatherLodAMD (sCubeArray ,c4 ,lod ,0 ); 367 368return texel ; 369} 370 371vec4 testTextureGatherLodOffset () 372{ 373vec4 texel = vec4 (0.0 ); 374 375texel += textureGatherLodOffsetAMD (s2D ,c2 ,lod ,offset2 ,0 ); 376texel += textureGatherLodOffsetAMD (s2DArray ,c3 ,lod ,offset2 ,0 ); 377 378return texel ; 379} 380 381vec4 testTextureGatherLodOffsets () 382{ 383vec4 texel = vec4 (0.0 ); 384 385texel += textureGatherLodOffsetsAMD (s2D ,c2 ,lod ,offsets ,0 ); 386texel += textureGatherLodOffsetsAMD (s2DArray ,c3 ,lod ,offsets ,0 ); 387 388return texel ; 389} 390 391ivec4 testTextureSize () 392{ 393ivec4 size = ivec4 (0 ); 394 395size .x += textureSize (s1D ,int (lod )); 396size .xy += textureSize (s2D ,int (lod )); 397size .xyz += textureSize (s3D ,int (lod )); 398size .xy += textureSize (sCube ,int (lod )); 399size .x += textureSize (s1DShadow ,int (lod )); 400size .xy += textureSize (s2DShadow ,int (lod )); 401size .xy += textureSize (sCubeShadow ,int (lod )); 402size .xyz += textureSize (sCubeArray ,int (lod )); 403size .xyz += textureSize (sCubeArrayShadow ,int (lod )); 404size .xy += textureSize (s2DRect ); 405size .xy += textureSize (s2DRectShadow ); 406size .xy += textureSize (s1DArray ,int (lod )); 407size .xyz += textureSize (s2DArray ,int (lod )); 408size .xy += textureSize (s1DArrayShadow ,int (lod )); 409size .xyz += textureSize (s2DArrayShadow ,int (lod )); 410size .x += textureSize (sBuffer ); 411size .xy += textureSize (s2DMS ); 412size .xyz += textureSize (s2DMSArray ); 413 414return size ; 415} 416 417vec2 testTextureQueryLod () 418{ 419vec2 lod = vec2 (0.0 ); 420 421lod += textureQueryLod (s1D ,c1 ); 422lod += textureQueryLod (s2D ,c2 ); 423lod += textureQueryLod (s3D ,c3 ); 424lod += textureQueryLod (sCube ,c3 ); 425lod += textureQueryLod (s1DArray ,c1 ); 426lod += textureQueryLod (s2DArray ,c2 ); 427lod += textureQueryLod (sCubeArray ,c3 ); 428lod += textureQueryLod (s1DShadow ,c1 ); 429lod += textureQueryLod (s2DShadow ,c2 ); 430lod += textureQueryLod (sCubeArrayShadow ,c3 ); 431lod += textureQueryLod (s1DArrayShadow ,c1 ); 432lod += textureQueryLod (s2DArrayShadow ,c2 ); 433lod += textureQueryLod (sCubeArrayShadow ,c3 ); 434 435return lod ; 436} 437 438int testTextureQueryLevels () 439{ 440int levels = 0 ; 441 442levels += textureQueryLevels (s1D ); 443levels += textureQueryLevels (s2D ); 444levels += textureQueryLevels (s3D ); 445levels += textureQueryLevels (sCube ); 446levels += textureQueryLevels (s1DShadow ); 447levels += textureQueryLevels (s2DShadow ); 448levels += textureQueryLevels (sCubeShadow ); 449levels += textureQueryLevels (sCubeArray ); 450levels += textureQueryLevels (sCubeArrayShadow ); 451levels += textureQueryLevels (s1DArray ); 452levels += textureQueryLevels (s2DArray ); 453levels += textureQueryLevels (s1DArrayShadow ); 454levels += textureQueryLevels (s2DArrayShadow ); 455 456return levels ; 457} 458 459int testTextureSamples () 460{ 461int samples = 0 ; 462 463samples += textureSamples (s2DMS ); 464samples += textureSamples (s2DMSArray ); 465 466return samples ; 467} 468 469vec4 testImageLoad () 470{ 471vec4 texel = vec4 (0.0 ); 472 473texel += imageLoad (i1D ,int (c1 )); 474texel += imageLoad (i2D ,ivec2 (c2 )); 475texel += imageLoad (i3D ,ivec3 (c3 )); 476texel += imageLoad (i2DRect ,ivec2 (c2 )); 477texel += imageLoad (iCube ,ivec3 (c3 )); 478texel += imageLoad (iBuffer ,int (c1 )); 479texel += imageLoad (i1DArray ,ivec2 (c2 )); 480texel += imageLoad (i2DArray ,ivec3 (c3 )); 481texel += imageLoad (iCubeArray ,ivec3 (c3 )); 482texel += imageLoad (i2DMS ,ivec2 (c2 ),1 ); 483texel += imageLoad (i2DMSArray ,ivec3 (c3 ),1 ); 484 485return texel ; 486} 487 488void testImageStore (vec4 data ) 489{ 490imageStore (i1D ,int (c1 ),data ); 491imageStore (i2D ,ivec2 (c2 ),data ); 492imageStore (i3D ,ivec3 (c3 ),data ); 493imageStore (i2DRect ,ivec2 (c2 ),data ); 494imageStore (iCube ,ivec3 (c3 ),data ); 495imageStore (iBuffer ,int (c1 ),data ); 496imageStore (i1DArray ,ivec2 (c2 ),data ); 497imageStore (i2DArray ,ivec3 (c3 ),data ); 498imageStore (iCubeArray ,ivec3 (c3 ),data ); 499imageStore (i2DMS ,ivec2 (c2 ),1 ,data ); 500imageStore (i2DMSArray ,ivec3 (c3 ),1 ,data ); 501} 502 503vec4 testSparseTexture () 504{ 505vec4 texel = vec4 (0.0 ); 506 507sparseTextureARB (s2D ,c2 ,texel ); 508sparseTextureARB (s3D ,c3 ,texel ); 509sparseTextureARB (sCube ,c3 ,texel ); 510sparseTextureARB (s2DShadow ,c3 ,texel .x ); 511sparseTextureARB (sCubeShadow ,c4 ,texel .x ); 512sparseTextureARB (s2DArray ,c3 ,texel ); 513sparseTextureARB (sCubeArray ,c4 ,texel ); 514sparseTextureARB (s2DArrayShadow ,c4 ,texel .x ); 515sparseTextureARB (s2DRect ,c2 ,texel ); 516sparseTextureARB (s2DRectShadow ,c3 ,texel .x ); 517sparseTextureARB (sCubeArrayShadow ,c4 ,compare ,texel .x ); 518 519return texel ; 520} 521 522vec4 testSparseTextureLod () 523{ 524vec4 texel = vec4 (0.0 ); 525 526sparseTextureLodARB (s2D ,c2 ,lod ,texel ); 527sparseTextureLodARB (s3D ,c3 ,lod ,texel ); 528sparseTextureLodARB (sCube ,c3 ,lod ,texel ); 529sparseTextureLodARB (s2DShadow ,c3 ,lod ,texel .x ); 530sparseTextureLodARB (s2DArray ,c3 ,lod ,texel ); 531sparseTextureLodARB (sCubeArray ,c4 ,lod ,texel ); 532 533return texel ; 534} 535 536vec4 testSparseTextureOffset () 537{ 538vec4 texel = vec4 (0.0 ); 539 540sparseTextureOffsetARB (s2D ,c2 ,offset2 ,texel ); 541sparseTextureOffsetARB (s3D ,c3 ,offset3 ,texel ); 542sparseTextureOffsetARB (s2DRect ,c2 ,offset2 ,texel ); 543sparseTextureOffsetARB (s2DRectShadow ,c3 ,offset2 ,texel .x ); 544sparseTextureOffsetARB (s2DShadow ,c3 ,offset2 ,texel .x ); 545sparseTextureOffsetARB (s2DArray ,c3 ,offset2 ,texel ); 546sparseTextureOffsetARB (s2DArrayShadow ,c4 ,offset2 ,texel .x ); 547 548return texel ; 549} 550 551vec4 testSparseTextureLodOffset () 552{ 553vec4 texel = vec4 (0.0 ); 554 555sparseTextureLodOffsetARB (s2D ,c2 ,lod ,offset2 ,texel ); 556sparseTextureLodOffsetARB (s3D ,c3 ,lod ,offset3 ,texel ); 557sparseTextureLodOffsetARB (s2DShadow ,c3 ,lod ,offset2 ,texel .x ); 558sparseTextureLodOffsetARB (s2DArray ,c3 ,lod ,offset2 ,texel ); 559 560return texel ; 561} 562 563vec4 testSparseTextureGrad () 564{ 565vec4 texel = vec4 (0.0 ); 566 567sparseTextureGradARB (s2D ,c2 ,dPdxy2 ,dPdxy2 ,texel ); 568sparseTextureGradARB (s3D ,c3 ,dPdxy3 ,dPdxy3 ,texel ); 569sparseTextureGradARB (sCube ,c3 ,dPdxy3 ,dPdxy3 ,texel ); 570sparseTextureGradARB (s2DRect ,c2 ,dPdxy2 ,dPdxy2 ,texel ); 571sparseTextureGradARB (s2DRectShadow ,c3 ,dPdxy2 ,dPdxy2 ,texel .x ); 572sparseTextureGradARB (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ,texel .x ); 573sparseTextureGradARB (sCubeShadow ,c4 ,dPdxy3 ,dPdxy3 ,texel .x ); 574sparseTextureGradARB (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ,texel ); 575sparseTextureGradARB (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ,texel .x ); 576sparseTextureGradARB (sCubeArray ,c4 ,dPdxy3 ,dPdxy3 ,texel ); 577 578return texel ; 579} 580 581vec4 testSparseTextureGradOffset () 582{ 583vec4 texel = vec4 (0.0 ); 584 585sparseTextureGradOffsetARB (s2D ,c2 ,dPdxy2 ,dPdxy2 ,offset2 ,texel ); 586sparseTextureGradOffsetARB (s3D ,c3 ,dPdxy3 ,dPdxy3 ,offset3 ,texel ); 587sparseTextureGradOffsetARB (s2DRect ,c2 ,dPdxy2 ,dPdxy2 ,offset2 ,texel ); 588sparseTextureGradOffsetARB (s2DRectShadow ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ,texel .x ); 589sparseTextureGradOffsetARB (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ,texel .x ); 590sparseTextureGradOffsetARB (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ,texel ); 591sparseTextureGradOffsetARB (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ,texel .x ); 592 593return texel ; 594} 595 596vec4 testSparseTexelFetch () 597{ 598vec4 texel = vec4 (0.0 ); 599 600sparseTexelFetchARB (s2D ,ivec2 (c2 ),int (lod ),texel ); 601sparseTexelFetchARB (s3D ,ivec3 (c3 ),int (lod ),texel ); 602sparseTexelFetchARB (s2DRect ,ivec2 (c2 ),texel ); 603sparseTexelFetchARB (s2DArray ,ivec3 (c3 ),int (lod ),texel ); 604sparseTexelFetchARB (s2DMS ,ivec2 (c2 ),1 ,texel ); 605sparseTexelFetchARB (s2DMSArray ,ivec3 (c3 ),2 ,texel ); 606 607return texel ; 608} 609 610vec4 testSparseTexelFetchOffset () 611{ 612vec4 texel = vec4 (0.0 ); 613 614sparseTexelFetchOffsetARB (s2D ,ivec2 (c2 ),int (lod ),offset2 ,texel ); 615sparseTexelFetchOffsetARB (s3D ,ivec3 (c3 ),int (lod ),offset3 ,texel ); 616sparseTexelFetchOffsetARB (s2DRect ,ivec2 (c2 ),offset2 ,texel ); 617sparseTexelFetchOffsetARB (s2DArray ,ivec3 (c3 ),int (lod ),offset2 ,texel ); 618 619return texel ; 620} 621 622vec4 testSparseTextureGather () 623{ 624vec4 texel = vec4 (0.0 ); 625 626sparseTextureGatherARB (s2D ,c2 ,texel ,0 ); 627sparseTextureGatherARB (s2DArray ,c3 ,texel ,0 ); 628sparseTextureGatherARB (sCube ,c3 ,texel ,0 ); 629sparseTextureGatherARB (sCubeArray ,c4 ,texel ,0 ); 630sparseTextureGatherARB (s2DRect ,c2 ,texel ,0 ); 631sparseTextureGatherARB (s2DShadow ,c2 ,compare ,texel ); 632sparseTextureGatherARB (s2DArrayShadow ,c3 ,compare ,texel ); 633sparseTextureGatherARB (sCubeShadow ,c3 ,compare ,texel ); 634sparseTextureGatherARB (sCubeArrayShadow ,c4 ,compare ,texel ); 635sparseTextureGatherARB (s2DRectShadow ,c2 ,compare ,texel ); 636 637return texel ; 638} 639 640vec4 testSparseTextureGatherOffset () 641{ 642vec4 texel = vec4 (0.0 ); 643 644sparseTextureGatherOffsetARB (s2D ,c2 ,offset2 ,texel ,0 ); 645sparseTextureGatherOffsetARB (s2DArray ,c3 ,offset2 ,texel ,0 ); 646sparseTextureGatherOffsetARB (s2DRect ,c2 ,offset2 ,texel ,0 ); 647sparseTextureGatherOffsetARB (s2DShadow ,c2 ,compare ,offset2 ,texel ); 648sparseTextureGatherOffsetARB (s2DArrayShadow ,c3 ,compare ,offset2 ,texel ); 649sparseTextureGatherOffsetARB (s2DRectShadow ,c2 ,compare ,offset2 ,texel ); 650 651return texel ; 652} 653 654vec4 testSparseTextureGatherOffsets () 655{ 656vec4 texel = vec4 (0.0 ); 657const ivec2 constOffsets [4 ]= ivec2 [4 ](ivec2 (1 ,2 ),ivec2 (3 ,4 ),ivec2 (15 ,16 ),ivec2 (-2 ,0 )); 658 659sparseTextureGatherOffsetsARB (s2D ,c2 ,constOffsets ,texel ,0 ); 660sparseTextureGatherOffsetsARB (s2DArray ,c3 ,constOffsets ,texel ,0 ); 661sparseTextureGatherOffsetsARB (s2DRect ,c2 ,constOffsets ,texel ,0 ); 662sparseTextureGatherOffsetsARB (s2DShadow ,c2 ,compare ,constOffsets ,texel ); 663sparseTextureGatherOffsetsARB (s2DArrayShadow ,c3 ,compare ,constOffsets ,texel ); 664sparseTextureGatherOffsetsARB (s2DRectShadow ,c2 ,compare ,constOffsets ,texel ); 665 666return texel ; 667} 668 669vec4 testSparseTextureGatherLod () 670{ 671vec4 texel = vec4 (0.0 ); 672 673sparseTextureGatherLodAMD (s2D ,c2 ,lod ,texel ,0 ); 674sparseTextureGatherLodAMD (s2DArray ,c3 ,lod ,texel ,0 ); 675sparseTextureGatherLodAMD (sCube ,c3 ,lod ,texel ,0 ); 676sparseTextureGatherLodAMD (sCubeArray ,c4 ,lod ,texel ,0 ); 677 678return texel ; 679} 680 681vec4 testSparseTextureGatherLodOffset () 682{ 683vec4 texel = vec4 (0.0 ); 684 685sparseTextureGatherLodOffsetAMD (s2D ,c2 ,lod ,offset2 ,texel ,0 ); 686sparseTextureGatherLodOffsetAMD (s2DArray ,c3 ,lod ,offset2 ,texel ,0 ); 687 688return texel ; 689} 690 691vec4 testSparseTextureGatherLodOffsets () 692{ 693vec4 texel = vec4 (0.0 ); 694 695sparseTextureGatherLodOffsetsAMD (s2D ,c2 ,lod ,offsets ,texel ,0 ); 696sparseTextureGatherLodOffsetsAMD (s2DArray ,c3 ,lod ,offsets ,texel ,0 ); 697 698return texel ; 699} 700 701vec4 testSparseImageLoad () 702{ 703vec4 texel = vec4 (0.0 ); 704 705sparseImageLoadARB (i2D ,ivec2 (c2 ),texel ); 706sparseImageLoadARB (i3D ,ivec3 (c3 ),texel ); 707sparseImageLoadARB (i2DRect ,ivec2 (c2 ),texel ); 708sparseImageLoadARB (iCube ,ivec3 (c3 ),texel ); 709sparseImageLoadARB (i2DArray ,ivec3 (c3 ),texel ); 710sparseImageLoadARB (iCubeArray ,ivec3 (c3 ),texel ); 711sparseImageLoadARB (i2DMS ,ivec2 (c2 ),1 ,texel ); 712sparseImageLoadARB (i2DMSArray ,ivec3 (c3 ),2 ,texel ); 713 714return texel ; 715} 716 717vec4 testSparseTextureClamp () 718{ 719vec4 texel = vec4 (0.0 ); 720 721sparseTextureClampARB (s2D ,c2 ,lodClamp ,texel ); 722sparseTextureClampARB (s3D ,c3 ,lodClamp ,texel ); 723sparseTextureClampARB (sCube ,c3 ,lodClamp ,texel ); 724sparseTextureClampARB (s2DShadow ,c3 ,lodClamp ,texel .x ); 725sparseTextureClampARB (sCubeShadow ,c4 ,lodClamp ,texel .x ); 726sparseTextureClampARB (s2DArray ,c3 ,lodClamp ,texel ); 727sparseTextureClampARB (sCubeArray ,c4 ,lodClamp ,texel ); 728sparseTextureClampARB (s2DArrayShadow ,c4 ,lodClamp ,texel .x ); 729sparseTextureClampARB (sCubeArrayShadow ,c4 ,compare ,lodClamp ,texel .x ); 730 731return texel ; 732} 733 734vec4 testTextureClamp () 735{ 736vec4 texel = vec4 (0.0 ); 737 738texel += textureClampARB (s1D ,c1 ,lodClamp ); 739texel += textureClampARB (s2D ,c2 ,lodClamp ); 740texel += textureClampARB (s3D ,c3 ,lodClamp ); 741texel += textureClampARB (sCube ,c3 ,lodClamp ); 742texel .x += textureClampARB (s1DShadow ,c3 ,lodClamp ); 743texel .x += textureClampARB (s2DShadow ,c3 ,lodClamp ); 744texel .x += textureClampARB (sCubeShadow ,c4 ,lodClamp ); 745texel += textureClampARB (s1DArray ,c2 ,lodClamp ); 746texel += textureClampARB (s2DArray ,c3 ,lodClamp ); 747texel += textureClampARB (sCubeArray ,c4 ,lodClamp ); 748texel .x += textureClampARB (s1DArrayShadow ,c3 ,lodClamp ); 749texel .x += textureClampARB (s2DArrayShadow ,c4 ,lodClamp ); 750texel .x += textureClampARB (sCubeArrayShadow ,c4 ,compare ,lodClamp ); 751 752return texel ; 753} 754 755vec4 testSparseTextureOffsetClamp () 756{ 757vec4 texel = vec4 (0.0 ); 758 759sparseTextureOffsetClampARB (s2D ,c2 ,offset2 ,lodClamp ,texel ); 760sparseTextureOffsetClampARB (s3D ,c3 ,offset3 ,lodClamp ,texel ); 761sparseTextureOffsetClampARB (s2DShadow ,c3 ,offset2 ,lodClamp ,texel .x ); 762sparseTextureOffsetClampARB (s2DArray ,c3 ,offset2 ,lodClamp ,texel ); 763sparseTextureOffsetClampARB (s2DArrayShadow ,c4 ,offset2 ,lodClamp ,texel .x ); 764 765return texel ; 766} 767 768vec4 testTextureOffsetClamp () 769{ 770vec4 texel = vec4 (0.0 ); 771 772texel += textureOffsetClampARB (s1D ,c1 ,offset1 ,lodClamp ); 773texel += textureOffsetClampARB (s2D ,c2 ,offset2 ,lodClamp ); 774texel += textureOffsetClampARB (s3D ,c3 ,offset3 ,lodClamp ); 775texel .x += textureOffsetClampARB (s1DShadow ,c3 ,offset1 ,lodClamp ); 776texel .x += textureOffsetClampARB (s2DShadow ,c3 ,offset2 ,lodClamp ); 777texel += textureOffsetClampARB (s1DArray ,c2 ,offset1 ,lodClamp ); 778texel += textureOffsetClampARB (s2DArray ,c3 ,offset2 ,lodClamp ); 779texel .x += textureOffsetClampARB (s1DArrayShadow ,c3 ,offset1 ,lodClamp ); 780texel .x += textureOffsetClampARB (s2DArrayShadow ,c4 ,offset2 ,lodClamp ); 781 782return texel ; 783} 784 785vec4 testSparseTextureGradClamp () 786{ 787vec4 texel = vec4 (0.0 ); 788 789sparseTextureGradClampARB (s2D ,c2 ,dPdxy2 ,dPdxy2 ,lodClamp ,texel ); 790sparseTextureGradClampARB (s3D ,c3 ,dPdxy3 ,dPdxy3 ,lodClamp ,texel ); 791sparseTextureGradClampARB (sCube ,c3 ,dPdxy3 ,dPdxy3 ,lodClamp ,texel ); 792sparseTextureGradClampARB (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ,lodClamp ,texel .x ); 793sparseTextureGradClampARB (sCubeShadow ,c4 ,dPdxy3 ,dPdxy3 ,lodClamp ,texel .x ); 794sparseTextureGradClampARB (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ,lodClamp ,texel ); 795sparseTextureGradClampARB (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ,lodClamp ,texel .x ); 796sparseTextureGradClampARB (sCubeArray ,c4 ,dPdxy3 ,dPdxy3 ,lodClamp ,texel ); 797 798return texel ; 799} 800 801vec4 testTextureGradClamp () 802{ 803vec4 texel = vec4 (0.0 ); 804 805texel += textureGradClampARB (s1D ,c1 ,dPdxy1 ,dPdxy1 ,lodClamp ); 806texel += textureGradClampARB (s2D ,c2 ,dPdxy2 ,dPdxy2 ,lodClamp ); 807texel += textureGradClampARB (s3D ,c3 ,dPdxy3 ,dPdxy3 ,lodClamp ); 808texel += textureGradClampARB (sCube ,c3 ,dPdxy3 ,dPdxy3 ,lodClamp ); 809texel .x += textureGradClampARB (s1DShadow ,c3 ,dPdxy1 ,dPdxy1 ,lodClamp ); 810texel .x += textureGradClampARB (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ,lodClamp ); 811texel .x += textureGradClampARB (sCubeShadow ,c4 ,dPdxy3 ,dPdxy3 ,lodClamp ); 812texel += textureGradClampARB (s1DArray ,c2 ,dPdxy1 ,dPdxy1 ,lodClamp ); 813texel += textureGradClampARB (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ,lodClamp ); 814texel .x += textureGradClampARB (s1DArrayShadow ,c3 ,dPdxy1 ,dPdxy1 ,lodClamp ); 815texel .x += textureGradClampARB (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ,lodClamp ); 816texel += textureGradClampARB (sCubeArray ,c4 ,dPdxy3 ,dPdxy3 ,lodClamp ); 817 818return texel ; 819} 820 821vec4 testSparseTextureGradOffsetClamp () 822{ 823vec4 texel = vec4 (0.0 ); 824 825sparseTextureGradOffsetClampARB (s2D ,c2 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ,texel ); 826sparseTextureGradOffsetClampARB (s3D ,c3 ,dPdxy3 ,dPdxy3 ,offset3 ,lodClamp ,texel ); 827sparseTextureGradOffsetClampARB (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ,texel .x ); 828sparseTextureGradOffsetClampARB (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ,texel ); 829sparseTextureGradOffsetClampARB (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ,texel .x ); 830 831return texel ; 832} 833 834vec4 testTextureGradOffsetClamp () 835{ 836vec4 texel = vec4 (0.0 ); 837 838texel += textureGradOffsetClampARB (s1D ,c1 ,dPdxy1 ,dPdxy1 ,offset1 ,lodClamp ); 839texel += textureGradOffsetClampARB (s2D ,c2 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ); 840texel += textureGradOffsetClampARB (s3D ,c3 ,dPdxy3 ,dPdxy3 ,offset3 ,lodClamp ); 841texel .x += textureGradOffsetClampARB (s1DShadow ,c3 ,dPdxy1 ,dPdxy1 ,offset1 ,lodClamp ); 842texel .x += textureGradOffsetClampARB (s2DShadow ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ); 843texel += textureGradOffsetClampARB (s1DArray ,c2 ,dPdxy1 ,dPdxy1 ,offset1 ,lodClamp ); 844texel += textureGradOffsetClampARB (s2DArray ,c3 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ); 845texel .x += textureGradOffsetClampARB (s1DArrayShadow ,c3 ,dPdxy1 ,dPdxy1 ,offset1 ,lodClamp ); 846texel .x += textureGradOffsetClampARB (s2DArrayShadow ,c4 ,dPdxy2 ,dPdxy2 ,offset2 ,lodClamp ); 847 848return texel ; 849} 850 851vec4 testCombinedTextureSampler () 852{ 853vec4 texel = vec4 (0.0 ); 854 855texel += texture (sampler1D (t1D ,s ),c1 ); 856texel += texture (sampler2D (t2D ,s ),c2 ); 857texel += texture (sampler3D (t3D ,s ),c3 ); 858texel += texture (samplerCube (tCube ,s ),c3 ); 859texel .x += texture (sampler1DShadow (t1D ,sShadow ),c3 ); 860texel .x += texture (sampler2DShadow (t2D ,sShadow ),c3 ); 861texel .x += texture (samplerCubeShadow (tCube ,sShadow ),c4 ); 862texel += texture (sampler1DArray (t1DArray ,s ),c2 ); 863texel += texture (sampler2DArray (t2DArray ,s ),c3 ); 864texel += texture (samplerCubeArray (tCubeArray ,s ),c4 ); 865texel .x += texture (sampler1DArrayShadow (t1DArray ,sShadow ),c3 ); 866texel .x += texture (sampler2DArrayShadow (t2DArray ,sShadow ),c4 ); 867texel += texture (sampler2DRect (t2DRect ,s ),c2 ); 868texel .x += texture (sampler2DRectShadow (t2DRect ,sShadow ),c3 ); 869texel .x += texture (samplerCubeArrayShadow (tCubeArray ,sShadow ),c4 ,compare ); 870 871return texel ; 872} 873 874vec4 testSubpassLoad () 875{ 876return subpassLoad (subpass )+ subpassLoad (subpassMS ,2 ); 877} 878 879void main () 880{ 881vec4 result = vec4 (0.0 ); 882 883result += testTexture (); 884result += testTextureProj (); 885result += testTextureLod (); 886result += testTextureOffset (); 887result += testTextureLodOffset (); 888result += testTextureProjLodOffset (); 889result += testTexelFetch (); 890result += testTexelFetchOffset (); 891result += testTextureGrad (); 892result += testTextureGradOffset (); 893result += testTextureProjGrad (); 894result += testTextureProjGradoffset (); 895result += testTextureGather (); 896result += testTextureGatherOffset (); 897result += testTextureGatherOffsets (); 898result += testTextureGatherLod (); 899result += testTextureGatherLodOffset (); 900result += testTextureGatherLodOffsets (); 901 902result += vec4 (testTextureSize ()); 903result .xy += vec2 (testTextureQueryLod ()); 904result .x += testTextureQueryLevels (); 905result .x += testTextureSamples (); 906 907result += testImageLoad (); 908testImageStore (result ); 909 910result += testSparseTexture (); 911result += testSparseTextureLod (); 912result += testSparseTextureOffset (); 913result += testSparseTextureLodOffset (); 914result += testSparseTextureGrad (); 915result += testSparseTextureGradOffset (); 916result += testSparseTexelFetch (); 917result += testSparseTexelFetchOffset (); 918result += testSparseTextureGather (); 919result += testSparseTextureGatherOffset (); 920result += testSparseTextureGatherOffsets (); 921result += testSparseTextureGatherLod (); 922result += testSparseTextureGatherLodOffset (); 923result += testSparseTextureGatherLodOffsets (); 924 925result += testSparseImageLoad (); 926 927result += testSparseTextureClamp (); 928result += testTextureClamp (); 929result += testSparseTextureOffsetClamp (); 930result += testTextureOffsetClamp (); 931result += testSparseTextureGrad (); 932result += testTextureGrad (); 933result += testSparseTextureGradOffsetClamp (); 934result += testTextureGradOffsetClamp (); 935 936result += testCombinedTextureSampler (); 937result += testSubpassLoad (); 938 939fragColor = result ; 940} 941