[require] shader model >= 4.0 [srv 0] size (2d, 2, 3) 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 [pixel shader] Texture2D t : register(t0); float4 main() : sv_target { uint u1, u2; float f1, f2; float4 ret; t.GetDimensions(u1, u2); t.GetDimensions(f1, f2); ret.x = u1; ret.y = f2; t.GetDimensions(u1, f2); ret.z = u1; t.GetDimensions(f1, u2); ret.w = u2; return ret; } [test] todo(glsl | msl) draw quad probe (0, 0) rgba (2.0, 3.0, 2.0, 3.0) [srv 1] size (2d, 2, 2) levels 2 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 [pixel shader] Texture2D t : register(t1); float4 main() : sv_target { float4 ret; t.GetDimensions(ret.x, ret.y); t.GetDimensions(1, ret.z, ret.z, ret.w); return ret; } [test] todo(glsl | msl) draw quad probe (0, 0) rgba (2.0, 2.0, 1.0, 2.0) [require] shader model >= 6.2 native-16-bit [uav 0] format r32-uint size (buffer, 4) 0 0 0 0 [compute shader] RWBuffer u : register(u0); [numthreads(1, 1, 1)] void main() { uint width; u.GetDimensions(width); u[0] = (uint16_t)width; } [test] dispatch 1 1 1 probe uav 0 (0) rui(4) [uav 0] stride 6 size (buffer, 2) 0 0 0 [compute shader] struct foo { uint16_t count; half h; uint16_t stride; }; RWStructuredBuffer u : register(u0); [numthreads(1, 1, 1)] void main() { uint count, stride; u.GetDimensions(count, stride); struct foo f0 = {(uint16_t)count, 0.5, (uint16_t)stride}; u[0] = f0; } [test] dispatch 1 1 1 probe uav 0 (0) rui(0x38000002) probe uav 0 (1) rui(6) [uav 0] stride 8 size (buffer, 2) 0 0 0 0 [compute shader] struct foo { uint16_t count; half h; uint32_t stride; }; RWStructuredBuffer u : register(u0); [numthreads(1, 1, 1)] void main() { uint count, stride; u.GetDimensions(count, stride); struct foo f0 = {(uint16_t)count, 0.5, stride}; u[0] = f0; } [test] dispatch 1 1 1 probe uav 0 (0) rui(0x38000002) probe uav 0 (1) rui(8) [uav 0] stride 8 size (buffer, 2) 0 0 0 0 [compute shader] struct foo { uint16_t count; uint32_t stride; }; RWStructuredBuffer u : register(u0); [numthreads(1, 1, 1)] void main() { uint count, stride; u.GetDimensions(count, stride); struct foo f0 = {(uint16_t)count, stride}; u[0] = f0; } [test] dispatch 1 1 1 probe uav 0 (0) rui(2) probe uav 0 (1) rui(8)