texture.get-dimensions.hlsl 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. // Run: %dxc -T ps_6_0 -E main
  2. // CHECK: OpCapability ImageQuery
  3. Texture1D <float> t1;
  4. Texture1DArray <float> t2;
  5. Texture2D <float> t3;
  6. Texture2DArray <float> t4;
  7. Texture3D <float> t5;
  8. Texture2DMS <float> t6;
  9. Texture2DMSArray <float> t7;
  10. TextureCube <float> t8;
  11. TextureCubeArray <float> t9;
  12. void main() {
  13. uint mipLevel = 1;
  14. uint width, height, depth, elements, numLevels, numSamples;
  15. // CHECK: [[t1_0:%\d+]] = OpLoad %type_1d_image %t1
  16. // CHECK-NEXT: [[query0:%\d+]] = OpImageQuerySizeLod %uint [[t1_0]] %int_0
  17. // CHECK-NEXT: OpStore %width [[query0]]
  18. t1.GetDimensions(width);
  19. // CHECK: [[t1_1:%\d+]] = OpLoad %type_1d_image %t1
  20. // CHECK-NEXT: [[mip0:%\d+]] = OpLoad %uint %mipLevel
  21. // CHECK-NEXT: [[query1:%\d+]] = OpImageQuerySizeLod %uint [[t1_1]] [[mip0]]
  22. // CHECK-NEXT: OpStore %width [[query1]]
  23. // CHECK-NEXT: [[query2:%\d+]] = OpImageQueryLevels %uint [[t1_1]]
  24. // CHECK-NEXT: OpStore %numLevels [[query2]]
  25. t1.GetDimensions(mipLevel, width, numLevels);
  26. // CHECK: [[t2_0:%\d+]] = OpLoad %type_1d_image_array %t2
  27. // CHECK-NEXT: [[query3:%\d+]] = OpImageQuerySizeLod %v2uint [[t2_0]] %int_0
  28. // CHECK-NEXT: [[query3_0:%\d+]] = OpCompositeExtract %uint [[query3]] 0
  29. // CHECK-NEXT: OpStore %width [[query3_0]]
  30. // CHECK-NEXT: [[query3_1:%\d+]] = OpCompositeExtract %uint [[query3]] 1
  31. // CHECK-NEXT: OpStore %elements [[query3_1]]
  32. t2.GetDimensions(width, elements);
  33. // CHECK: [[t2_1:%\d+]] = OpLoad %type_1d_image_array %t2
  34. // CHECK-NEXT: [[mip1:%\d+]] = OpLoad %uint %mipLevel
  35. // CHECK-NEXT: [[query4:%\d+]] = OpImageQuerySizeLod %v2uint [[t2_1]] [[mip1]]
  36. // CHECK-NEXT: [[query4_0:%\d+]] = OpCompositeExtract %uint [[query4]] 0
  37. // CHECK-NEXT: OpStore %width [[query4_0]]
  38. // CHECK-NEXT: [[query4_1:%\d+]] = OpCompositeExtract %uint [[query4]] 1
  39. // CHECK-NEXT: OpStore %elements [[query4_1]]
  40. // CHECK-NEXT: [[query5:%\d+]] = OpImageQueryLevels %uint [[t2_1]]
  41. // CHECK-NEXT: OpStore %numLevels [[query5]]
  42. t2.GetDimensions(mipLevel, width, elements, numLevels);
  43. // CHECK: [[t3_0:%\d+]] = OpLoad %type_2d_image %t3
  44. // CHECK-NEXT: [[query5:%\d+]] = OpImageQuerySizeLod %v2uint [[t3_0]] %int_0
  45. // CHECK-NEXT: [[query5_0:%\d+]] = OpCompositeExtract %uint [[query5]] 0
  46. // CHECK-NEXT: OpStore %width [[query5_0]]
  47. // CHECK-NEXT: [[query5_1:%\d+]] = OpCompositeExtract %uint [[query5]] 1
  48. // CHECK-NEXT: OpStore %height [[query5_1]]
  49. t3.GetDimensions(width, height);
  50. // CHECK: [[t3_1:%\d+]] = OpLoad %type_2d_image %t3
  51. // CHECK-NEXT: [[mip2:%\d+]] = OpLoad %uint %mipLevel
  52. // CHECK-NEXT: [[query6:%\d+]] = OpImageQuerySizeLod %v2uint [[t3_1]] [[mip2]]
  53. // CHECK-NEXT: [[query6_0:%\d+]] = OpCompositeExtract %uint [[query6]] 0
  54. // CHECK-NEXT: OpStore %width [[query6_0]]
  55. // CHECK-NEXT: [[query6_1:%\d+]] = OpCompositeExtract %uint [[query6]] 1
  56. // CHECK-NEXT: OpStore %height [[query6_1]]
  57. // CHECK-NEXT: [[query7:%\d+]] = OpImageQueryLevels %uint [[t3_1]]
  58. // CHECK-NEXT: OpStore %numLevels [[query7]]
  59. t3.GetDimensions(mipLevel, width, height, numLevels);
  60. // CHECK: [[t4_0:%\d+]] = OpLoad %type_2d_image_array %t4
  61. // CHECK-NEXT: [[query8:%\d+]] = OpImageQuerySizeLod %v3uint [[t4_0]] %int_0
  62. // CHECK-NEXT: [[query8_0:%\d+]] = OpCompositeExtract %uint [[query8]] 0
  63. // CHECK-NEXT: OpStore %width [[query8_0]]
  64. // CHECK-NEXT: [[query8_1:%\d+]] = OpCompositeExtract %uint [[query8]] 1
  65. // CHECK-NEXT: OpStore %height [[query8_1]]
  66. // CHECK-NEXT: [[query8_2:%\d+]] = OpCompositeExtract %uint [[query8]] 2
  67. // CHECK-NEXT: OpStore %elements [[query8_2]]
  68. t4.GetDimensions(width, height, elements);
  69. // CHECK: [[t4_1:%\d+]] = OpLoad %type_2d_image_array %t4
  70. // CHECK-NEXT: [[mip3:%\d+]] = OpLoad %uint %mipLevel
  71. // CHECK-NEXT: [[query9:%\d+]] = OpImageQuerySizeLod %v3uint [[t4_1]] [[mip3]]
  72. // CHECK-NEXT: [[query9_0:%\d+]] = OpCompositeExtract %uint [[query9]] 0
  73. // CHECK-NEXT: OpStore %width [[query9_0]]
  74. // CHECK-NEXT: [[query9_1:%\d+]] = OpCompositeExtract %uint [[query9]] 1
  75. // CHECK-NEXT: OpStore %height [[query9_1]]
  76. // CHECK-NEXT: [[query9_2:%\d+]] = OpCompositeExtract %uint [[query9]] 2
  77. // CHECK-NEXT: OpStore %elements [[query9_2]]
  78. // CHECK-NEXT: [[query10:%\d+]] = OpImageQueryLevels %uint [[t4_1]]
  79. // CHECK-NEXT: OpStore %numLevels [[query10]]
  80. t4.GetDimensions(mipLevel, width, height, elements, numLevels);
  81. // CHECK: [[t5_0:%\d+]] = OpLoad %type_3d_image %t5
  82. // CHECK-NEXT: [[query11:%\d+]] = OpImageQuerySizeLod %v3uint [[t5_0]] %int_0
  83. // CHECK-NEXT: [[query11_0:%\d+]] = OpCompositeExtract %uint [[query11]] 0
  84. // CHECK-NEXT: OpStore %width [[query11_0]]
  85. // CHECK-NEXT: [[query11_1:%\d+]] = OpCompositeExtract %uint [[query11]] 1
  86. // CHECK-NEXT: OpStore %height [[query11_1]]
  87. // CHECK-NEXT: [[query11_2:%\d+]] = OpCompositeExtract %uint [[query11]] 2
  88. // CHECK-NEXT: OpStore %depth [[query11_2]]
  89. t5.GetDimensions(width, height, depth);
  90. // CHECK: [[t5_1:%\d+]] = OpLoad %type_3d_image %t5
  91. // CHECK-NEXT: [[mip4:%\d+]] = OpLoad %uint %mipLevel
  92. // CHECK-NEXT: [[query12:%\d+]] = OpImageQuerySizeLod %v3uint [[t5_1]] [[mip4]]
  93. // CHECK-NEXT: [[query12_0:%\d+]] = OpCompositeExtract %uint [[query12]] 0
  94. // CHECK-NEXT: OpStore %width [[query12_0]]
  95. // CHECK-NEXT: [[query12_1:%\d+]] = OpCompositeExtract %uint [[query12]] 1
  96. // CHECK-NEXT: OpStore %height [[query12_1]]
  97. // CHECK-NEXT: [[query12_2:%\d+]] = OpCompositeExtract %uint [[query12]] 2
  98. // CHECK-NEXT: OpStore %depth [[query12_2]]
  99. // CHECK-NEXT: [[query13:%\d+]] = OpImageQueryLevels %uint [[t5_1]]
  100. // CHECK-NEXT: OpStore %numLevels [[query13]]
  101. t5.GetDimensions(mipLevel, width, height, depth, numLevels);
  102. // CHECK: [[t6:%\d+]] = OpLoad %type_2d_image_0 %t6
  103. // CHECK-NEXT: [[query14:%\d+]] = OpImageQuerySize %v2uint [[t6]]
  104. // CHECK-NEXT: [[query14_0:%\d+]] = OpCompositeExtract %uint [[query14]] 0
  105. // CHECK-NEXT: OpStore %width [[query14_0]]
  106. // CHECK-NEXT: [[query14_1:%\d+]] = OpCompositeExtract %uint [[query14]] 1
  107. // CHECK-NEXT: OpStore %height [[query14_1]]
  108. // CHECK-NEXT: [[query15:%\d+]] = OpImageQuerySamples %uint [[t6]]
  109. // CHECK-NEXT: OpStore %numSamples [[query15]]
  110. t6.GetDimensions(width, height, numSamples);
  111. // CHECK: [[t7:%\d+]] = OpLoad %type_2d_image_array_0 %t7
  112. // CHECK-NEXT: [[query16:%\d+]] = OpImageQuerySize %v3uint [[t7]]
  113. // CHECK-NEXT: [[query16_0:%\d+]] = OpCompositeExtract %uint [[query16]] 0
  114. // CHECK-NEXT: OpStore %width [[query16_0]]
  115. // CHECK-NEXT: [[query16_1:%\d+]] = OpCompositeExtract %uint [[query16]] 1
  116. // CHECK-NEXT: OpStore %height [[query16_1]]
  117. // CHECK-NEXT: [[query16_2:%\d+]] = OpCompositeExtract %uint [[query16]] 2
  118. // CHECK-NEXT: OpStore %elements [[query16_2]]
  119. // CHECK-NEXT: [[query17:%\d+]] = OpImageQuerySamples %uint [[t7]]
  120. // CHECK-NEXT: OpStore %numSamples [[query17]]
  121. t7.GetDimensions(width, height, elements, numSamples);
  122. // Overloads with float output arg.
  123. float f_width, f_height, f_depth, f_elements, f_numSamples, f_numLevels;
  124. // CHECK: [[t1_0:%\d+]] = OpLoad %type_1d_image %t1
  125. // CHECK-NEXT: [[query0:%\d+]] = OpImageQuerySizeLod %uint [[t1_0]] %int_0
  126. // CHECK-NEXT: [[f_query0:%\d+]] = OpConvertUToF %float [[query0]]
  127. // CHECK-NEXT: OpStore %f_width [[f_query0]]
  128. t1.GetDimensions(f_width);
  129. // CHECK: [[t1_1:%\d+]] = OpLoad %type_1d_image %t1
  130. // CHECK-NEXT: [[mip0:%\d+]] = OpLoad %uint %mipLevel
  131. // CHECK-NEXT: [[query1:%\d+]] = OpImageQuerySizeLod %uint [[t1_1]] [[mip0]]
  132. // CHECK-NEXT: [[f_query1:%\d+]] = OpConvertUToF %float [[query1]]
  133. // CHECK-NEXT: OpStore %f_width [[f_query1]]
  134. // CHECK-NEXT: [[query2:%\d+]] = OpImageQueryLevels %uint [[t1_1]]
  135. // CHECK-NEXT: [[f_query2:%\d+]] = OpConvertUToF %float [[query2]]
  136. // CHECK-NEXT: OpStore %f_numLevels [[f_query2]]
  137. t1.GetDimensions(mipLevel, f_width, f_numLevels);
  138. // CHECK: [[t2_0:%\d+]] = OpLoad %type_1d_image_array %t2
  139. // CHECK-NEXT: [[query3:%\d+]] = OpImageQuerySizeLod %v2uint [[t2_0]] %int_0
  140. // CHECK-NEXT: [[query3_0:%\d+]] = OpCompositeExtract %uint [[query3]] 0
  141. // CHECK-NEXT: [[f_query3_0:%\d+]] = OpConvertUToF %float [[query3_0]]
  142. // CHECK-NEXT: OpStore %f_width [[f_query3_0]]
  143. // CHECK-NEXT: [[query3_1:%\d+]] = OpCompositeExtract %uint [[query3]] 1
  144. // CHECK-NEXT: [[f_query3_1:%\d+]] = OpConvertUToF %float [[query3_1]]
  145. // CHECK-NEXT: OpStore %f_elements [[f_query3_1]]
  146. t2.GetDimensions(f_width, f_elements);
  147. // CHECK: [[t2_1:%\d+]] = OpLoad %type_1d_image_array %t2
  148. // CHECK-NEXT: [[mip1:%\d+]] = OpLoad %uint %mipLevel
  149. // CHECK-NEXT: [[query4:%\d+]] = OpImageQuerySizeLod %v2uint [[t2_1]] [[mip1]]
  150. // CHECK-NEXT: [[query4_0:%\d+]] = OpCompositeExtract %uint [[query4]] 0
  151. // CHECK-NEXT: [[f_query4_0:%\d+]] = OpConvertUToF %float [[query4_0]]
  152. // CHECK-NEXT: OpStore %f_width [[f_query4_0]]
  153. // CHECK-NEXT: [[query4_1:%\d+]] = OpCompositeExtract %uint [[query4]] 1
  154. // CHECK-NEXT: [[f_query4_1:%\d+]] = OpConvertUToF %float [[query4_1]]
  155. // CHECK-NEXT: OpStore %f_elements [[f_query4_1]]
  156. // CHECK-NEXT: [[query5:%\d+]] = OpImageQueryLevels %uint [[t2_1]]
  157. // CHECK-NEXT: [[f_query5:%\d+]] = OpConvertUToF %float [[query5]]
  158. // CHECK-NEXT: OpStore %f_numLevels [[f_query5]]
  159. t2.GetDimensions(mipLevel, f_width, f_elements, f_numLevels);
  160. // CHECK: [[t3_0:%\d+]] = OpLoad %type_2d_image %t3
  161. // CHECK-NEXT: [[query5:%\d+]] = OpImageQuerySizeLod %v2uint [[t3_0]] %int_0
  162. // CHECK-NEXT: [[query5_0:%\d+]] = OpCompositeExtract %uint [[query5]] 0
  163. // CHECK-NEXT: [[f_query5_0:%\d+]] = OpConvertUToF %float [[query5_0]]
  164. // CHECK-NEXT: OpStore %f_width [[f_query5_0]]
  165. // CHECK-NEXT: [[query5_1:%\d+]] = OpCompositeExtract %uint [[query5]] 1
  166. // CHECK-NEXT: [[f_query5_1:%\d+]] = OpConvertUToF %float [[query5_1]]
  167. // CHECK-NEXT: OpStore %f_height [[f_query5_1]]
  168. t3.GetDimensions(f_width, f_height);
  169. // CHECK: [[t3_1:%\d+]] = OpLoad %type_2d_image %t3
  170. // CHECK-NEXT: [[mip2:%\d+]] = OpLoad %uint %mipLevel
  171. // CHECK-NEXT: [[query6:%\d+]] = OpImageQuerySizeLod %v2uint [[t3_1]] [[mip2]]
  172. // CHECK-NEXT: [[query6_0:%\d+]] = OpCompositeExtract %uint [[query6]] 0
  173. // CHECK-NEXT: [[f_query6_0:%\d+]] = OpConvertUToF %float [[query6_0]]
  174. // CHECK-NEXT: OpStore %f_width [[f_query6_0]]
  175. // CHECK-NEXT: [[query6_1:%\d+]] = OpCompositeExtract %uint [[query6]] 1
  176. // CHECK-NEXT: [[f_query6_1:%\d+]] = OpConvertUToF %float [[query6_1]]
  177. // CHECK-NEXT: OpStore %f_height [[f_query6_1]]
  178. // CHECK-NEXT: [[query7:%\d+]] = OpImageQueryLevels %uint [[t3_1]]
  179. // CHECK-NEXT: [[f_query7:%\d+]] = OpConvertUToF %float [[query7]]
  180. // CHECK-NEXT: OpStore %f_numLevels [[f_query7]]
  181. t3.GetDimensions(mipLevel, f_width, f_height, f_numLevels);
  182. // CHECK: [[t4_0:%\d+]] = OpLoad %type_2d_image_array %t4
  183. // CHECK-NEXT: [[query8:%\d+]] = OpImageQuerySizeLod %v3uint [[t4_0]] %int_0
  184. // CHECK-NEXT: [[query8_0:%\d+]] = OpCompositeExtract %uint [[query8]] 0
  185. // CHECK-NEXT: [[f_query8_0:%\d+]] = OpConvertUToF %float [[query8_0]]
  186. // CHECK-NEXT: OpStore %f_width [[f_query8_0]]
  187. // CHECK-NEXT: [[query8_1:%\d+]] = OpCompositeExtract %uint [[query8]] 1
  188. // CHECK-NEXT: [[f_query8_1:%\d+]] = OpConvertUToF %float [[query8_1]]
  189. // CHECK-NEXT: OpStore %f_height [[f_query8_1]]
  190. // CHECK-NEXT: [[query8_2:%\d+]] = OpCompositeExtract %uint [[query8]] 2
  191. // CHECK-NEXT: [[f_query8_2:%\d+]] = OpConvertUToF %float [[query8_2]]
  192. // CHECK-NEXT: OpStore %f_elements [[f_query8_2]]
  193. t4.GetDimensions(f_width, f_height, f_elements);
  194. // CHECK: [[t4_1:%\d+]] = OpLoad %type_2d_image_array %t4
  195. // CHECK-NEXT: [[mip3:%\d+]] = OpLoad %uint %mipLevel
  196. // CHECK-NEXT: [[query9:%\d+]] = OpImageQuerySizeLod %v3uint [[t4_1]] [[mip3]]
  197. // CHECK-NEXT: [[query9_0:%\d+]] = OpCompositeExtract %uint [[query9]] 0
  198. // CHECK-NEXT: [[f_query9_0:%\d+]] = OpConvertUToF %float [[query9_0]]
  199. // CHECK-NEXT: OpStore %f_width [[f_query9_0]]
  200. // CHECK-NEXT: [[query9_1:%\d+]] = OpCompositeExtract %uint [[query9]] 1
  201. // CHECK-NEXT: [[f_query9_1:%\d+]] = OpConvertUToF %float [[query9_1]]
  202. // CHECK-NEXT: OpStore %f_height [[f_query9_1]]
  203. // CHECK-NEXT: [[query9_2:%\d+]] = OpCompositeExtract %uint [[query9]] 2
  204. // CHECK-NEXT: [[f_query9_2:%\d+]] = OpConvertUToF %float [[query9_2]]
  205. // CHECK-NEXT: OpStore %f_elements [[f_query9_2]]
  206. // CHECK-NEXT: [[query10:%\d+]] = OpImageQueryLevels %uint [[t4_1]]
  207. // CHECK-NEXT: [[f_query10:%\d+]] = OpConvertUToF %float [[query10]]
  208. // CHECK-NEXT: OpStore %f_numLevels [[f_query10]]
  209. t4.GetDimensions(mipLevel, f_width, f_height, f_elements, f_numLevels);
  210. // CHECK: [[t5_0:%\d+]] = OpLoad %type_3d_image %t5
  211. // CHECK-NEXT: [[query11:%\d+]] = OpImageQuerySizeLod %v3uint [[t5_0]] %int_0
  212. // CHECK-NEXT: [[query11_0:%\d+]] = OpCompositeExtract %uint [[query11]] 0
  213. // CHECK-NEXT: [[f_query11_0:%\d+]] = OpConvertUToF %float [[query11_0]]
  214. // CHECK-NEXT: OpStore %f_width [[f_query11_0]]
  215. // CHECK-NEXT: [[query11_1:%\d+]] = OpCompositeExtract %uint [[query11]] 1
  216. // CHECK-NEXT: [[f_query11_1:%\d+]] = OpConvertUToF %float [[query11_1]]
  217. // CHECK-NEXT: OpStore %f_height [[f_query11_1]]
  218. // CHECK-NEXT: [[query11_2:%\d+]] = OpCompositeExtract %uint [[query11]] 2
  219. // CHECK-NEXT: [[f_query11_2:%\d+]] = OpConvertUToF %float [[query11_2]]
  220. // CHECK-NEXT: OpStore %f_depth [[f_query11_2]]
  221. t5.GetDimensions(f_width, f_height, f_depth);
  222. // CHECK: [[t5_1:%\d+]] = OpLoad %type_3d_image %t5
  223. // CHECK-NEXT: [[mip4:%\d+]] = OpLoad %uint %mipLevel
  224. // CHECK-NEXT: [[query12:%\d+]] = OpImageQuerySizeLod %v3uint [[t5_1]] [[mip4]]
  225. // CHECK-NEXT: [[query12_0:%\d+]] = OpCompositeExtract %uint [[query12]] 0
  226. // CHECK-NEXT: [[f_query12_0:%\d+]] = OpConvertUToF %float [[query12_0]]
  227. // CHECK-NEXT: OpStore %f_width [[f_query12_0]]
  228. // CHECK-NEXT: [[query12_1:%\d+]] = OpCompositeExtract %uint [[query12]] 1
  229. // CHECK-NEXT: [[f_query12_1:%\d+]] = OpConvertUToF %float [[query12_1]]
  230. // CHECK-NEXT: OpStore %f_height [[f_query12_1]]
  231. // CHECK-NEXT: [[query12_2:%\d+]] = OpCompositeExtract %uint [[query12]] 2
  232. // CHECK-NEXT: [[f_query12_2:%\d+]] = OpConvertUToF %float [[query12_2]]
  233. // CHECK-NEXT: OpStore %f_depth [[f_query12_2]]
  234. // CHECK-NEXT: [[query13:%\d+]] = OpImageQueryLevels %uint [[t5_1]]
  235. // CHECK-NEXT: [[f_query13:%\d+]] = OpConvertUToF %float [[query13]]
  236. // CHECK-NEXT: OpStore %f_numLevels [[f_query13]]
  237. t5.GetDimensions(mipLevel, f_width, f_height, f_depth, f_numLevels);
  238. // CHECK: [[t6:%\d+]] = OpLoad %type_2d_image_0 %t6
  239. // CHECK-NEXT: [[query14:%\d+]] = OpImageQuerySize %v2uint [[t6]]
  240. // CHECK-NEXT: [[query14_0:%\d+]] = OpCompositeExtract %uint [[query14]] 0
  241. // CHECK-NEXT: [[f_query14_0:%\d+]] = OpConvertUToF %float [[query14_0]]
  242. // CHECK-NEXT: OpStore %f_width [[f_query14_0]]
  243. // CHECK-NEXT: [[query14_1:%\d+]] = OpCompositeExtract %uint [[query14]] 1
  244. // CHECK-NEXT: [[f_query14_1:%\d+]] = OpConvertUToF %float [[query14_1]]
  245. // CHECK-NEXT: OpStore %f_height [[f_query14_1]]
  246. // CHECK-NEXT: [[query15:%\d+]] = OpImageQuerySamples %uint [[t6]]
  247. // CHECK-NEXT: [[f_query15:%\d+]] = OpConvertUToF %float [[query15]]
  248. // CHECK-NEXT: OpStore %f_numSamples [[f_query15]]
  249. t6.GetDimensions(f_width, f_height, f_numSamples);
  250. // CHECK: [[t7:%\d+]] = OpLoad %type_2d_image_array_0 %t7
  251. // CHECK-NEXT: [[query16:%\d+]] = OpImageQuerySize %v3uint [[t7]]
  252. // CHECK-NEXT: [[query16_0:%\d+]] = OpCompositeExtract %uint [[query16]] 0
  253. // CHECK-NEXT: [[f_query16_0:%\d+]] = OpConvertUToF %float [[query16_0]]
  254. // CHECK-NEXT: OpStore %f_width [[f_query16_0]]
  255. // CHECK-NEXT: [[query16_1:%\d+]] = OpCompositeExtract %uint [[query16]] 1
  256. // CHECK-NEXT: [[f_query16_1:%\d+]] = OpConvertUToF %float [[query16_1]]
  257. // CHECK-NEXT: OpStore %f_height [[f_query16_1]]
  258. // CHECK-NEXT: [[query16_2:%\d+]] = OpCompositeExtract %uint [[query16]] 2
  259. // CHECK-NEXT: [[f_query16_2:%\d+]] = OpConvertUToF %float [[query16_2]]
  260. // CHECK-NEXT: OpStore %f_elements [[f_query16_2]]
  261. // CHECK-NEXT: [[query17:%\d+]] = OpImageQuerySamples %uint [[t7]]
  262. // CHECK-NEXT: [[f_query17:%\d+]] = OpConvertUToF %float [[query17]]
  263. // CHECK-NEXT: OpStore %f_numSamples [[f_query17]]
  264. t7.GetDimensions(f_width, f_height, f_elements, f_numSamples);
  265. // CHECK: [[t8:%\d+]] = OpLoad %type_cube_image %t8
  266. // CHECK-NEXT: [[query18:%\d+]] = OpImageQuerySizeLod %v2uint [[t8]] %int_0
  267. // CHECK-NEXT: [[query18_0:%\d+]] = OpCompositeExtract %uint [[query18]] 0
  268. // CHECK-NEXT: OpStore %width [[query18_0]]
  269. // CHECK-NEXT: [[query18_1:%\d+]] = OpCompositeExtract %uint [[query18]] 1
  270. // CHECK-NEXT: OpStore %height [[query18_1]]
  271. t8.GetDimensions(width, height);
  272. // CHECK: [[t8:%\d+]] = OpLoad %type_cube_image %t8
  273. // CHECK-NEXT: [[mip:%\d+]] = OpLoad %uint %mipLevel
  274. // CHECK-NEXT: [[query19:%\d+]] = OpImageQuerySizeLod %v2uint [[t8]] [[mip]]
  275. // CHECK-NEXT: [[query19_0:%\d+]] = OpCompositeExtract %uint [[query19]] 0
  276. // CHECK-NEXT: OpStore %width [[query19_0]]
  277. // CHECK-NEXT: [[query19_1:%\d+]] = OpCompositeExtract %uint [[query19]] 1
  278. // CHECK-NEXT: OpStore %height [[query19_1]]
  279. // CHECK-NEXT: [[query20:%\d+]] = OpImageQueryLevels %uint [[t8]]
  280. // CHECK-NEXT: OpStore %numLevels [[query20]]
  281. t8.GetDimensions(mipLevel, width, height, numLevels);
  282. // CHECK: [[t9:%\d+]] = OpLoad %type_cube_image_array %t9
  283. // CHECK-NEXT: [[query21:%\d+]] = OpImageQuerySizeLod %v3uint [[t9]] %int_0
  284. // CHECK-NEXT: [[query21_0:%\d+]] = OpCompositeExtract %uint [[query21]] 0
  285. // CHECK-NEXT: OpStore %width [[query21_0]]
  286. // CHECK-NEXT: [[query21_1:%\d+]] = OpCompositeExtract %uint [[query21]] 1
  287. // CHECK-NEXT: OpStore %height [[query21_1]]
  288. // CHECK-NEXT: [[query21_2:%\d+]] = OpCompositeExtract %uint [[query21]] 2
  289. // CHECK-NEXT: OpStore %elements [[query21_2]]
  290. t9.GetDimensions(width, height, elements);
  291. // CHECK: [[t9:%\d+]] = OpLoad %type_cube_image_array %t9
  292. // CHECK-NEXT: [[mip:%\d+]] = OpLoad %uint %mipLevel
  293. // CHECK-NEXT: [[query22:%\d+]] = OpImageQuerySizeLod %v3uint [[t9]] [[mip]]
  294. // CHECK-NEXT: [[query22_0:%\d+]] = OpCompositeExtract %uint [[query22]] 0
  295. // CHECK-NEXT: OpStore %width [[query22_0]]
  296. // CHECK-NEXT: [[query22_1:%\d+]] = OpCompositeExtract %uint [[query22]] 1
  297. // CHECK-NEXT: OpStore %height [[query22_1]]
  298. // CHECK-NEXT: [[query22_2:%\d+]] = OpCompositeExtract %uint [[query22]] 2
  299. // CHECK-NEXT: OpStore %elements [[query22_2]]
  300. // CHECK-NEXT: [[query23:%\d+]] = OpImageQueryLevels %uint [[t9]]
  301. // CHECK-NEXT: OpStore %numLevels [[query23]]
  302. t9.GetDimensions(mipLevel, width, height, elements, numLevels);
  303. }