@nativescript/canvas 2.0.0-beta.8 → 2.0.0-webgpu.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/Canvas/common.d.ts +23 -15
  2. package/Canvas/common.js +125 -56
  3. package/Canvas/common.js.map +1 -1
  4. package/Canvas/index.android.d.ts +5 -7
  5. package/Canvas/index.android.js +61 -133
  6. package/Canvas/index.android.js.map +1 -1
  7. package/Canvas/index.d.ts +4 -1
  8. package/Canvas/index.ios.d.ts +6 -6
  9. package/Canvas/index.ios.js +75 -85
  10. package/Canvas/index.ios.js.map +1 -1
  11. package/Canvas2D/CanvasRenderingContext2D/index.d.ts +1 -1
  12. package/Canvas2D/CanvasRenderingContext2D/index.js +8 -11
  13. package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -1
  14. package/Canvas2D/DOMMatrix/index.d.ts +14 -0
  15. package/Canvas2D/DOMMatrix/index.js +62 -0
  16. package/Canvas2D/DOMMatrix/index.js.map +1 -1
  17. package/Canvas2D/ImageData/index.js +4 -6
  18. package/Canvas2D/ImageData/index.js.map +1 -1
  19. package/ImageAsset/index.d.ts +1 -0
  20. package/ImageAsset/index.js +49 -0
  21. package/ImageAsset/index.js.map +1 -1
  22. package/WebGL/WebGLRenderingContext/index.d.ts +1 -0
  23. package/WebGL/WebGLRenderingContext/index.js +104 -14
  24. package/WebGL/WebGLRenderingContext/index.js.map +1 -1
  25. package/WebGL2/WebGL2RenderingContext/index.d.ts +1 -0
  26. package/WebGL2/WebGL2RenderingContext/index.js +2 -3
  27. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
  28. package/WebGPU/Constants.d.ts +36 -0
  29. package/WebGPU/Constants.js +42 -0
  30. package/WebGPU/Constants.js.map +1 -0
  31. package/WebGPU/Errors.d.ts +18 -0
  32. package/WebGPU/Errors.js +21 -0
  33. package/WebGPU/Errors.js.map +1 -0
  34. package/WebGPU/GPU.d.ts +13 -0
  35. package/WebGPU/GPU.js +35 -0
  36. package/WebGPU/GPU.js.map +1 -0
  37. package/WebGPU/GPUAdapter.d.ts +23 -0
  38. package/WebGPU/GPUAdapter.js +62 -0
  39. package/WebGPU/GPUAdapter.js.map +1 -0
  40. package/WebGPU/GPUAdapterInfo.d.ts +9 -0
  41. package/WebGPU/GPUAdapterInfo.js +24 -0
  42. package/WebGPU/GPUAdapterInfo.js.map +1 -0
  43. package/WebGPU/GPUBindGroup.d.ts +5 -0
  44. package/WebGPU/GPUBindGroup.js +12 -0
  45. package/WebGPU/GPUBindGroup.js.map +1 -0
  46. package/WebGPU/GPUBindGroupLayout.d.ts +5 -0
  47. package/WebGPU/GPUBindGroupLayout.js +12 -0
  48. package/WebGPU/GPUBindGroupLayout.js.map +1 -0
  49. package/WebGPU/GPUBuffer.d.ts +15 -0
  50. package/WebGPU/GPUBuffer.js +54 -0
  51. package/WebGPU/GPUBuffer.js.map +1 -0
  52. package/WebGPU/GPUCanvasContext.d.ts +33 -0
  53. package/WebGPU/GPUCanvasContext.js +67 -0
  54. package/WebGPU/GPUCanvasContext.js.map +1 -0
  55. package/WebGPU/GPUCommandBuffer.d.ts +5 -0
  56. package/WebGPU/GPUCommandBuffer.js +12 -0
  57. package/WebGPU/GPUCommandBuffer.js.map +1 -0
  58. package/WebGPU/GPUCommandEncoder.d.ts +41 -0
  59. package/WebGPU/GPUCommandEncoder.js +105 -0
  60. package/WebGPU/GPUCommandEncoder.js.map +1 -0
  61. package/WebGPU/GPUComputePassEncoder.d.ts +16 -0
  62. package/WebGPU/GPUComputePassEncoder.js +50 -0
  63. package/WebGPU/GPUComputePassEncoder.js.map +1 -0
  64. package/WebGPU/GPUComputePipeline.d.ts +7 -0
  65. package/WebGPU/GPUComputePipeline.js +16 -0
  66. package/WebGPU/GPUComputePipeline.js.map +1 -0
  67. package/WebGPU/GPUDevice.d.ts +173 -0
  68. package/WebGPU/GPUDevice.js +381 -0
  69. package/WebGPU/GPUDevice.js.map +1 -0
  70. package/WebGPU/GPUDeviceLostInfo.d.ts +1 -0
  71. package/WebGPU/GPUDeviceLostInfo.js +10 -0
  72. package/WebGPU/GPUDeviceLostInfo.js.map +1 -0
  73. package/WebGPU/GPUExternalTexture.d.ts +5 -0
  74. package/WebGPU/GPUExternalTexture.js +12 -0
  75. package/WebGPU/GPUExternalTexture.js.map +1 -0
  76. package/WebGPU/GPUPipelineLayout.d.ts +5 -0
  77. package/WebGPU/GPUPipelineLayout.js +12 -0
  78. package/WebGPU/GPUPipelineLayout.js.map +1 -0
  79. package/WebGPU/GPUQuerySet.d.ts +5 -0
  80. package/WebGPU/GPUQuerySet.js +12 -0
  81. package/WebGPU/GPUQuerySet.js.map +1 -0
  82. package/WebGPU/GPUQueue.d.ts +14 -0
  83. package/WebGPU/GPUQueue.js +77 -0
  84. package/WebGPU/GPUQueue.js.map +1 -0
  85. package/WebGPU/GPURenderBundle.d.ts +5 -0
  86. package/WebGPU/GPURenderBundle.js +12 -0
  87. package/WebGPU/GPURenderBundle.js.map +1 -0
  88. package/WebGPU/GPURenderBundleEncoder.d.ts +20 -0
  89. package/WebGPU/GPURenderBundleEncoder.js +61 -0
  90. package/WebGPU/GPURenderBundleEncoder.js.map +1 -0
  91. package/WebGPU/GPURenderPassEncoder.d.ts +29 -0
  92. package/WebGPU/GPURenderPassEncoder.js +94 -0
  93. package/WebGPU/GPURenderPassEncoder.js.map +1 -0
  94. package/WebGPU/GPURenderPipeline.d.ts +7 -0
  95. package/WebGPU/GPURenderPipeline.js +16 -0
  96. package/WebGPU/GPURenderPipeline.js.map +1 -0
  97. package/WebGPU/GPUSampler.d.ts +5 -0
  98. package/WebGPU/GPUSampler.js +12 -0
  99. package/WebGPU/GPUSampler.js.map +1 -0
  100. package/WebGPU/GPUShaderModule.d.ts +6 -0
  101. package/WebGPU/GPUShaderModule.js +15 -0
  102. package/WebGPU/GPUShaderModule.js.map +1 -0
  103. package/WebGPU/GPUTexture.d.ts +16 -0
  104. package/WebGPU/GPUTexture.js +41 -0
  105. package/WebGPU/GPUTexture.js.map +1 -0
  106. package/WebGPU/GPUTextureView.d.ts +5 -0
  107. package/WebGPU/GPUTextureView.js +12 -0
  108. package/WebGPU/GPUTextureView.js.map +1 -0
  109. package/WebGPU/Interfaces.d.ts +155 -0
  110. package/WebGPU/Interfaces.js +2 -0
  111. package/WebGPU/Interfaces.js.map +1 -0
  112. package/WebGPU/Types.d.ts +39 -0
  113. package/WebGPU/Types.js +2 -0
  114. package/WebGPU/Types.js.map +1 -0
  115. package/WebGPU/Utils.d.ts +1 -0
  116. package/WebGPU/Utils.js +75 -0
  117. package/WebGPU/Utils.js.map +1 -0
  118. package/WebGPU/index.d.ts +28 -0
  119. package/WebGPU/index.js +29 -0
  120. package/WebGPU/index.js.map +1 -0
  121. package/index.d.ts +1 -1
  122. package/index.js +22 -1
  123. package/index.js.map +1 -1
  124. package/package.json +1 -4
  125. package/platforms/android/canvas-release.aar +0 -0
  126. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  127. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +23 -23
  128. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +47 -8
  129. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +2280 -103
  130. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  131. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  132. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +1564 -3814
  133. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +27 -34
  134. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  135. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +27 -34
  136. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  137. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +602 -664
  138. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  139. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +46 -46
  140. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +47 -8
  141. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +2280 -103
  142. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  143. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  144. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  145. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +1564 -3814
  146. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +27 -34
  147. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  148. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +27 -34
  149. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +1564 -3814
  150. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +27 -34
  151. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  152. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +27 -34
  153. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +31 -31
  154. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  155. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +604 -663
  156. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/x86_64/CanvasNative.yml +638 -642
  157. package/platforms/ios/build.xcconfig +3 -1
  158. package/platforms/ios/src/cpp/Caches.h +69 -1
  159. package/platforms/ios/src/cpp/CanvasJSIModule.cpp +320 -395
  160. package/platforms/ios/src/cpp/CanvasJSIModule.h +7 -1
  161. package/platforms/ios/src/cpp/Helpers.h +43 -8
  162. package/platforms/ios/src/cpp/ImageAssetImpl.cpp +35 -37
  163. package/platforms/ios/src/cpp/ImageAssetImpl.h +14 -10
  164. package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +2 -2
  165. package/platforms/ios/src/cpp/ImageBitmapImpl.h +1 -1
  166. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.cpp +0 -10
  167. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +41 -4
  168. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.cpp +409 -3
  169. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +27 -0
  170. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +131 -149
  171. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.cpp +1766 -1659
  172. package/platforms/ios/src/cpp/webgpu/GPUAdapterImpl.cpp +302 -0
  173. package/platforms/ios/src/cpp/webgpu/GPUAdapterImpl.h +63 -0
  174. package/platforms/ios/src/cpp/webgpu/GPUAdapterInfoImpl.cpp +174 -0
  175. package/platforms/ios/src/cpp/webgpu/GPUAdapterInfoImpl.h +58 -0
  176. package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.cpp +53 -0
  177. package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.h +45 -0
  178. package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.cpp +53 -0
  179. package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.h +45 -0
  180. package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.cpp +229 -0
  181. package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.h +59 -0
  182. package/platforms/ios/src/cpp/webgpu/GPUCanvasContextImpl.cpp +317 -0
  183. package/platforms/ios/src/cpp/webgpu/GPUCanvasContextImpl.h +55 -0
  184. package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.cpp +54 -0
  185. package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.h +45 -0
  186. package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.cpp +1087 -0
  187. package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.h +69 -0
  188. package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.cpp +260 -0
  189. package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.h +62 -0
  190. package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.cpp +84 -0
  191. package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.h +49 -0
  192. package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.cpp +2741 -0
  193. package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.h +95 -0
  194. package/platforms/ios/src/cpp/webgpu/GPUImpl.cpp +186 -0
  195. package/platforms/ios/src/cpp/webgpu/GPUImpl.h +55 -0
  196. package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.cpp +54 -0
  197. package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.h +46 -0
  198. package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.cpp +137 -0
  199. package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.h +55 -0
  200. package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.cpp +521 -0
  201. package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.h +56 -0
  202. package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.cpp +469 -0
  203. package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.h +71 -0
  204. package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.cpp +53 -0
  205. package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.h +45 -0
  206. package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.cpp +653 -0
  207. package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.h +85 -0
  208. package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.cpp +84 -0
  209. package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.h +49 -0
  210. package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.cpp +53 -0
  211. package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.h +45 -0
  212. package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.cpp +56 -0
  213. package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.h +45 -0
  214. package/platforms/ios/src/cpp/webgpu/GPUSupportedLimitsImpl.cpp +1304 -0
  215. package/platforms/ios/src/cpp/webgpu/GPUSupportedLimitsImpl.h +288 -0
  216. package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.cpp +360 -0
  217. package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.h +75 -0
  218. package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.cpp +53 -0
  219. package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.h +45 -0
  220. package/platforms/ios/src/cpp/webgpu/GPUUtils.h +178 -0
  221. package/SVG/Circle.d.ts +0 -11
  222. package/SVG/Circle.js +0 -21
  223. package/SVG/Circle.js.map +0 -1
  224. package/SVG/ClipPath.d.ts +0 -4
  225. package/SVG/ClipPath.js +0 -9
  226. package/SVG/ClipPath.js.map +0 -1
  227. package/SVG/Defs.d.ts +0 -4
  228. package/SVG/Defs.js +0 -9
  229. package/SVG/Defs.js.map +0 -1
  230. package/SVG/Ellipse.d.ts +0 -13
  231. package/SVG/Ellipse.js +0 -26
  232. package/SVG/Ellipse.js.map +0 -1
  233. package/SVG/G.d.ts +0 -7
  234. package/SVG/G.js +0 -9
  235. package/SVG/G.js.map +0 -1
  236. package/SVG/Image.d.ts +0 -11
  237. package/SVG/Image.js +0 -40
  238. package/SVG/Image.js.map +0 -1
  239. package/SVG/Line.d.ts +0 -13
  240. package/SVG/Line.js +0 -26
  241. package/SVG/Line.js.map +0 -1
  242. package/SVG/LinearGradient.d.ts +0 -10
  243. package/SVG/LinearGradient.js +0 -13
  244. package/SVG/LinearGradient.js.map +0 -1
  245. package/SVG/Path.d.ts +0 -7
  246. package/SVG/Path.js +0 -14
  247. package/SVG/Path.js.map +0 -1
  248. package/SVG/Pattern.d.ts +0 -4
  249. package/SVG/Pattern.js +0 -9
  250. package/SVG/Pattern.js.map +0 -1
  251. package/SVG/Polygon.d.ts +0 -7
  252. package/SVG/Polygon.js +0 -14
  253. package/SVG/Polygon.js.map +0 -1
  254. package/SVG/Polyline.d.ts +0 -7
  255. package/SVG/Polyline.js +0 -14
  256. package/SVG/Polyline.js.map +0 -1
  257. package/SVG/Rect.d.ts +0 -8
  258. package/SVG/Rect.js +0 -13
  259. package/SVG/Rect.js.map +0 -1
  260. package/SVG/SVG.d.ts +0 -32
  261. package/SVG/SVG.js +0 -204
  262. package/SVG/SVG.js.map +0 -1
  263. package/SVG/SVGItem.d.ts +0 -5
  264. package/SVG/SVGItem.js +0 -8
  265. package/SVG/SVGItem.js.map +0 -1
  266. package/SVG/Stop.d.ts +0 -5
  267. package/SVG/Stop.js +0 -9
  268. package/SVG/Stop.js.map +0 -1
  269. package/SVG/Symbol.d.ts +0 -4
  270. package/SVG/Symbol.js +0 -9
  271. package/SVG/Symbol.js.map +0 -1
  272. package/SVG/Text.d.ts +0 -14
  273. package/SVG/Text.js +0 -26
  274. package/SVG/Text.js.map +0 -1
  275. package/SVG/Use.d.ts +0 -4
  276. package/SVG/Use.js +0 -9
  277. package/SVG/Use.js.map +0 -1
  278. package/SVG/index.d.ts +0 -18
  279. package/SVG/index.js +0 -19
  280. package/SVG/index.js.map +0 -1
  281. package/platforms/ios/src/cpp/PerIsolateData.cpp +0 -49
  282. package/platforms/ios/src/cpp/PerIsolateData.h +0 -54
  283. package/platforms/ios/src/cpp/URLImpl.cpp +0 -464
  284. package/platforms/ios/src/cpp/URLImpl.h +0 -121
@@ -0,0 +1,95 @@
1
+ //
2
+ // Created by Osei Fortune on 18/06/2024.
3
+ //
4
+
5
+ #ifndef CANVAS_ANDROID_GPUDEVICEIMPL_H
6
+ #define CANVAS_ANDROID_GPUDEVICEIMPL_H
7
+
8
+ #include "Common.h"
9
+ #include "Helpers.h"
10
+ #include "ObjectWrapperImpl.h"
11
+
12
+ class GPUDeviceImpl : ObjectWrapperImpl {
13
+ public:
14
+ GPUDeviceImpl(const CanvasGPUDevice *device);
15
+
16
+ ~GPUDeviceImpl() {
17
+ canvas_native_webgpu_device_release(this->device_);
18
+ }
19
+
20
+ const CanvasGPUDevice *GetGPUDevice();
21
+
22
+ static void Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate);
23
+
24
+ static GPUDeviceImpl *GetPointer(const v8::Local<v8::Object> &object);
25
+
26
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate);
27
+
28
+ static v8::Local<v8::Object> NewInstance(v8::Isolate *isolate, GPUDeviceImpl *device) {
29
+ auto context = isolate->GetCurrentContext();
30
+ v8::EscapableHandleScope scope(isolate);
31
+ auto object = GPUDeviceImpl::GetCtor(isolate)->GetFunction(
32
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
33
+ SetNativeType(object, NativeType::GPUDevice);
34
+ object->SetAlignedPointerInInternalField(0, device);
35
+ device->BindFinalizer(isolate, object);
36
+ return scope.Escape(object);
37
+ }
38
+
39
+
40
+ static void GetFeatures(v8::Local<v8::Name> name,
41
+ const v8::PropertyCallbackInfo<v8::Value> &info);
42
+
43
+ static void GetLimits(v8::Local<v8::Name> name,
44
+ const v8::PropertyCallbackInfo<v8::Value> &info);
45
+
46
+ static void GetQueue(v8::Local<v8::Name> name,
47
+ const v8::PropertyCallbackInfo<v8::Value> &info);
48
+
49
+ static void GetLost(v8::Local<v8::Name> name,
50
+ const v8::PropertyCallbackInfo<v8::Value> &info);
51
+
52
+ static void CreateBindGroup(const v8::FunctionCallbackInfo<v8::Value> &args);
53
+
54
+ static void CreateBindGroupLayout(const v8::FunctionCallbackInfo<v8::Value> &args);
55
+
56
+ static void CreateBuffer(const v8::FunctionCallbackInfo<v8::Value> &args);
57
+
58
+ static void CreateCommandEncoder(const v8::FunctionCallbackInfo<v8::Value> &args);
59
+
60
+ static void CreateComputePipeline(const v8::FunctionCallbackInfo<v8::Value> &args);
61
+
62
+ static void CreateComputePipelineAsync(const v8::FunctionCallbackInfo<v8::Value> &args);
63
+
64
+ static void CreatePipelineLayout(const v8::FunctionCallbackInfo<v8::Value> &args);
65
+
66
+ static void CreateQuerySet(const v8::FunctionCallbackInfo<v8::Value> &args);
67
+
68
+ static void CreateRenderBundleEncoder(const v8::FunctionCallbackInfo<v8::Value> &args);
69
+
70
+ static void CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Value> &args);
71
+
72
+ static void CreateRenderPipelineAsync(const v8::FunctionCallbackInfo<v8::Value> &args);
73
+
74
+ static void CreateSampler(const v8::FunctionCallbackInfo<v8::Value> &args);
75
+
76
+ static void CreateTexture(const v8::FunctionCallbackInfo<v8::Value> &args);
77
+
78
+ static void CreateShaderModule(const v8::FunctionCallbackInfo<v8::Value> &args);
79
+
80
+ static void Destroy(const v8::FunctionCallbackInfo<v8::Value> &args);
81
+
82
+ static void PopErrorScope(const v8::FunctionCallbackInfo<v8::Value> &args);
83
+
84
+ static void PushErrorScope(const v8::FunctionCallbackInfo<v8::Value> &args);
85
+
86
+
87
+ static void SetUncapturedError(const v8::FunctionCallbackInfo<v8::Value> &args);
88
+
89
+
90
+ private:
91
+ const CanvasGPUDevice *device_;
92
+ };
93
+
94
+
95
+ #endif //CANVAS_ANDROID_GPUDEVICEIMPL_H
@@ -0,0 +1,186 @@
1
+ //
2
+ // Created by Osei Fortune on 17/06/2024.
3
+ //
4
+
5
+ #include "GPUImpl.h"
6
+ #include "Caches.h"
7
+
8
+ GPUImpl::GPUImpl(const CanvasWebGPUInstance *instance) : instance_(instance) {}
9
+
10
+ const CanvasWebGPUInstance *GPUImpl::GetGPUInstance() {
11
+ return this->instance_;
12
+ }
13
+
14
+ void GPUImpl::Init(const v8::Local<v8::Object> &canvasModule, v8::Isolate *isolate) {
15
+ v8::Locker locker(isolate);
16
+ v8::Isolate::Scope isolate_scope(isolate);
17
+ v8::HandleScope handle_scope(isolate);
18
+
19
+ auto ctor = GetCtor(isolate);
20
+ auto context = isolate->GetCurrentContext();
21
+ auto func = ctor->GetFunction(context).ToLocalChecked();
22
+
23
+ canvasModule->Set(context, ConvertToV8String(isolate, "GPU"), func).FromJust();;
24
+ }
25
+
26
+
27
+ GPUImpl *GPUImpl::GetPointer(const v8::Local<v8::Object> &object) {
28
+ auto ptr = object->GetAlignedPointerFromInternalField(0);
29
+ if (ptr == nullptr) {
30
+ return nullptr;
31
+ }
32
+ return static_cast<GPUImpl *>(ptr);
33
+ }
34
+
35
+ v8::Local<v8::FunctionTemplate> GPUImpl::GetCtor(v8::Isolate *isolate) {
36
+ auto cache = Caches::Get(isolate);
37
+ auto ctor = cache->GPUTmpl.get();
38
+ if (ctor != nullptr) {
39
+ return ctor->Get(isolate);
40
+ }
41
+
42
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate, Ctor);
43
+
44
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(2);
45
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "GPU"));
46
+
47
+ auto tmpl = ctorTmpl->InstanceTemplate();
48
+ tmpl->SetInternalFieldCount(2);
49
+
50
+ tmpl->Set(ConvertToV8String(isolate, "__getPointer"),
51
+ v8::FunctionTemplate::New(isolate, __GetPointer));
52
+
53
+ tmpl->Set(ConvertToV8String(isolate, "requestAdapter"),
54
+ v8::FunctionTemplate::New(isolate, &RequestAdapter));
55
+
56
+ cache->GPUTmpl =
57
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
58
+ return ctorTmpl;
59
+ }
60
+
61
+ void GPUImpl::Ctor(const v8::FunctionCallbackInfo<v8::Value> &args) {
62
+ auto isolate = args.GetIsolate();
63
+
64
+ auto ret = args.This();
65
+
66
+ auto instance = canvas_native_webgpu_instance_create();
67
+
68
+ auto object = new GPUImpl(instance);
69
+
70
+ ret->SetAlignedPointerInInternalField(0, object);
71
+
72
+ SetNativeType(ret, NativeType::GPUInstance);
73
+
74
+ object->BindFinalizer(isolate, ret);
75
+
76
+ args.GetReturnValue().Set(ret);
77
+ }
78
+
79
+
80
+ void GPUImpl::RequestAdapter(const v8::FunctionCallbackInfo<v8::Value> &args) {
81
+ auto isolate = args.GetIsolate();
82
+ auto context = isolate->GetCurrentContext();
83
+
84
+ GPUImpl *ptr = GetPointer(args.This());
85
+ if (ptr == nullptr) {
86
+ args[1].As<v8::Function>()->Call(context, context->Global(), 0, nullptr);
87
+ return;
88
+ }
89
+
90
+
91
+ CanvasGPURequestAdapterOptions opts{};
92
+ opts.force_fallback_adapter = false;
93
+ opts.power_preference = CanvasGPUPowerPreference::CanvasGPUPowerPreferenceNone;
94
+ auto optionsValue = args[0];
95
+
96
+ if (optionsValue->IsObject()) {
97
+ auto options = optionsValue.As<v8::Object>();
98
+ v8::Local<v8::Value> ppValue;
99
+ options->Get(context, ConvertToV8String(isolate, "powerPreference")).ToLocal(&ppValue);
100
+ if (ppValue->IsNumber()) {
101
+ switch (ppValue->Int32Value(context).ToChecked()) {
102
+ case 1:
103
+ opts.power_preference = CanvasGPUPowerPreference::CanvasGPUPowerPreferenceLowPower;
104
+ break;
105
+ case 2:
106
+ opts.power_preference = CanvasGPUPowerPreference::CanvasGPUPowerPreferenceHighPerformance;
107
+ break;
108
+ default:
109
+ break;
110
+ }
111
+
112
+ }
113
+
114
+ v8::Local<v8::Value> forceFallbackValue;
115
+
116
+ options->Get(context, ConvertToV8String(isolate, "forceFallbackAdapter")).ToLocal(
117
+ &forceFallbackValue);
118
+
119
+
120
+ if (!forceFallbackValue.IsEmpty()) {
121
+ opts.force_fallback_adapter = forceFallbackValue->BooleanValue(isolate);
122
+ }
123
+ }
124
+
125
+ v8::Global<v8::Function> func(isolate, args[1].As<v8::Function>());
126
+ auto callback = new AsyncCallback{
127
+ isolate,
128
+ std::move(func)
129
+ };
130
+ canvas_native_webgpu_request_adapter(ptr->GetGPUInstance(), &opts,
131
+ [](const CanvasGPUAdapter *adapter, void *data) {
132
+ if (data != nullptr) {
133
+ auto func = static_cast<AsyncCallback *>(data);
134
+ if (func->isolate != nullptr) {
135
+ v8::Isolate *isolate = func->isolate;
136
+ v8::Locker locker(isolate);
137
+ v8::Isolate::Scope isolate_scope(isolate);
138
+ v8::HandleScope handle_scope(isolate);
139
+ v8::Local<v8::Function> callback = func->callback.Get(
140
+ isolate);
141
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
142
+ v8::Context::Scope context_scope(context);
143
+
144
+ if (adapter != nullptr) {
145
+ auto impl = new GPUAdapterImpl(adapter);
146
+ auto ret = GPUAdapterImpl::NewInstance(
147
+ isolate, impl);
148
+
149
+
150
+ v8::Local<v8::Value> args[2] = {
151
+ v8::Null(isolate), ret};
152
+
153
+
154
+ callback->Call(context, context->Global(),
155
+ 2,
156
+ args); // ignore JS return value
157
+
158
+ delete static_cast<AsyncCallback *>(data);
159
+ } else {
160
+ v8::Local<v8::Value> args[1] = {
161
+ v8::Null(isolate)};
162
+
163
+ callback->Call(context, context->Global(),
164
+ 1,
165
+ args); // ignore JS return value
166
+ delete static_cast<AsyncCallback *>(data);
167
+ }
168
+ }
169
+ }
170
+ }, callback);
171
+ }
172
+
173
+
174
+ void GPUImpl::__GetPointer(const v8::FunctionCallbackInfo<v8::Value> &args) {
175
+ GPUImpl *ptr = GetPointer(args.This());
176
+ if (ptr == nullptr) {
177
+ args.GetReturnValue().SetEmptyString();
178
+ return;
179
+ }
180
+
181
+ auto isolate = args.GetIsolate();
182
+
183
+ auto pointer = (intptr_t *) ptr->GetGPUInstance();
184
+ auto ret = std::to_string((intptr_t) pointer);
185
+ args.GetReturnValue().Set(ConvertToV8String(isolate, ret));
186
+ }
@@ -0,0 +1,55 @@
1
+ //
2
+ // Created by Osei Fortune on 17/06/2024.
3
+ //
4
+
5
+ #ifndef CANVAS_ANDROID_GPUIMPL_H
6
+ #define CANVAS_ANDROID_GPUIMPL_H
7
+
8
+ #include "Common.h"
9
+ #include "Helpers.h"
10
+ #include "GPUAdapterImpl.h"
11
+ #include "ObjectWrapperImpl.h"
12
+
13
+ class GPUImpl : ObjectWrapperImpl {
14
+ public:
15
+ GPUImpl(const CanvasWebGPUInstance *instance);
16
+
17
+ ~GPUImpl() {
18
+ if (this->instance_ != nullptr) {
19
+ canvas_native_webgpu_instance_release(this->instance_);
20
+ this->instance_ = nullptr;
21
+ }
22
+ }
23
+
24
+ const CanvasWebGPUInstance *GetGPUInstance();
25
+
26
+ static void Init(const v8::Local<v8::Object> &canvasModule, v8::Isolate *isolate);
27
+
28
+ static GPUImpl *GetPointer(const v8::Local<v8::Object> &object);
29
+
30
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate);
31
+
32
+ static void Ctor(const v8::FunctionCallbackInfo<v8::Value> &args);
33
+
34
+
35
+ static v8::Local<v8::Object> NewInstance(v8::Isolate *isolate, GPUImpl *instance) {
36
+ auto context = isolate->GetCurrentContext();
37
+ v8::EscapableHandleScope scope(isolate);
38
+ auto object = GPUImpl::GetCtor(isolate)->GetFunction(
39
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
40
+ SetNativeType(object, NativeType::GPUInstance);
41
+ object->SetAlignedPointerInInternalField(0, instance);
42
+ instance->BindFinalizer(isolate, object);
43
+ return scope.Escape(object);
44
+ }
45
+
46
+ static void __GetPointer(const v8::FunctionCallbackInfo<v8::Value> &args);
47
+
48
+ static void RequestAdapter(const v8::FunctionCallbackInfo<v8::Value> &args);
49
+
50
+ private:
51
+ const CanvasWebGPUInstance *instance_;
52
+ };
53
+
54
+
55
+ #endif //CANVAS_ANDROID_GPUIMPL_H
@@ -0,0 +1,54 @@
1
+ //
2
+ // Created by Osei Fortune on 26/06/2024.
3
+ //
4
+
5
+ #include "GPUPipelineLayoutImpl.h"
6
+ #include "Caches.h"
7
+
8
+ GPUPipelineLayoutImpl::GPUPipelineLayoutImpl(const CanvasGPUPipelineLayout *pipeline) : pipeline_(
9
+ pipeline) {}
10
+
11
+ const CanvasGPUPipelineLayout *GPUPipelineLayoutImpl::GetPipeline() {
12
+ return this->pipeline_;
13
+ }
14
+
15
+
16
+ void GPUPipelineLayoutImpl::Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate) {
17
+ v8::Locker locker(isolate);
18
+ v8::Isolate::Scope isolate_scope(isolate);
19
+ v8::HandleScope handle_scope(isolate);
20
+
21
+ auto ctor = GetCtor(isolate);
22
+ auto context = isolate->GetCurrentContext();
23
+ auto func = ctor->GetFunction(context).ToLocalChecked();
24
+
25
+ canvasModule->Set(context, ConvertToV8String(isolate, "GPUPipelineLayout"), func).FromJust();;
26
+ }
27
+
28
+ GPUPipelineLayoutImpl *GPUPipelineLayoutImpl::GetPointer(const v8::Local<v8::Object> &object) {
29
+ auto ptr = object->GetAlignedPointerFromInternalField(0);
30
+ if (ptr == nullptr) {
31
+ return nullptr;
32
+ }
33
+ return static_cast<GPUPipelineLayoutImpl *>(ptr);
34
+ }
35
+
36
+ v8::Local<v8::FunctionTemplate> GPUPipelineLayoutImpl::GetCtor(v8::Isolate *isolate) {
37
+ auto cache = Caches::Get(isolate);
38
+ auto ctor = cache->GPUPipelineLayoutTmpl.get();
39
+ if (ctor != nullptr) {
40
+ return ctor->Get(isolate);
41
+ }
42
+
43
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
44
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(2);
45
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "GPUPipelineLayout"));
46
+
47
+ auto tmpl = ctorTmpl->InstanceTemplate();
48
+ tmpl->SetInternalFieldCount(2);
49
+
50
+ cache->GPUPipelineLayoutTmpl =
51
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
52
+ return ctorTmpl;
53
+ }
54
+
@@ -0,0 +1,46 @@
1
+ //
2
+ // Created by Osei Fortune on 26/06/2024.
3
+ //
4
+
5
+ #ifndef CANVAS_ANDROID_GPUPIPELINELAYOUTIMPL_H
6
+ #define CANVAS_ANDROID_GPUPIPELINELAYOUTIMPL_H
7
+
8
+ #include "Common.h"
9
+ #include "Helpers.h"
10
+ #include "ObjectWrapperImpl.h"
11
+
12
+
13
+ class GPUPipelineLayoutImpl : ObjectWrapperImpl {
14
+ public:
15
+ GPUPipelineLayoutImpl(const CanvasGPUPipelineLayout *pipeline);
16
+
17
+ ~GPUPipelineLayoutImpl() {
18
+ canvas_native_webgpu_pipeline_layout_release(this->GetPipeline());
19
+ }
20
+
21
+ const CanvasGPUPipelineLayout *GetPipeline();
22
+
23
+ static void Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate);
24
+
25
+ static GPUPipelineLayoutImpl *GetPointer(const v8::Local<v8::Object> &object);
26
+
27
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate);
28
+
29
+ static v8::Local<v8::Object> NewInstance(v8::Isolate *isolate, GPUPipelineLayoutImpl *device) {
30
+ auto context = isolate->GetCurrentContext();
31
+ v8::EscapableHandleScope scope(isolate);
32
+ auto object = GPUPipelineLayoutImpl::GetCtor(isolate)->GetFunction(
33
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
34
+ SetNativeType(object, NativeType::GPUPipelineLayout);
35
+ object->SetAlignedPointerInInternalField(0, device);
36
+ device->BindFinalizer(isolate, object);
37
+ return scope.Escape(object);
38
+ }
39
+
40
+
41
+ private:
42
+ const CanvasGPUPipelineLayout *pipeline_;
43
+ };
44
+
45
+
46
+ #endif //CANVAS_ANDROID_GPUPIPELINELAYOUTIMPL_H
@@ -0,0 +1,137 @@
1
+ //
2
+ // Created by Osei Fortune on 23/06/2024.
3
+ //
4
+
5
+ #include "GPUQuerySetImpl.h"
6
+ #include "Caches.h"
7
+
8
+ GPUQuerySetImpl::GPUQuerySetImpl(const CanvasGPUQuerySet *querySet) : querySet_(querySet) {}
9
+
10
+ const CanvasGPUQuerySet *GPUQuerySetImpl::GetQuerySet() {
11
+ return this->querySet_;
12
+ }
13
+
14
+
15
+ void GPUQuerySetImpl::Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate) {
16
+ v8::Locker locker(isolate);
17
+ v8::Isolate::Scope isolate_scope(isolate);
18
+ v8::HandleScope handle_scope(isolate);
19
+
20
+ auto ctor = GetCtor(isolate);
21
+ auto context = isolate->GetCurrentContext();
22
+ auto func = ctor->GetFunction(context).ToLocalChecked();
23
+
24
+ canvasModule->Set(context, ConvertToV8String(isolate, "GPUQuerySet"), func).FromJust();;
25
+ }
26
+
27
+ GPUQuerySetImpl *GPUQuerySetImpl::GetPointer(const v8::Local<v8::Object> &object) {
28
+ auto ptr = object->GetAlignedPointerFromInternalField(0);
29
+ if (ptr == nullptr) {
30
+ return nullptr;
31
+ }
32
+ return static_cast<GPUQuerySetImpl *>(ptr);
33
+ }
34
+
35
+ v8::Local<v8::FunctionTemplate> GPUQuerySetImpl::GetCtor(v8::Isolate *isolate) {
36
+ auto cache = Caches::Get(isolate);
37
+ auto ctor = cache->GPUQuerySetTmpl.get();
38
+ if (ctor != nullptr) {
39
+ return ctor->Get(isolate);
40
+ }
41
+
42
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
43
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(2);
44
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "GPUQuerySet"));
45
+
46
+ auto tmpl = ctorTmpl->InstanceTemplate();
47
+ tmpl->SetInternalFieldCount(2);
48
+
49
+ tmpl->SetLazyDataProperty(
50
+ ConvertToV8String(isolate, "count"),
51
+ GetCount
52
+ );
53
+
54
+
55
+ tmpl->SetLazyDataProperty(
56
+ ConvertToV8String(isolate, "type"),
57
+ GetType
58
+ );
59
+
60
+
61
+ tmpl->SetLazyDataProperty(
62
+ ConvertToV8String(isolate, "label"),
63
+ GetLabel
64
+ );
65
+
66
+
67
+ tmpl->Set(
68
+ ConvertToV8String(isolate, "destroy"),
69
+ v8::FunctionTemplate::New(isolate, &Destroy));
70
+
71
+
72
+ cache->GPUQuerySetTmpl =
73
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
74
+ return ctorTmpl;
75
+ }
76
+
77
+ void
78
+ GPUQuerySetImpl::GetCount(v8::Local<v8::Name> name,
79
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
80
+ auto ptr = GetPointer(info.This());
81
+ auto isolate = info.GetIsolate();
82
+ if (ptr != nullptr) {
83
+ info.GetReturnValue().Set(canvas_native_webgpu_query_set_get_count(ptr->GetQuerySet()));
84
+ return;
85
+ }
86
+
87
+ info.GetReturnValue().Set(0);
88
+ }
89
+
90
+
91
+ void
92
+ GPUQuerySetImpl::GetType(v8::Local<v8::Name> name,
93
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
94
+ auto ptr = GetPointer(info.This());
95
+ auto isolate = info.GetIsolate();
96
+ if (ptr != nullptr) {
97
+ auto type = canvas_native_webgpu_query_set_get_type(ptr->GetQuerySet());
98
+ switch (type) {
99
+ case CanvasQueryTypeOcclusion:
100
+ info.GetReturnValue().Set(ConvertToV8String(isolate, "occlusion"));
101
+ break;
102
+ case CanvasQueryTypeTimestamp:
103
+ info.GetReturnValue().Set(ConvertToV8String(isolate, "timestamp"));
104
+ break;
105
+ }
106
+ return;
107
+ }
108
+
109
+ info.GetReturnValue().SetEmptyString();
110
+ }
111
+
112
+ void
113
+ GPUQuerySetImpl::GetLabel(v8::Local<v8::Name> name,
114
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
115
+ auto ptr = GetPointer(info.This());
116
+ auto isolate = info.GetIsolate();
117
+ if (ptr != nullptr) {
118
+ auto label = canvas_native_webgpu_query_set_get_label(ptr->GetQuerySet());
119
+ if (label != nullptr) {
120
+ info.GetReturnValue().Set(ConvertToV8String(isolate, label));
121
+ canvas_native_string_destroy(label);
122
+ return;
123
+ }
124
+ }
125
+
126
+ info.GetReturnValue().SetEmptyString();
127
+ }
128
+
129
+
130
+ void GPUQuerySetImpl::Destroy(const v8::FunctionCallbackInfo<v8::Value> &args) {
131
+ auto *ptr = GetPointer(args.This());
132
+ if (ptr == nullptr) {
133
+ return;
134
+ }
135
+ // todo
136
+
137
+ }
@@ -0,0 +1,55 @@
1
+ //
2
+ // Created by Osei Fortune on 23/06/2024.
3
+ //
4
+
5
+ #ifndef CANVAS_ANDROID_GPUQUERYSETIMPL_H
6
+ #define CANVAS_ANDROID_GPUQUERYSETIMPL_H
7
+
8
+ #include "Helpers.h"
9
+ #include "ObjectWrapperImpl.h"
10
+
11
+ class GPUQuerySetImpl : ObjectWrapperImpl {
12
+ public:
13
+ GPUQuerySetImpl(const CanvasGPUQuerySet *querySet);
14
+
15
+ ~GPUQuerySetImpl() {
16
+ canvas_native_webgpu_query_set_release(this->GetQuerySet());
17
+ }
18
+
19
+ const CanvasGPUQuerySet *GetQuerySet();
20
+
21
+ static void Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate);
22
+
23
+ static GPUQuerySetImpl *GetPointer(const v8::Local<v8::Object> &object);
24
+
25
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate);
26
+
27
+ static v8::Local<v8::Object> NewInstance(v8::Isolate *isolate, GPUQuerySetImpl *querySet) {
28
+ auto context = isolate->GetCurrentContext();
29
+ v8::EscapableHandleScope scope(isolate);
30
+ auto object = GPUQuerySetImpl::GetCtor(isolate)->GetFunction(
31
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
32
+ SetNativeType(object, NativeType::GPUQuerySet);
33
+ object->SetAlignedPointerInInternalField(0, querySet);
34
+ querySet->BindFinalizer(isolate, object);
35
+ return scope.Escape(object);
36
+ }
37
+
38
+ static void GetType(v8::Local<v8::Name> name,
39
+ const v8::PropertyCallbackInfo<v8::Value> &info);
40
+
41
+ static void GetCount(v8::Local<v8::Name> name,
42
+ const v8::PropertyCallbackInfo<v8::Value> &info);
43
+
44
+ static void GetLabel(v8::Local<v8::Name> name,
45
+ const v8::PropertyCallbackInfo<v8::Value> &info);
46
+
47
+ static void Destroy(const v8::FunctionCallbackInfo<v8::Value> &args);
48
+
49
+
50
+ private:
51
+ const CanvasGPUQuerySet *querySet_;
52
+ };
53
+
54
+
55
+ #endif //CANVAS_ANDROID_GPUQUERYSETIMPL_H