[require] shader model >= 5.0 [uav 2] stride 16 size (buffer, 2) 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 [pixel shader todo] struct s { float3 a; }; struct s2 { float4x4 f1, f2, f3; }; RWStructuredBuffer u : register(u2); RWStructuredBuffer u1; RWStructuredBuffer u2; RWStructuredBuffer u3; RWStructuredBuffer u4; RWStructuredBuffer u5; float4 main() : sv_target1 { u[0] = float4(11.1, 12.2, 13.3, 14.4); u[1] = float4(15.5, 16.6, 17.7, 18.8); return 0; } [test] todo(sm<6) draw quad probe uav 2 (0) rgba (11.1, 12.2, 13.3, 14.4) probe uav 2 (1) rgba (15.5, 16.6, 17.7, 18.8) [pixel shader todo] struct s { float3 a; }; struct s2 { float4x4 f1, f2, f3; }; RasterizerOrderedStructuredBuffer u : register(u2); RasterizerOrderedStructuredBuffer u1; RasterizerOrderedStructuredBuffer u2; RasterizerOrderedStructuredBuffer u3; RasterizerOrderedStructuredBuffer u4; RasterizerOrderedStructuredBuffer u5; float4 main() : sv_target1 { u[0] = float4(11.1, 12.2, 13.3, 14.4); return 0; } % Array type [pixel shader] typedef float arr[2]; RWStructuredBuffer u; float4 main() : sv_target1 { return 0; } [pixel shader] typedef float arr[2]; RasterizerOrderedStructuredBuffer u; float4 main() : sv_target1 { return 0; } % Object types [pixel shader fail(sm<6)] RWStructuredBuffer u; float4 main() : sv_target1 { return 0; } [pixel shader fail] struct s { Texture2D t; }; RWStructuredBuffer u; float4 main() : sv_target1 { return 0; } [pixel shader fail(sm<6)] RasterizerOrderedStructuredBuffer u; float4 main() : sv_target1 { return 0; } [pixel shader fail] struct s { Texture2D t; }; RasterizerOrderedStructuredBuffer u; float4 main() : sv_target1 { return 0; } [pixel shader todo] struct apple { float3 a, x; }; RWStructuredBuffer u; float4 main() : sv_target { u[0].x = float3(30.0, 40.0, 50.0); return 0; } [uav 2] stride 16 size (buffer, 2) 1 2 3 4 5 6 7 8 [pixel shader todo] RWStructuredBuffer u : register(u2); float4 main() : sv_target1 { u[0] = int4(11, -12, 13, -14); u[1] = int4(-15, 16, -17, 18); return 0; } [test] todo(sm<6) draw quad probe uav 2 (0) rgbai (11, -12, 13, -14) probe uav 2 (1) rgbai (-15, 16, -17, 18) [uav 2] stride 4 size (buffer, 2) 1 2 % Test scalar store [pixel shader todo] RWStructuredBuffer u : register(u2); float4 main() : sv_target1 { u[0] = 11; u[1] = 12; return 0; } [test] todo(sm<6) draw quad probe uav 2 (0) ri (11) probe uav 2 (1) ri (12) [require] shader model >= 6.2 native-16-bit [uav 2] stride 6 size (buffer, 2) 0 0 0 [compute shader] struct foo { half h; int16_t i; uint16_t u; }; RWStructuredBuffer u : register(u2); [numthreads(1, 1, 1)] void main() { struct foo f0 = {11.125, -12, 13}; struct foo f1 = {12.25, 13, 0xfff2}; u[0] = f0; u[1] = f1; } [test] dispatch 1 1 1 probe uav 2 (0) rui(0xfff44990) probe uav 2 (1) rui(0x4a20000d) probe uav 2 (2) rui(0xfff2000d) [uav 2] stride 12 size (buffer, 2) 0 0 0 0 0 0 [compute shader] struct foo { half2 h; int16_t2 i; uint16_t2 u; }; RWStructuredBuffer u : register(u2); [numthreads(1, 1, 1)] void main() { struct foo f0 = {11.125, 12.25, -12, 13, 14, 0xfff1}; struct foo f1 = {13.375, 14.5, -16, 17, 18, 0xffeb}; u[0] = f0; u[1] = f1; } [test] dispatch 1 1 1 probe uav 2 (0) rui(0x4a204990) probe uav 2 (1) rui(0x000dfff4) probe uav 2 (2) rui(0xfff1000e) probe uav 2 (3) rui(0x4b404ab0) probe uav 2 (4) rui(0x0011fff0) probe uav 2 (5) rui(0xffeb0012) [uav 2] stride 12 size (buffer, 2) 0 0 0 0 0 0 [compute shader] struct foo { half h; int16_t i; uint32_t u; uint16_t2 s; }; RWStructuredBuffer u : register(u2); [numthreads(1, 1, 1)] void main() { struct foo f0 = {11.125, -12, 13, 1, 2}; struct foo f1 = {12.25, 13, 0xfffffff2, 3, 4}; u[0] = f0; u[1] = f1; } [test] dispatch 1 1 1 probe uav 2 (0) rui(0xfff44990) probe uav 2 (1) rui(13) probe uav 2 (2) rui(0x20001) probe uav 2 (3) rui(0x000d4a20) probe uav 2 (4) rui(0xfffffff2) probe uav 2 (5) rui(0x40003) [uav 2] stride 16 size (buffer, 2) 0 0 0 0 0 0 0 0 [compute shader] struct foo { half h; uint32_t u; uint16_t4 s; }; RWStructuredBuffer u : register(u2); [numthreads(1, 1, 1)] void main() { struct foo f0 = {11.125, 3, -12, 13, 1, 2}; struct foo f1 = {12.25, 5, 13, 0xfffffff2, 3, 4}; u[0] = f0; u[1] = f1; } [test] dispatch 1 1 1 probe uav 2 (0) rui(0x4990) probe uav 2 (1) rui(3) probe uav 2 (2) rui(0xdfff4) probe uav 2 (3) rui(0x20001) probe uav 2 (4) rui(0x4a20) probe uav 2 (5) rui(5) probe uav 2 (6) rui(0xfff2000d) probe uav 2 (7) rui(0x40003) [require] shader model >= 6.2 native-16-bit float64 [uav 2] stride 24 size (buffer, 2) 0 0 0 0 0 0 0 0 0 0 0 0 [compute shader] struct foo { half h; double d; uint16_t u; }; RWStructuredBuffer u : register(u2); [numthreads(1, 1, 1)] void main() { struct foo f0 = {11.125, 5.25, 13}; struct foo f1 = {12.25, -4.25, 15}; u[0] = f0; u[1] = f1; } [test] dispatch 1 1 1 probe uav 2 (0) rui(0x4990) probe uav 2 (1) rui(0) probe uav 2 (1) rd(5.25) probe uav 2 (4) rui(13) probe uav 2 (5) rui(0) probe uav 2 (6) rui(0x4a20) probe uav 2 (7) rui(0) probe uav 2 (4) rd(-4.25) probe uav 2 (10) rui(15) probe uav 2 (11) rui(0)