| Conformance Test |
| |
| CTS_ARB_sparse_texture_clamp |
| |
| Contributors |
| |
| Adam Czupryna, Mobica |
| |
| Contacts |
| |
| Adam Czupryna, Mobica (adam.czupryna 'at' mobica.com) |
| |
| Status |
| |
| In review |
| |
| Version |
| |
| December 19, 2016 (version 1) |
| |
| Dependencies |
| |
| OpenGL 4.5 is required. |
| |
| ARB_sparse_texture2 extension is required. |
| |
| This specification is written against: |
| - ARB_sparse_texture_clamp specification, |
| - OpenGL 4.5 (core) specification. |
| |
| Overview |
| |
| This test verifies if functionality provided by ARB_sparse_texture_clamp |
| works as expected: |
| |
| * Check if new built-in GLSL texture lookup functions that are provided |
| by this extension could specify a minimum level of detail to use for |
| lookups where level of detail is computed automatically. |
| |
| New Tests |
| |
| Shader Extension Test |
| |
| * Create shader that require ARB_sparse_texture_clamp extension |
| and check if ARB_sparse_texture_clamp is defined and equal 1. |
| Check if shader compiles with no error. |
| |
| Sparse Texture Clamp Lookup Residency Tests |
| |
| * Iterate through all sparse supported targets. |
| Allocate sparse texture for current <target> with committed and |
| uncommitted regions. |
| Create multiple fragment shaders that enable ARB_sparse_texture_clamp |
| extension and each uses one of the function from list below |
| (if supported by <target>): |
| |
| - sparseTextureClampARB |
| - sparseTextureOffsetClampARB |
| - sparseTextureGradClampARB |
| - sparseTextureGradOffsetClampARB |
| |
| Shaders should check texture access residency information and pass |
| vec4(1, 1, 1, 1) to the output if access committed region and |
| vec4(0, 0, 0, 1) otherwise. |
| |
| Iterate through shaders, create and use program for current iteration |
| and draw a full screen quad. |
| |
| Read back the contents of the color attachment on the CPU side. The test expects |
| that the texels will be filled with (1, 1, 1, 1) if the areas of the sparse texture accessed |
| in the shader would be in committed regions, (0, 0, 0, 1) otherwise. |
| |
| Run the test for different values of <lodClamp> argument. |
| |
| Sparse and Non-sparse Texture Clamp Lookup Color Tests |
| |
| * Iterate through all sparse and non-sparse supported targets. |
| Allocate texture for current <target>. |
| Fill the texture with different values for miplevels [0, lodClamp) that for miplevels [lodClamp, lastMipLevel]. |
| |
| Create multiple fragment shaders that enables ARB_sparse_texture_clamp |
| extension and each use one of the function from list below |
| (if supported by <target>): |
| |
| - textureClampARB |
| - textureOffsetClampARB |
| - textureGradClampARB |
| - textureGradOffsetClampARB |
| - sparseTextureClampARB |
| - sparseTextureOffsetClampARB |
| - sparseTextureGradClampARB |
| - sparseTextureGradOffsetClampARB |
| |
| Iterate through shaders, create and use program for current iteration |
| and draw a full screen quad. In the shader sample the texture with the value lodClamp as <lodClamp> argument. |
| |
| Verify that the <lodClamp> argument was taken into account during automatic lod computations |
| by reading pixels from framebuffer and checking if their values are as equal to the ones |
| from the region [lodClamp, lastMipLevel]. |
| |
| Run the test for different values of <lodClamp> argument. |
| |
| Revision History |
| |
| Revision 1, 19th December, 2016 (Adam Czupryna) |
| - Intial version; |