ShaderOpArith.xml 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886
  1. <?xml version="1.0" encoding="utf-8" standalone="yes"?>
  2. <ShaderOpSet xmlns="http://schemas.microsoft.com/test/ShaderOp">
  3. <ShaderOp Name="DerivFine" PS="PS" VS="VS" TopologyType="TRIANGLE">
  4. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), DescriptorTable(SRV(t0,numDescriptors=1))</RootSignature>
  5. <Resource Name="VBuffer" Dimension="BUFFER" InitialResourceState="COPY_DEST" Init="FromBytes" Topology="TRIANGLELIST">
  6. { { -1.0f, 1.0f, 0.0f }, { 0.0f, 0.0f } },
  7. { { 1.0f, 1.0f, 0.0f }, { 1.0f, 0.0f } },
  8. { { -1.0f, -1.0f, 0.0f }, { 0.0f, 1.0f } },
  9. { { -1.0f, -1.0f, 0.0f }, { 0.0f, 1.0f } },
  10. { { 1.0f, 1.0f, 0.0f }, { 1.0f, 0.0f } },
  11. { { 1.0f, -1.0f, 0.0f }, { 1.0f, 1.0f } }
  12. </Resource>
  13. <Resource Name="T0" Dimension="Texture2D" Width="4" Height="4" InitialResourceState="COPY_DEST" Init="FromBytes" Format="R32_FLOAT">
  14. {.125f, .25f, .5f, 1.0f},
  15. {2.0f, 4.0f, 16.0f, 32.0f},
  16. {32.0f, 64.0f, 128.0f, 256.0f},
  17. {256.0f, 512.0f, 1024.0f, 2048.0f}
  18. </Resource>
  19. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="64" Height="64" Format="R32G32B32A32_FLOAT" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  20. <RootValues>
  21. <RootValue HeapName="ResHeap" />
  22. </RootValues>
  23. <DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
  24. <Descriptor Name='T0' Kind='SRV' ResName='T0' />
  25. </DescriptorHeap>
  26. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  27. <Descriptor Name="RTarget" Kind="RTV"/>
  28. </DescriptorHeap>
  29. <InputElements>
  30. <InputElement SemanticName="POSITION" Format="R32G32B32_FLOAT" AlignedByteOffset="0" />
  31. <InputElement SemanticName="TEXCOORD" Format="R32G32_FLOAT" AlignedByteOffset="12" />
  32. </InputElements>
  33. <RenderTargets>
  34. <RenderTarget Name="RTarget"/>
  35. </RenderTargets>
  36. <Shader Name="VS" Target="vs_6_0">
  37. <![CDATA[
  38. struct PSInput {
  39. float4 position : SV_POSITION;
  40. float2 uv : TEXCOORD;
  41. };
  42. PSInput main(float3 position : POSITION, float2 uv : TEXCOORD) {
  43. PSInput result;
  44. result.position = float4(position, 1.0);
  45. result.uv = uv;
  46. return result;
  47. }
  48. ]]>
  49. </Shader>
  50. <Shader Name="PS" Target="ps_6_0">
  51. <![CDATA[
  52. struct PSInput {
  53. float4 position : SV_POSITION;
  54. float2 uv : TEXCOORD;
  55. };
  56. Texture2D<float> g_tex : register(t0);
  57. float4 main(PSInput input) : SV_TARGET {
  58. int3 offset = int3((input.uv * 64.0) % 4, 0);
  59. float val = g_tex.Load(offset);
  60. return float4(ddx_fine(val), ddy_fine(val), ddx_coarse(val), ddy_coarse(val));
  61. }
  62. ]]>
  63. </Shader>
  64. </ShaderOp>
  65. <ShaderOp Name="WriteFloat4" CS="CS" DispatchX="8" DispatchY="8">
  66. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  67. <Resource Name="Buffer" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" Init="Zero" ReadBack="true" TransitionTo="UNORDERED_ACCESS" />
  68. <RootValues>
  69. <RootValue Index="0" ResName="Buffer" />
  70. </RootValues>
  71. <Shader Name="CS" Target="cs_6_0">
  72. <![CDATA[
  73. RWStructuredBuffer<float4> g_buf : register(u0);
  74. [numthreads(8,8,1)]
  75. void main(uint GI : SV_GroupIndex) {
  76. g_buf[GI] = GI;
  77. };
  78. ]]>
  79. </Shader>
  80. </ShaderOp>
  81. <ShaderOp Name="OOB" PS="PS" VS="VS">
  82. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), CBV(b0), DescriptorTable(SRV(t0,numDescriptors=2))</RootSignature>
  83. <Resource Name="CB0" Dimension="BUFFER" InitialResourceState="COPY_DEST" Init="FromBytes" TransitionTo="VERTEX_AND_CONSTANT_BUFFER">
  84. 1.0f, 0.0f, 100.0f
  85. </Resource>
  86. <Resource Name="T0" Dimension="TEXTURE1D" InitialResourceState="COPY_DEST" Init="FromBytes" Format="R32_FLOAT">
  87. 1.0f, 0.5f, 1.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f
  88. </Resource>
  89. <Resource Name='VBuffer' Dimension='BUFFER' Flags='ALLOW_UNORDERED_ACCESS' InitialResourceState='COPY_DEST' Init='FromBytes'>
  90. 1.0f 1.0f 0, 1.0f -1.0f 0.0f, -1.0f -1.0f 0,
  91. -1.0f 1.0f 0, 1.0f 1.0f 0.0f, -1.0f -1.0f 0,
  92. </Resource>
  93. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="320" Height="200" Format="R8G8B8A8_UNORM" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  94. <RootValues>
  95. <RootValue ResName="CB0" />
  96. <RootValue HeapName="ResHeap" />
  97. </RootValues>
  98. <DescriptorHeap Name='ResHeap' Type='CBV_SRV_UAV'>
  99. <Descriptor Name='T0' Kind='SRV' ResName='T0' />
  100. </DescriptorHeap>
  101. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  102. <Descriptor Name="RTarget" Kind="RTV"/>
  103. </DescriptorHeap>
  104. <InputElements>
  105. <InputElement SemanticName='POSITION' Format='R32G32B32_FLOAT' AlignedByteOffset='0' />
  106. </InputElements>
  107. <RenderTargets>
  108. <RenderTarget Name="RTarget" />
  109. </RenderTargets>
  110. <Shader Name='VS' Target='vs_6_0' EntryPoint='VSMain' Text="@PS" />
  111. <Shader Name='PS' Target='ps_6_0' EntryPoint='PSMain'>
  112. <![CDATA[
  113. // Resources that are not local scalars (and thus are bound):
  114. // - array in cbuffer
  115. // - array in local
  116. // - array in groupshared
  117. // - array in signature element
  118. // - resource access operations:
  119. // - sampling
  120. // - loading
  121. // - storing
  122. //
  123. // In all cases, for HLSL, out-of-bound reads yield zero, and
  124. // out-of-bound writes are no-ops.
  125. cbuffer C {
  126. float c_arr;
  127. float zero_idx;
  128. float oob_idx;
  129. };
  130. Texture1D<float> g_t1d: register(t0);
  131. struct PSInput {
  132. float4 position : SV_POSITION;
  133. };
  134. PSInput VSMain(float4 position: POSITION) {
  135. PSInput result;
  136. result.position = position;
  137. return result;
  138. }
  139. float4 PSMain(PSInput input) : SV_TARGET {
  140. float x = input.position.x;
  141. float p0 = g_t1d.Load(zero_idx);
  142. float p1 = g_t1d.Load(oob_idx);
  143. float r = 0;
  144. // every color should be pure red (saturated red channel, zero'ed green channel).
  145. return float4(p0, p1, 0, 1);
  146. }
  147. ]]>
  148. </Shader>
  149. </ShaderOp>
  150. <ShaderOp Name='Saturate' PS='PS' VS='VS'>
  151. <RootSignature>
  152. RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), DescriptorTable(UAV(u0), CBV(b0))
  153. </RootSignature>
  154. <Resource Name='VBuffer' Dimension='BUFFER' Flags='ALLOW_UNORDERED_ACCESS' InitialResourceState='COPY_DEST' Init='FromBytes'>
  155. 1.0f 1.0f 0, 1.0f -1.0f 0.0f, -1.0f -1.0f 0,
  156. -1.0f 1.0f 0, 1.0f 1.0f 0.0f, -1.0f -1.0f 0,
  157. </Resource>
  158. <Resource Name='CB0' Dimension='BUFFER' Width="256" InitialResourceState='COPY_DEST' Init='FromBytes'>
  159. -inf, -1.5f, -denorm, -0, 0, denorm, 1.5f, inf, nan
  160. </Resource>
  161. <Resource Name="U0" Dimension="BUFFER" Width="1280"
  162. Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST"
  163. Init="Zero" ReadBack="true" />
  164. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="64" Height="64" Format="R8G8B8A8_UNORM" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  165. <DescriptorHeap Name='RtvHeap' NumDescriptors='1' Type='RTV'>
  166. <Descriptor Name="RTarget" Kind="RTV"/>
  167. </DescriptorHeap>
  168. <RootValues>
  169. <RootValue HeapName="ResHeap" />
  170. </RootValues>
  171. <DescriptorHeap Name='ResHeap' Type='CBV_SRV_UAV'>
  172. <!-- Create a descriptor for a RWStructuredBuffer. The underlying resource must be of type DXGI_FORMAT_UNKNOWN. -->
  173. <Descriptor Name='U0' Kind='UAV' ResName='U0'
  174. NumElements="320" StructureByteStride="4" />
  175. <Descriptor Name='CB0' Kind='CBV' ResName='CB0' />
  176. </DescriptorHeap>
  177. <InputElements>
  178. <InputElement SemanticName='POSITION' Format='R32G32B32_FLOAT' AlignedByteOffset='0' />
  179. </InputElements>
  180. <RenderTargets>
  181. <RenderTarget Name="RTarget" />
  182. </RenderTargets>
  183. <Shader Name='VS' Target='vs_6_0' EntryPoint='VSMain' Text='@PS'/>
  184. <Shader Name='PS' Target='ps_6_0' EntryPoint='PSMain'>
  185. <![CDATA[
  186. struct c_floats_t {
  187. float c_neg_inf;
  188. float c_neg_f;
  189. float c_neg_denorm;
  190. float c_neg_zero;
  191. float c_zero;
  192. float c_denorm;
  193. float c_f;
  194. float c_inf;
  195. float c_nan;
  196. };
  197. RWStructuredBuffer<float> g_buf : register(u0);
  198. c_floats_t g_cf : register(b0);
  199. struct PSInput {
  200. float4 position : SV_POSITION;
  201. float4 color : COLOR;
  202. };
  203. PSInput VSMain(float4 position: POSITION) {
  204. PSInput result;
  205. result.position = position;
  206. result.color = 1;
  207. return result;
  208. }
  209. float4 PSMain(PSInput input) : SV_TARGET {
  210. uint x = (uint)input.position.x;
  211. float val;
  212. switch (x) {
  213. case 0: val = saturate(g_cf.c_neg_inf); break;
  214. case 1: val = saturate(g_cf.c_neg_f); break;
  215. case 2: val = saturate(g_cf.c_neg_denorm); break;
  216. case 3: val = saturate(g_cf.c_neg_zero); break;
  217. case 4: val = saturate(g_cf.c_zero); break;
  218. case 5: val = saturate(g_cf.c_denorm); break;
  219. case 6: val = saturate(g_cf.c_f); break;
  220. case 7: val = saturate(g_cf.c_inf); break;
  221. case 8: val = saturate(g_cf.c_nan); break;
  222. default: val = x; break;
  223. }
  224. g_buf[x] = val;
  225. float r = 1;
  226. return float4(r, 0, 0, 1);
  227. }]]>
  228. </Shader>
  229. </ShaderOp>
  230. <ShaderOp Name="UnaryFPOp" CS="CS" DispatchX="8" DispatchY="8">
  231. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  232. <Resource Name="SUnaryFPOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  233. <RootValues>
  234. <RootValue Index="0" ResName="SUnaryFPOp" />
  235. </RootValues>
  236. <Shader Name="CS" Target="cs_6_0">
  237. <![CDATA[
  238. void main(uint GI : SV_GroupIndex) {};
  239. ]]>
  240. </Shader>
  241. </ShaderOp>
  242. <ShaderOp Name="BinaryFPOp" CS="CS" DispatchX="8" DispatchY="8">
  243. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  244. <Resource Name="SBinaryFPOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  245. <RootValues>
  246. <RootValue Index="0" ResName="SBinaryFPOp" />
  247. </RootValues>
  248. <Shader Name="CS" Target="cs_6_0">
  249. <![CDATA[
  250. void main(uint GI : SV_GroupIndex) {};
  251. ]]>
  252. </Shader>
  253. </ShaderOp>
  254. <ShaderOp Name="UnaryIntOp" CS="CS" DispatchX="8" DispatchY="8">
  255. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  256. <Resource Name="SUnaryIntOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  257. <RootValues>
  258. <RootValue Index="0" ResName="SUnaryIntOp" />
  259. </RootValues>
  260. <Shader Name="CS" Target="cs_6_0">
  261. <![CDATA[
  262. void main(uint GI : SV_GroupIndex) {};
  263. ]]>
  264. </Shader>
  265. </ShaderOp>
  266. <ShaderOp Name="UnaryUintOp" CS="CS" DispatchX="8" DispatchY="8">
  267. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  268. <Resource Name="SUnaryUintOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  269. <RootValues>
  270. <RootValue Index="0" ResName="SUnaryUintOp" />
  271. </RootValues>
  272. <Shader Name="CS" Target="cs_6_0">
  273. <![CDATA[
  274. void main(uint GI : SV_GroupIndex) {};
  275. ]]>
  276. </Shader>
  277. </ShaderOp>
  278. <ShaderOp Name="BinaryIntOp" CS="CS" DispatchX="8" DispatchY="8">
  279. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  280. <Resource Name="SBinaryIntOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  281. <RootValues>
  282. <RootValue Index="0" ResName="SBinaryIntOp" />
  283. </RootValues>
  284. <Shader Name="CS" Target="cs_6_0">
  285. <![CDATA[
  286. void main(uint GI : SV_GroupIndex) {};
  287. ]]>
  288. </Shader>
  289. </ShaderOp>
  290. <ShaderOp Name="BinaryUintOp" CS="CS" DispatchX="8" DispatchY="8">
  291. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  292. <Resource Name="SBinaryUintOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  293. <RootValues>
  294. <RootValue Index="0" ResName="SBinaryUintOp" />
  295. </RootValues>
  296. <Shader Name="CS" Target="cs_6_0">
  297. <![CDATA[
  298. void main(uint GI : SV_GroupIndex) {};
  299. ]]>
  300. </Shader>
  301. </ShaderOp>
  302. <ShaderOp Name="TertiaryFPOp" CS="CS" DispatchX="8" DispatchY="8">
  303. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  304. <Resource Name="STertiaryFPOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  305. <RootValues>
  306. <RootValue Index="0" ResName="STertiaryFPOp" />
  307. </RootValues>
  308. <Shader Name="CS" Target="cs_6_0">
  309. <![CDATA[
  310. void main(uint GI : SV_GroupIndex) {};
  311. ]]>
  312. </Shader>
  313. </ShaderOp>
  314. <ShaderOp Name="TertiaryIntOp" CS="CS" DispatchX="8" DispatchY="8">
  315. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  316. <Resource Name="STertiaryIntOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  317. <RootValues>
  318. <RootValue Index="0" ResName="STertiaryIntOp" />
  319. </RootValues>
  320. <Shader Name="CS" Target="cs_6_0">
  321. <![CDATA[
  322. void main(uint GI : SV_GroupIndex) {};
  323. ]]>
  324. </Shader>
  325. </ShaderOp>
  326. <ShaderOp Name="TertiaryUintOp" CS="CS" DispatchX="8" DispatchY="8">
  327. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  328. <Resource Name="STertiaryUintOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  329. <RootValues>
  330. <RootValue Index="0" ResName="STertiaryUintOp" />
  331. </RootValues>
  332. <Shader Name="CS" Target="cs_6_0">
  333. <![CDATA[
  334. void main(uint GI : SV_GroupIndex) {};
  335. ]]>
  336. </Shader>
  337. </ShaderOp>
  338. <ShaderOp Name="DotOp" CS="CS" DispatchX="8" DispatchY="8">
  339. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  340. <Resource Name="SDotOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  341. <RootValues>
  342. <RootValue Index="0" ResName="SDotOp" />
  343. </RootValues>
  344. <Shader Name="CS" Target="cs_6_0">
  345. <![CDATA[
  346. void main(uint GI : SV_GroupIndex) {};
  347. ]]>
  348. </Shader>
  349. </ShaderOp>
  350. <ShaderOp Name="Dot2AddHalfOp" CS="CS" DispatchX="8" DispatchY="8">
  351. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  352. <Resource Name="SDot2AddHalfOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  353. <RootValues>
  354. <RootValue Index="0" ResName="SDot2AddHalfOp" />
  355. </RootValues>
  356. <Shader Name="CS" Target="cs_6_4">
  357. <![CDATA[
  358. void main(uint GI : SV_GroupIndex) {};
  359. ]]>
  360. </Shader>
  361. </ShaderOp>
  362. <ShaderOp Name="Dot4AddI8PackedOp" CS="CS" DispatchX="8" DispatchY="8">
  363. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  364. <Resource Name="SDot4AddI8PackedOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  365. <RootValues>
  366. <RootValue Index="0" ResName="SDot4AddI8PackedOp" />
  367. </RootValues>
  368. <Shader Name="CS" Target="cs_6_4">
  369. <![CDATA[
  370. void main(uint GI : SV_GroupIndex) {};
  371. ]]>
  372. </Shader>
  373. </ShaderOp>
  374. <ShaderOp Name="Dot4AddU8PackedOp" CS="CS" DispatchX="8" DispatchY="8">
  375. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  376. <Resource Name="SDot4AddU8PackedOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  377. <RootValues>
  378. <RootValue Index="0" ResName="SDot4AddU8PackedOp" />
  379. </RootValues>
  380. <Shader Name="CS" Target="cs_6_4">
  381. <![CDATA[
  382. void main(uint GI : SV_GroupIndex) {};
  383. ]]>
  384. </Shader>
  385. </ShaderOp>
  386. <ShaderOp Name="Msad4" CS="CS" DispatchX="8" DispatchY="8">
  387. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  388. <Resource Name="SMsad4" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  389. <RootValues>
  390. <RootValue Index="0" ResName="SMsad4"/>
  391. </RootValues>
  392. <Shader Name="CS" Target="cs_6_0">
  393. <![CDATA[
  394. void main(uint GI : SV_GroupIndex) {};
  395. ]]>
  396. </Shader>
  397. </ShaderOp>
  398. <ShaderOp Name="WaveIntrinsicsOp" CS="CS" DispatchX="1" DispatchY="1">
  399. <RootSignature>RootFlags(0), UAV(u0)</RootSignature>
  400. <Resource Name="SWaveIntrinsicsOp" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  401. <RootValues>
  402. <RootValue Index="0" ResName="SWaveIntrinsicsOp"/>
  403. </RootValues>
  404. <Shader Name="CS" Target="cs_6_0">
  405. <![CDATA[
  406. void main(uint GI : SV_GroupIndex) {};
  407. ]]>
  408. </Shader>
  409. </ShaderOp>
  410. <ShaderOp Name="Triangle" PS="PS" VS="VS">
  411. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT)</RootSignature>
  412. <Resource Name="VBuffer" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" Init="FromBytes">
  413. { { 0.0f, 0.25f , 0.0f }, { 1.0f, 0.0f, 0.0f, 1.0f } },
  414. { { 0.25f, -0.25f , 0.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } },
  415. { { -0.25f, -0.25f , 0.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } }
  416. </Resource>
  417. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="320" Height="200" Format="R8G8B8A8_UNORM" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  418. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  419. <Descriptor Name="RTarget" Kind="RTV"/>
  420. </DescriptorHeap>
  421. <InputElements>
  422. <InputElement SemanticName="POSITION" Format="R32G32B32_FLOAT" AlignedByteOffset="0" />
  423. <InputElement SemanticName="COLOR" Format="R32G32B32A32_FLOAT" AlignedByteOffset="12" />
  424. </InputElements>
  425. <RenderTargets>
  426. <RenderTarget Name="RTarget" />
  427. </RenderTargets>
  428. <Shader Name="VS" Target="vs_6_0">
  429. <![CDATA[
  430. struct PSInput {
  431. float4 position : SV_POSITION;
  432. float4 color : COLOR;
  433. };
  434. PSInput main(float4 position : POSITION, float4 color : COLOR) {
  435. PSInput result;
  436. float ratio = 320.0 / 200.0;
  437. result.position = position;
  438. result.position.y *= ratio;
  439. result.color = color;
  440. return result;
  441. }
  442. ]]>
  443. </Shader>
  444. <Shader Name="PS" Target="ps_6_0">
  445. <![CDATA[
  446. struct PSInput {
  447. float4 position : SV_POSITION;
  448. float4 color : COLOR;
  449. };
  450. float4 main(PSInput input) : SV_TARGET {
  451. return 1;
  452. }
  453. ]]>
  454. </Shader>
  455. </ShaderOp>
  456. <ShaderOp Name="TriangleHalf" PS="PS" VS="VS">
  457. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT)</RootSignature>
  458. <Resource Name="VBuffer" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" Init="FromBytes">
  459. { { 0.0h, 0.25h , 0.0h, 1.0h }, { 1.0h, 1.0h, 1.0h, 1.0h } },
  460. { { 0.25h, -0.25h , 0.0h, 1.0h }, { 1.0h, 1.0h, 1.0h, 1.0h } },
  461. { { -0.25h, -0.25h , 0.0h, 1.0h }, { 1.0h, 1.0h, 1.0h, 1.0h } }
  462. </Resource>
  463. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="320" Height="200" Format="R8G8B8A8_UNORM" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  464. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  465. <Descriptor Name="RTarget" Kind="RTV"/>
  466. </DescriptorHeap>
  467. <InputElements>
  468. <InputElement SemanticName="POSITION" Format="R16G16B16A16_FLOAT" AlignedByteOffset="0" />
  469. <InputElement SemanticName="COLOR" Format="R16G16B16A16_FLOAT" AlignedByteOffset="8" />
  470. </InputElements>
  471. <RenderTargets>
  472. <RenderTarget Name="RTarget" />
  473. </RenderTargets>
  474. <Shader Name="VS" Target="vs_6_2" Arguments="/enable-16bit-types">
  475. <![CDATA[
  476. struct PSInput {
  477. half4 position : SV_POSITION;
  478. half4 color : COLOR;
  479. };
  480. PSInput main(half4 position : POSITION, half4 color : COLOR) {
  481. PSInput result;
  482. float ratio = 320.0 / 200.0;
  483. result.position = position;
  484. result.position.y *= ratio;
  485. result.color = color;
  486. return result;
  487. }
  488. ]]>
  489. </Shader>
  490. <Shader Name="PS" Target="ps_6_2" Arguments="/enable-16bit-types">
  491. <![CDATA[
  492. struct PSInput {
  493. half4 position : SV_POSITION;
  494. half4 color : COLOR;
  495. };
  496. half4 main(PSInput input) : SV_TARGET {
  497. return input.color;
  498. }
  499. ]]>
  500. </Shader>
  501. </ShaderOp>
  502. <ShaderOp Name="CBufferTestHalf" PS="PS" VS="VS" TopologyType="TRIANGLE">
  503. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), CBV(b0), DescriptorTable(SRV(t0,numDescriptors=2))</RootSignature>
  504. <Resource Name="CB0" Dimension="BUFFER" InitialResourceState="COPY_DEST" Init="ByName" TransitionTo="VERTEX_AND_CONSTANT_BUFFER">
  505. 1.25h, 1.75h, 1.25h, 1.875h
  506. </Resource>
  507. <Resource Name='VBuffer' Dimension='BUFFER' Flags='ALLOW_UNORDERED_ACCESS' InitialResourceState='COPY_DEST' Init='FromBytes'>
  508. 1.0f 1.0f 0, 1.0f -1.0f 0.0f, -1.0f -1.0f 0,
  509. -1.0f 1.0f 0, 1.0f 1.0f 0.0f, -1.0f -1.0f 0,
  510. </Resource>
  511. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="320" Height="200" Format="R16G16B16A16_FLOAT" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  512. <RootValues>
  513. <RootValue ResName="CB0" />
  514. </RootValues>
  515. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  516. <Descriptor Name="RTarget" Kind="RTV"/>
  517. </DescriptorHeap>
  518. <InputElements>
  519. <InputElement SemanticName='POSITION' Format='R32G32B32_FLOAT' AlignedByteOffset='0' />
  520. </InputElements>
  521. <RenderTargets>
  522. <RenderTarget Name="RTarget" />
  523. </RenderTargets>
  524. <Shader Name='VS' Target='vs_6_2' EntryPoint='VSMain' Arguments='-enable-16bit-types' Text="@PS" />
  525. <Shader Name='PS' Target='ps_6_2' EntryPoint='PSMain' Arguments='-enable-16bit-types'>
  526. <![CDATA[
  527. cbuffer c_buf {
  528. half first;
  529. half second;
  530. half third;
  531. half fourth;
  532. };
  533. struct PSInput {
  534. float4 position : SV_POSITION;
  535. };
  536. PSInput VSMain(float4 position: POSITION) {
  537. PSInput result;
  538. result.position = position;
  539. return result;
  540. }
  541. half4 PSMain(PSInput input) : SV_TARGET {
  542. return half4(first, second, third, fourth);
  543. }
  544. ]]>
  545. </Shader>
  546. </ShaderOp>
  547. <ShaderOp Name="Barycentrics" PS="PS" VS="VS">
  548. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT)</RootSignature>
  549. <Resource Name="VBuffer" Dimension="BUFFER" Width="1024" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" Init="FromBytes" ReadBack="true">
  550. { { 0.0f, 1.0f , 0.0f }, { 1.0f, 0.0f, 0.0f, 1.0f } },
  551. { { 1.0f, -1.0f , 0.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } },
  552. { { -1.0f, -1.0f , 0.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } }
  553. </Resource>
  554. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="5120" Height="9600" Format="R32G32B32A32_FLOAT" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  555. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  556. <Descriptor Name="RTarget" Kind="RTV"/>
  557. </DescriptorHeap>
  558. <InputElements>
  559. <InputElement SemanticName="POSITION" Format="R32G32B32_FLOAT" AlignedByteOffset="0" />
  560. <InputElement SemanticName="COLOR" Format="R32G32B32A32_FLOAT" AlignedByteOffset="12" />
  561. </InputElements>
  562. <RenderTargets>
  563. <RenderTarget Name="RTarget" />
  564. </RenderTargets>
  565. <Shader Name="VS" Target="vs_6_1">
  566. <![CDATA[
  567. struct PSInput {
  568. float4 position : SV_POSITION;
  569. nointerpolation float4 color : COLOR;
  570. };
  571. PSInput main(float4 position : POSITION, float4 color : COLOR) {
  572. PSInput result;
  573. result.position = position;
  574. result.color = color;
  575. return result;
  576. }
  577. ]]>
  578. </Shader>
  579. <Shader Name="PS" Target="ps_6_1">
  580. <![CDATA[
  581. struct PSInput {
  582. float4 position : SV_POSITION;
  583. nointerpolation float4 color : COLOR;
  584. };
  585. float4 main(PSInput input, float3 bary : SV_Barycentrics) : SV_Target {
  586. float4 vColor0 = GetAttributeAtVertex(input.color, 0);
  587. float4 vColor1 = GetAttributeAtVertex(input.color, 1);
  588. float4 vColor2 = GetAttributeAtVertex(input.color, 2);
  589. return bary.x * vColor0 + bary.y * vColor1 + bary.z * vColor2;
  590. }
  591. ]]>
  592. </Shader>
  593. </ShaderOp>
  594. <ShaderOp Name="ComputeRawBufferLdSt32Bit" CS="CS">
  595. <RootSignature>RootFlags(0), SRV(t0), SRV(t1), UAV(u0), UAV(u1), DescriptorTable(SRV(t2,numDescriptors=2), UAV(u2,numDescriptors=2))</RootSignature>
  596. <Resource Name="SRVBuffer0" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  597. <Resource Name="SRVBuffer1" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" />
  598. <Resource Name="SRVBuffer2" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  599. <Resource Name="SRVBuffer3" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" />
  600. <Resource Name="UAVBuffer0" Dimension="BUFFER" Width="120" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" Format="R32_TYPELESS" />
  601. <Resource Name="UAVBuffer1" Dimension="BUFFER" Width="120" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" />
  602. <Resource Name="UAVBuffer2" Dimension="BUFFER" Width="120" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" Format="R32_TYPELESS" />
  603. <Resource Name="UAVBuffer3" Dimension="BUFFER" Width="120" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" />
  604. <RootValues>
  605. <RootValue Index="0" ResName="SRVBuffer0" />
  606. <RootValue Index="1" ResName="SRVBuffer1" />
  607. <RootValue Index="2" ResName="UAVBuffer0" />
  608. <RootValue Index="3" ResName="UAVBuffer1" />
  609. <RootValue Index="4" HeapName="ResHeap" />
  610. </RootValues>
  611. <DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
  612. <Descriptor Name='SRVBuffer2' Kind='SRV' ResName='SRVBuffer2' Flags='RAW' NumElements="10" Format="R32_TYPELESS" />
  613. <Descriptor Name='SRVBuffer3' Kind='SRV' ResName='SRVBuffer3' NumElements="1" StructureByteStride="40" />
  614. <Descriptor Name='UAVBuffer2' Kind='UAV' ResName='UAVBuffer2' Flags='RAW' NumElements="30" Format="R32_TYPELESS" />
  615. <Descriptor Name='UAVBuffer3' Kind='UAV' ResName='UAVBuffer3' NumElements="1" StructureByteStride="120" />
  616. </DescriptorHeap>
  617. <Shader Name="CS" Target="cs_6_2">
  618. <![CDATA[// Shader source code will be set at runtime]]>
  619. </Shader>
  620. </ShaderOp>>
  621. <ShaderOp Name="ComputeRawBufferLdSt64Bit" CS="CS">
  622. <RootSignature>RootFlags(0), SRV(t0), SRV(t1), UAV(u0), UAV(u1), DescriptorTable(SRV(t2,numDescriptors=2), UAV(u2,numDescriptors=2))</RootSignature>
  623. <Resource Name="SRVBuffer0" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  624. <Resource Name="SRVBuffer1" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" />
  625. <Resource Name="SRVBuffer2" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  626. <Resource Name="SRVBuffer3" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" />
  627. <Resource Name="UAVBuffer0" Dimension="BUFFER" Width="240" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" Format="R32_TYPELESS" />
  628. <Resource Name="UAVBuffer1" Dimension="BUFFER" Width="240" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" />
  629. <Resource Name="UAVBuffer2" Dimension="BUFFER" Width="240" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" Format="R32_TYPELESS" />
  630. <Resource Name="UAVBuffer3" Dimension="BUFFER" Width="240" InitialResourceState="COPY_DEST" Init="ByName" Flags="ALLOW_UNORDERED_ACCESS" TransitionTo="UNORDERED_ACCESS" ReadBack="true" />
  631. <RootValues>
  632. <RootValue Index="0" ResName="SRVBuffer0" />
  633. <RootValue Index="1" ResName="SRVBuffer1" />
  634. <RootValue Index="2" ResName="UAVBuffer0" />
  635. <RootValue Index="3" ResName="UAVBuffer1" />
  636. <RootValue Index="4" HeapName="ResHeap" />
  637. </RootValues>
  638. <DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
  639. <Descriptor Name='SRVBuffer2' Kind='SRV' ResName='SRVBuffer2' Flags='RAW' NumElements="20" Format="R32_TYPELESS" />
  640. <Descriptor Name='SRVBuffer3' Kind='SRV' ResName='SRVBuffer3' NumElements="1" StructureByteStride="80" />
  641. <Descriptor Name='UAVBuffer2' Kind='UAV' ResName='UAVBuffer2' Flags='RAW' NumElements="60" Format="R32_TYPELESS" />
  642. <Descriptor Name='UAVBuffer3' Kind='UAV' ResName='UAVBuffer3' NumElements="1" StructureByteStride="240" />
  643. </DescriptorHeap>
  644. <Shader Name="CS" Target="cs_6_2">
  645. <![CDATA[// Shader source code will be set at runtime]]>
  646. </Shader>
  647. </ShaderOp>>
  648. <ShaderOp Name="ComputeRawBufferLdSt16Bit" CS="CS">
  649. <RootSignature>RootFlags(0), SRV(t0), SRV(t1), UAV(u0), UAV(u1), DescriptorTable(SRV(t2,numDescriptors=2), UAV(u2,numDescriptors=2))</RootSignature>
  650. <Resource Name="SRVBuffer0" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  651. <Resource Name="SRVBuffer1" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" />
  652. <Resource Name="SRVBuffer2" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  653. <Resource Name="SRVBuffer3" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" />
  654. <Resource Name="UAVBuffer0" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  655. <Resource Name="UAVBuffer1" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  656. <Resource Name="UAVBuffer2" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  657. <Resource Name="UAVBuffer3" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  658. <RootValues>
  659. <RootValue Index="0" ResName="SRVBuffer0" />
  660. <RootValue Index="1" ResName="SRVBuffer1" />
  661. <RootValue Index="2" ResName="UAVBuffer0" />
  662. <RootValue Index="3" ResName="UAVBuffer1" />
  663. <RootValue Index="4" HeapName="ResHeap" />
  664. </RootValues>
  665. <DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
  666. <Descriptor Name='SRVBuffer2' Kind='SRV' ResName='SRVBuffer2' Flags='RAW' NumElements="5" Format="R32_TYPELESS" />
  667. <Descriptor Name='SRVBuffer3' Kind='SRV' ResName='SRVBuffer3' NumElements="1" StructureByteStride="20" />
  668. <Descriptor Name='UAVBuffer2' Kind='UAV' ResName='UAVBuffer2' Flags='RAW' NumElements="15" Format="R32_TYPELESS" />
  669. <Descriptor Name='UAVBuffer3' Kind='UAV' ResName='UAVBuffer3' NumElements="1" StructureByteStride="60" />
  670. </DescriptorHeap>
  671. <Shader Name="CS" Target="cs_6_2">
  672. <![CDATA[// Shader source code will be set at runtime]]>
  673. </Shader>
  674. </ShaderOp>>
  675. <ShaderOp Name="GraphicsRawBufferLdSt32Bit" PS="PS" VS="VS">
  676. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), SRV(t0), SRV(t1), UAV(u0), UAV(u1), DescriptorTable(SRV(t2,numDescriptors=2), UAV(u2,numDescriptors=2))</RootSignature>
  677. <Resource Name="SRVBuffer0" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  678. <Resource Name="SRVBuffer1" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" />
  679. <Resource Name="SRVBuffer2" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  680. <Resource Name="SRVBuffer3" Dimension="BUFFER" Width="40" InitialResourceState="COPY_DEST" Init="ByName" />
  681. <Resource Name="UAVBuffer0" Dimension="BUFFER" Width="120" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  682. <Resource Name="UAVBuffer1" Dimension="BUFFER" Width="120" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  683. <Resource Name="UAVBuffer2" Dimension="BUFFER" Width="120" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  684. <Resource Name="UAVBuffer3" Dimension="BUFFER" Width="120" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  685. <Resource Name="VBuffer" Dimension="BUFFER" InitialResourceState="COPY_DEST" Init="FromBytes" Topology="TRIANGLELIST">
  686. { { -1.0f, 1.0f, 0.0f } },
  687. { { 1.0f, 1.0f, 0.0f } },
  688. { { -1.0f, -1.0f, 0.0f } },
  689. { { -1.0f, -1.0f, 0.0f } },
  690. { { 1.0f, 1.0f, 0.0f } },
  691. { { 1.0f, -1.0f, 0.0f } }
  692. </Resource>
  693. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="16" Height="16" Format="R32G32B32A32_UINT" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  694. <RootValues>
  695. <RootValue Index="0" ResName="SRVBuffer0" />
  696. <RootValue Index="1" ResName="SRVBuffer1" />
  697. <RootValue Index="2" ResName="UAVBuffer0" />
  698. <RootValue Index="3" ResName="UAVBuffer1" />
  699. <RootValue Index="4" HeapName="ResHeap" />
  700. </RootValues>
  701. <DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
  702. <Descriptor Name='SRVBuffer2' Kind='SRV' ResName='SRVBuffer2' Flags='RAW' NumElements="10" Format="R32_TYPELESS" />
  703. <Descriptor Name='SRVBuffer3' Kind='SRV' ResName='SRVBuffer3' NumElements="1" StructureByteStride="40" />
  704. <Descriptor Name='UAVBuffer2' Kind='UAV' ResName='UAVBuffer2' Flags='RAW' NumElements="30" Format="R32_TYPELESS" />
  705. <Descriptor Name='UAVBuffer3' Kind='UAV' ResName='UAVBuffer3' NumElements="1" StructureByteStride="120" />
  706. </DescriptorHeap>
  707. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  708. <Descriptor Name="RTarget" Kind="RTV"/>
  709. </DescriptorHeap>
  710. <InputElements>
  711. <InputElement SemanticName="POSITION" Format="R32G32B32_FLOAT" AlignedByteOffset="0" />
  712. </InputElements>
  713. <RenderTargets>
  714. <RenderTarget Name="RTarget"/>
  715. </RenderTargets>
  716. <Shader Name="VS" Target="vs_6_2">
  717. <![CDATA[
  718. struct PSInput {
  719. float4 pos : SV_POSITION;
  720. };
  721. PSInput main(float3 pos : POSITION) {
  722. PSInput r;
  723. r.pos = float4(pos, 1);
  724. return r;
  725. }
  726. ]]>
  727. </Shader>
  728. <Shader Name="PS" Target="ps_6_2">
  729. <![CDATA[// Shader source code will be set at runtime]]>
  730. </Shader>
  731. </ShaderOp>
  732. <ShaderOp Name="GraphicsRawBufferLdSt64Bit" PS="PS" VS="VS">
  733. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), SRV(t0), SRV(t1), UAV(u0), UAV(u1), DescriptorTable(SRV(t2,numDescriptors=2), UAV(u2,numDescriptors=2))</RootSignature>
  734. <Resource Name="SRVBuffer0" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  735. <Resource Name="SRVBuffer1" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" />
  736. <Resource Name="SRVBuffer2" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  737. <Resource Name="SRVBuffer3" Dimension="BUFFER" Width="80" InitialResourceState="COPY_DEST" Init="ByName" />
  738. <Resource Name="UAVBuffer0" Dimension="BUFFER" Width="240" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  739. <Resource Name="UAVBuffer1" Dimension="BUFFER" Width="240" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  740. <Resource Name="UAVBuffer2" Dimension="BUFFER" Width="240" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  741. <Resource Name="UAVBuffer3" Dimension="BUFFER" Width="240" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  742. <Resource Name="VBuffer" Dimension="BUFFER" InitialResourceState="COPY_DEST" Init="FromBytes" Topology="TRIANGLELIST">
  743. { { -1.0f, 1.0f, 0.0f } },
  744. { { 1.0f, 1.0f, 0.0f } },
  745. { { -1.0f, -1.0f, 0.0f } },
  746. { { -1.0f, -1.0f, 0.0f } },
  747. { { 1.0f, 1.0f, 0.0f } },
  748. { { 1.0f, -1.0f, 0.0f } }
  749. </Resource>
  750. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="16" Height="16" Format="R32G32B32A32_UINT" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  751. <RootValues>
  752. <RootValue Index="0" ResName="SRVBuffer0" />
  753. <RootValue Index="1" ResName="SRVBuffer1" />
  754. <RootValue Index="2" ResName="UAVBuffer0" />
  755. <RootValue Index="3" ResName="UAVBuffer1" />
  756. <RootValue Index="4" HeapName="ResHeap" />
  757. </RootValues>
  758. <DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
  759. <Descriptor Name='SRVBuffer2' Kind='SRV' ResName='SRVBuffer2' Flags='RAW' NumElements="20" Format="R32_TYPELESS" />
  760. <Descriptor Name='SRVBuffer3' Kind='SRV' ResName='SRVBuffer3' NumElements="1" StructureByteStride="80" />
  761. <Descriptor Name='UAVBuffer2' Kind='UAV' ResName='UAVBuffer2' Flags='RAW' NumElements="60" Format="R32_TYPELESS" />
  762. <Descriptor Name='UAVBuffer3' Kind='UAV' ResName='UAVBuffer3' NumElements="1" StructureByteStride="240" />
  763. </DescriptorHeap>
  764. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  765. <Descriptor Name="RTarget" Kind="RTV"/>
  766. </DescriptorHeap>
  767. <InputElements>
  768. <InputElement SemanticName="POSITION" Format="R32G32B32_FLOAT" AlignedByteOffset="0" />
  769. </InputElements>
  770. <RenderTargets>
  771. <RenderTarget Name="RTarget"/>
  772. </RenderTargets>
  773. <Shader Name="VS" Target="vs_6_2">
  774. <![CDATA[
  775. struct PSInput {
  776. float4 pos : SV_POSITION;
  777. };
  778. PSInput main(float3 pos : POSITION) {
  779. PSInput r;
  780. r.pos = float4(pos, 1);
  781. return r;
  782. }
  783. ]]>
  784. </Shader>
  785. <Shader Name="PS" Target="ps_6_2">
  786. <![CDATA[// Shader source code will be set at runtime]]>
  787. </Shader>
  788. </ShaderOp>
  789. <ShaderOp Name="GraphicsRawBufferLdSt16Bit" PS="PS" VS="VS">
  790. <RootSignature>RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT), SRV(t0), SRV(t1), UAV(u0), UAV(u1), DescriptorTable(SRV(t2,numDescriptors=2), UAV(u2,numDescriptors=2))</RootSignature>
  791. <Resource Name="SRVBuffer0" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  792. <Resource Name="SRVBuffer1" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" />
  793. <Resource Name="SRVBuffer2" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" Format="R32_TYPELESS"/>
  794. <Resource Name="SRVBuffer3" Dimension="BUFFER" Width="20" InitialResourceState="COPY_DEST" Init="ByName" />
  795. <Resource Name="UAVBuffer0" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  796. <Resource Name="UAVBuffer1" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  797. <Resource Name="UAVBuffer2" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" Format="R32_TYPELESS" />
  798. <Resource Name="UAVBuffer3" Dimension="BUFFER" Width="60" Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST" TransitionTo="UNORDERED_ACCESS" Init="ByName" ReadBack="true" />
  799. <Resource Name="VBuffer" Dimension="BUFFER" InitialResourceState="COPY_DEST" Init="FromBytes" Topology="TRIANGLELIST">
  800. { { -1.0f, 1.0f, 0.0f } },
  801. { { 1.0f, 1.0f, 0.0f } },
  802. { { -1.0f, -1.0f, 0.0f } },
  803. { { -1.0f, -1.0f, 0.0f } },
  804. { { 1.0f, 1.0f, 0.0f } },
  805. { { 1.0f, -1.0f, 0.0f } }
  806. </Resource>
  807. <Resource Name="RTarget" Dimension="TEXTURE2D" Width="16" Height="16" Format="R32G32B32A32_UINT" Flags="ALLOW_RENDER_TARGET" InitialResourceState="COPY_DEST" ReadBack="true" />
  808. <RootValues>
  809. <RootValue Index="0" ResName="SRVBuffer0" />
  810. <RootValue Index="1" ResName="SRVBuffer1" />
  811. <RootValue Index="2" ResName="UAVBuffer0" />
  812. <RootValue Index="3" ResName="UAVBuffer1" />
  813. <RootValue Index="4" HeapName="ResHeap" />
  814. </RootValues>
  815. <DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
  816. <Descriptor Name='SRVBuffer2' Kind='SRV' ResName='SRVBuffer2' Flags='RAW' NumElements="5" Format="R32_TYPELESS" />
  817. <Descriptor Name='SRVBuffer3' Kind='SRV' ResName='SRVBuffer3' NumElements="1" StructureByteStride="20" />
  818. <Descriptor Name='UAVBuffer2' Kind='UAV' ResName='UAVBuffer2' Flags='RAW' NumElements="15" Format="R32_TYPELESS" />
  819. <Descriptor Name='UAVBuffer3' Kind='UAV' ResName='UAVBuffer3' NumElements="1" StructureByteStride="60" />
  820. </DescriptorHeap>
  821. <DescriptorHeap Name="RtvHeap" NumDescriptors="1" Type="RTV">
  822. <Descriptor Name="RTarget" Kind="RTV"/>
  823. </DescriptorHeap>
  824. <InputElements>
  825. <InputElement SemanticName="POSITION" Format="R32G32B32_FLOAT" AlignedByteOffset="0" />
  826. </InputElements>
  827. <RenderTargets>
  828. <RenderTarget Name="RTarget"/>
  829. </RenderTargets>
  830. <Shader Name="VS" Target="vs_6_2">
  831. <![CDATA[
  832. struct PSInput {
  833. float4 pos : SV_POSITION;
  834. };
  835. PSInput main(float3 pos : POSITION) {
  836. PSInput r;
  837. r.pos = float4(pos, 1);
  838. return r;
  839. }
  840. ]]>
  841. </Shader>
  842. <Shader Name="PS" Target="ps_6_2">
  843. <![CDATA[// Shader source code will be set at runtime]]>
  844. </Shader>
  845. </ShaderOp>
  846. <!--
  847. TODO: Dynamically index into tables
  848. -->
  849. </ShaderOpSet>