@nativescript/canvas 2.0.0-webgpu.3 → 2.0.0-webgpu.31

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 (198) hide show
  1. package/Canvas/common.d.ts +4 -9
  2. package/Canvas/common.js +37 -126
  3. package/Canvas/common.js.map +1 -1
  4. package/Canvas/index.android.d.ts +0 -1
  5. package/Canvas/index.android.js +45 -38
  6. package/Canvas/index.android.js.map +1 -1
  7. package/Canvas/index.d.ts +11 -3
  8. package/Canvas/index.ios.js +49 -40
  9. package/Canvas/index.ios.js.map +1 -1
  10. package/Canvas/utils.d.ts +3 -0
  11. package/Canvas/utils.js +85 -0
  12. package/Canvas/utils.js.map +1 -0
  13. package/Canvas2D/CanvasRenderingContext2D/index.d.ts +1 -0
  14. package/Canvas2D/CanvasRenderingContext2D/index.js +1 -0
  15. package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -1
  16. package/Dom/Group.d.ts +1 -2
  17. package/Dom/Group.js.map +1 -1
  18. package/Dom/Image.js +0 -1
  19. package/Dom/Image.js.map +1 -1
  20. package/Dom/Paint.d.ts +1 -1
  21. package/Dom/shapes/Path.d.ts +1 -1
  22. package/ImageAsset/index.js +77 -33
  23. package/ImageAsset/index.js.map +1 -1
  24. package/ImageBitmap/index.js +107 -20
  25. package/ImageBitmap/index.js.map +1 -1
  26. package/README.md +2 -4
  27. package/WebGL/WebGLRenderingContext/index.js +74 -31
  28. package/WebGL/WebGLRenderingContext/index.js.map +1 -1
  29. package/WebGL2/WebGL2RenderingContext/index.js +4 -4
  30. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
  31. package/WebGPU/GPU.js +4 -3
  32. package/WebGPU/GPU.js.map +1 -1
  33. package/WebGPU/GPUAdapter.d.ts +6 -3
  34. package/WebGPU/GPUAdapter.js +31 -0
  35. package/WebGPU/GPUAdapter.js.map +1 -1
  36. package/WebGPU/GPUBindGroup.d.ts +1 -0
  37. package/WebGPU/GPUBindGroup.js +3 -0
  38. package/WebGPU/GPUBindGroup.js.map +1 -1
  39. package/WebGPU/GPUBindGroupLayout.d.ts +1 -0
  40. package/WebGPU/GPUBindGroupLayout.js +3 -0
  41. package/WebGPU/GPUBindGroupLayout.js.map +1 -1
  42. package/WebGPU/GPUBuffer.js +10 -2
  43. package/WebGPU/GPUBuffer.js.map +1 -1
  44. package/WebGPU/GPUCanvasContext.d.ts +3 -2
  45. package/WebGPU/GPUCanvasContext.js +52 -10
  46. package/WebGPU/GPUCanvasContext.js.map +1 -1
  47. package/WebGPU/GPUCommandBuffer.d.ts +1 -0
  48. package/WebGPU/GPUCommandBuffer.js +3 -0
  49. package/WebGPU/GPUCommandBuffer.js.map +1 -1
  50. package/WebGPU/GPUCommandEncoder.d.ts +3 -9
  51. package/WebGPU/GPUCommandEncoder.js +94 -41
  52. package/WebGPU/GPUCommandEncoder.js.map +1 -1
  53. package/WebGPU/GPUComputePassEncoder.d.ts +1 -0
  54. package/WebGPU/GPUComputePassEncoder.js +3 -0
  55. package/WebGPU/GPUComputePassEncoder.js.map +1 -1
  56. package/WebGPU/GPUComputePipeline.d.ts +1 -0
  57. package/WebGPU/GPUComputePipeline.js +3 -0
  58. package/WebGPU/GPUComputePipeline.js.map +1 -1
  59. package/WebGPU/GPUDevice.d.ts +17 -79
  60. package/WebGPU/GPUDevice.js +76 -91
  61. package/WebGPU/GPUDevice.js.map +1 -1
  62. package/WebGPU/GPUExternalTexture.d.ts +1 -0
  63. package/WebGPU/GPUExternalTexture.js +3 -0
  64. package/WebGPU/GPUExternalTexture.js.map +1 -1
  65. package/WebGPU/GPUPipelineLayout.d.ts +1 -0
  66. package/WebGPU/GPUPipelineLayout.js +3 -0
  67. package/WebGPU/GPUPipelineLayout.js.map +1 -1
  68. package/WebGPU/GPUQuerySet.d.ts +1 -0
  69. package/WebGPU/GPUQuerySet.js +3 -0
  70. package/WebGPU/GPUQuerySet.js.map +1 -1
  71. package/WebGPU/GPUQueue.d.ts +1 -0
  72. package/WebGPU/GPUQueue.js +56 -14
  73. package/WebGPU/GPUQueue.js.map +1 -1
  74. package/WebGPU/GPURenderBundle.d.ts +1 -0
  75. package/WebGPU/GPURenderBundle.js +3 -0
  76. package/WebGPU/GPURenderBundle.js.map +1 -1
  77. package/WebGPU/GPURenderBundleEncoder.d.ts +4 -2
  78. package/WebGPU/GPURenderBundleEncoder.js +7 -3
  79. package/WebGPU/GPURenderBundleEncoder.js.map +1 -1
  80. package/WebGPU/GPURenderPassEncoder.d.ts +2 -1
  81. package/WebGPU/GPURenderPassEncoder.js +5 -2
  82. package/WebGPU/GPURenderPassEncoder.js.map +1 -1
  83. package/WebGPU/GPURenderPipeline.d.ts +1 -0
  84. package/WebGPU/GPURenderPipeline.js +3 -0
  85. package/WebGPU/GPURenderPipeline.js.map +1 -1
  86. package/WebGPU/GPUSampler.d.ts +1 -0
  87. package/WebGPU/GPUSampler.js +3 -0
  88. package/WebGPU/GPUSampler.js.map +1 -1
  89. package/WebGPU/GPUShaderModule.d.ts +1 -1
  90. package/WebGPU/GPUShaderModule.js +2 -2
  91. package/WebGPU/GPUShaderModule.js.map +1 -1
  92. package/WebGPU/GPUTexture.d.ts +1 -0
  93. package/WebGPU/GPUTexture.js +3 -0
  94. package/WebGPU/GPUTexture.js.map +1 -1
  95. package/WebGPU/GPUTextureView.d.ts +1 -0
  96. package/WebGPU/GPUTextureView.js +3 -0
  97. package/WebGPU/GPUTextureView.js.map +1 -1
  98. package/WebGPU/Interfaces.d.ts +95 -4
  99. package/WebGPU/Types.d.ts +9 -1
  100. package/WebGPU/Utils.d.ts +6 -0
  101. package/WebGPU/Utils.js +224 -0
  102. package/WebGPU/Utils.js.map +1 -1
  103. package/angular/esm2022/index.mjs +4 -4
  104. package/angular/fesm2022/nativescript-canvas-angular.mjs +4 -4
  105. package/package.json +1 -1
  106. package/platforms/android/canvas-release.aar +0 -0
  107. package/platforms/ios/CanvasNative.xcframework/Info.plist +5 -5
  108. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  109. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +40 -12
  110. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +7 -0
  111. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +227 -62
  112. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  113. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  114. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +7341 -6577
  115. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +62 -4
  116. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  117. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +62 -4
  118. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/NSCCanvas.nib +0 -0
  119. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  120. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +650 -644
  121. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  122. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +80 -24
  123. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +7 -0
  124. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +227 -62
  125. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  126. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  127. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  128. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +7341 -6577
  129. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +62 -4
  130. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  131. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +62 -4
  132. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +7341 -6577
  133. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +62 -4
  134. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  135. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +62 -4
  136. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/NSCCanvas.nib +0 -0
  137. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +27 -27
  138. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  139. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +652 -646
  140. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/x86_64/CanvasNative.yml +704 -684
  141. package/platforms/ios/src/NSOperationQueueWrapper.h +1 -1
  142. package/platforms/ios/src/NSOperationQueueWrapper.mm +41 -9
  143. package/platforms/ios/src/cpp/AsyncCallback.h +16 -8
  144. package/platforms/ios/src/cpp/CanvasJSIModule.cpp +208 -789
  145. package/platforms/ios/src/cpp/ImageAssetImpl.cpp +18 -28
  146. package/platforms/ios/src/cpp/ImageAssetImpl.h +3 -3
  147. package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +60 -3
  148. package/platforms/ios/src/cpp/ImageBitmapImpl.h +10 -3
  149. package/platforms/ios/src/cpp/PromiseCallback.h +1 -2
  150. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +1 -1
  151. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +3 -3
  152. package/platforms/ios/src/cpp/canvas2d/Path2D.h +5 -5
  153. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +106 -1
  154. package/platforms/ios/src/cpp/webgpu/GPUAdapterImpl.cpp +26 -23
  155. package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.cpp +31 -5
  156. package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.h +4 -1
  157. package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.cpp +26 -0
  158. package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.h +3 -0
  159. package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.cpp +41 -7
  160. package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.h +4 -0
  161. package/platforms/ios/src/cpp/webgpu/GPUCanvasContextImpl.cpp +11 -5
  162. package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.cpp +28 -1
  163. package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.h +3 -0
  164. package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.cpp +75 -79
  165. package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.h +4 -0
  166. package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.cpp +42 -14
  167. package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.h +3 -0
  168. package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.cpp +25 -0
  169. package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.h +2 -0
  170. package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.cpp +1597 -674
  171. package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.h +2 -0
  172. package/platforms/ios/src/cpp/webgpu/GPUImpl.cpp +2 -1
  173. package/platforms/ios/src/cpp/webgpu/GPUImpl.h +1 -1
  174. package/platforms/ios/src/cpp/webgpu/GPULabel.h +33 -0
  175. package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.cpp +26 -0
  176. package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.h +3 -1
  177. package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.cpp +1 -2
  178. package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.h +1 -1
  179. package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.cpp +50 -13
  180. package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.h +3 -0
  181. package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.cpp +43 -14
  182. package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.h +3 -0
  183. package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.cpp +25 -0
  184. package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.h +3 -0
  185. package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.cpp +39 -13
  186. package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.h +3 -0
  187. package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.cpp +25 -0
  188. package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.h +3 -0
  189. package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.cpp +26 -0
  190. package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.h +4 -1
  191. package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.cpp +24 -0
  192. package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.h +3 -0
  193. package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.cpp +34 -8
  194. package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.h +2 -0
  195. package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.cpp +26 -0
  196. package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.h +3 -0
  197. package/platforms/ios/src/cpp/webgpu/GPUUtils.h +511 -0
  198. package/utils.d.ts +1 -1
@@ -11,7 +11,7 @@
11
11
  #include "Helpers.h"
12
12
  #include "Common.h"
13
13
 
14
- ImageAssetImpl::ImageAssetImpl(ImageAsset *asset) : asset_(asset) {
14
+ ImageAssetImpl::ImageAssetImpl(const ImageAsset *asset) : asset_(asset) {
15
15
  }
16
16
 
17
17
  ImageAssetImpl::~ImageAssetImpl() {
@@ -240,7 +240,7 @@ void ImageAssetImpl::FromUrlCb(const v8::FunctionCallbackInfo<v8::Value> &args)
240
240
 
241
241
  ALooper_addFd(jsi_callback->looper_,
242
242
  jsi_callback->fd_[0],
243
- ALOOPER_POLL_CALLBACK,
243
+ 0,
244
244
  ALOOPER_EVENT_INPUT,
245
245
  [](int fd, int events,
246
246
  void *data) {
@@ -269,8 +269,6 @@ void ImageAssetImpl::FromUrlCb(const v8::FunctionCallbackInfo<v8::Value> &args)
269
269
  return 0;
270
270
  }, jsi_callback);
271
271
 
272
- ALooper_wake(jsi_callback->looper_);
273
-
274
272
 
275
273
  std::thread thread(
276
274
  [jsi_callback, asset](
@@ -412,19 +410,17 @@ void ImageAssetImpl::FromFileCb(const v8::FunctionCallbackInfo<v8::Value> &args)
412
410
 
413
411
  auto path = ConvertFromV8String(isolate, args[0]);
414
412
 
415
- auto asset = canvas_native_image_asset_reference(
416
- ptr->GetImageAsset());
413
+ auto asset = canvas_native_image_asset_reference(ptr->GetImageAsset());
417
414
 
418
415
  auto callback = args[1].As<v8::Function>();
419
416
 
420
-
421
417
  auto jsi_callback = new JSICallback(isolate, callback);
422
418
 
423
419
  #ifdef __ANDROID__
424
420
 
425
421
  ALooper_addFd(jsi_callback->looper_,
426
422
  jsi_callback->fd_[0],
427
- ALOOPER_POLL_CALLBACK,
423
+ 0,
428
424
  ALOOPER_EVENT_INPUT,
429
425
  [](int fd, int events,
430
426
  void *data) {
@@ -443,7 +439,7 @@ void ImageAssetImpl::FromFileCb(const v8::FunctionCallbackInfo<v8::Value> &args)
443
439
 
444
440
  v8::Local<v8::Value> args[1] = {v8::Boolean::New(isolate, done)};
445
441
 
446
- // v8::TryCatch tc(isolate);
442
+ v8::TryCatch tc(isolate);
447
443
 
448
444
  callback->Call(context, context->Global(), 1,
449
445
  args); // ignore JS return value
@@ -452,23 +448,23 @@ void ImageAssetImpl::FromFileCb(const v8::FunctionCallbackInfo<v8::Value> &args)
452
448
  return 0;
453
449
  }, jsi_callback);
454
450
 
455
- ALooper_wake(jsi_callback->looper_);
456
-
457
451
 
458
452
  std::thread thread(
459
453
  [jsi_callback, asset](
460
- const std::string &path) {
454
+ const std::string path) {
461
455
 
462
456
  auto done = canvas_native_image_asset_load_from_path(asset, path.c_str());
463
457
 
464
- canvas_native_image_asset_release(asset);
465
-
466
458
  write(jsi_callback->fd_[1],
467
459
  &done,
468
460
  sizeof(bool));
469
461
 
462
+ canvas_native_image_asset_release(asset);
463
+
470
464
  }, std::move(path));
471
465
 
466
+ thread.detach();
467
+
472
468
  #endif
473
469
 
474
470
 
@@ -501,11 +497,9 @@ void ImageAssetImpl::FromFileCb(const v8::FunctionCallbackInfo<v8::Value> &args)
501
497
  callback->Call(context, context->Global(), 1,
502
498
  args); // ignore JS return value
503
499
 
504
-
505
- delete jsi_callback;
506
- delete queue;
507
- delete current_queue;
508
-
500
+ delete queue;
501
+ delete current_queue;
502
+ delete jsi_callback;
509
503
 
510
504
  };
511
505
 
@@ -514,6 +508,8 @@ void ImageAssetImpl::FromFileCb(const v8::FunctionCallbackInfo<v8::Value> &args)
514
508
  };
515
509
 
516
510
  queue->addOperation(task);
511
+
512
+
517
513
  #endif
518
514
  }
519
515
 
@@ -572,7 +568,7 @@ void ImageAssetImpl::FromBytesCb(const v8::FunctionCallbackInfo<v8::Value> &args
572
568
 
573
569
  ALooper_addFd(jsi_callback->looper_,
574
570
  jsi_callback->fd_[0],
575
- ALOOPER_POLL_CALLBACK,
571
+ 0,
576
572
  ALOOPER_EVENT_INPUT,
577
573
  [](int fd, int events,
578
574
  void *data) {
@@ -600,9 +596,6 @@ void ImageAssetImpl::FromBytesCb(const v8::FunctionCallbackInfo<v8::Value> &args
600
596
  return 0;
601
597
  }, jsi_callback);
602
598
 
603
- ALooper_wake(jsi_callback->looper_);
604
-
605
-
606
599
  std::thread thread(
607
600
  [jsi_callback, asset, data, size]() {
608
601
 
@@ -713,7 +706,7 @@ void ImageAssetImpl::SaveCb(const v8::FunctionCallbackInfo<v8::Value> &args) {
713
706
 
714
707
  ALooper_addFd(jsi_callback->looper_,
715
708
  jsi_callback->fd_[0],
716
- ALOOPER_POLL_CALLBACK,
709
+ 0,
717
710
  ALOOPER_EVENT_INPUT,
718
711
  [](int fd, int events,
719
712
  void *data) {
@@ -741,9 +734,6 @@ void ImageAssetImpl::SaveCb(const v8::FunctionCallbackInfo<v8::Value> &args) {
741
734
  return 0;
742
735
  }, jsi_callback);
743
736
 
744
- ALooper_wake(jsi_callback->looper_);
745
-
746
-
747
737
  std::thread thread(
748
738
  [jsi_callback, asset, format](
749
739
  const std::string &path) {
@@ -813,7 +803,7 @@ void ImageAssetImpl::SaveCb(const v8::FunctionCallbackInfo<v8::Value> &args) {
813
803
  }
814
804
  */
815
805
 
816
- ImageAsset *ImageAssetImpl::GetImageAsset() {
806
+ const ImageAsset *ImageAssetImpl::GetImageAsset() {
817
807
  return this->asset_;
818
808
  }
819
809
 
@@ -19,11 +19,11 @@
19
19
  class ImageAssetImpl : ObjectWrapperImpl {
20
20
  public:
21
21
 
22
- explicit ImageAssetImpl(ImageAsset *asset);
22
+ explicit ImageAssetImpl(const ImageAsset *asset);
23
23
 
24
24
  ~ImageAssetImpl();
25
25
 
26
- ImageAsset *GetImageAsset();
26
+ const ImageAsset *GetImageAsset();
27
27
 
28
28
  static void Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate);
29
29
 
@@ -67,5 +67,5 @@ public:
67
67
 
68
68
 
69
69
  private:
70
- ImageAsset *asset_;
70
+ const ImageAsset *asset_;
71
71
  };
@@ -5,10 +5,10 @@
5
5
  #include "ImageBitmapImpl.h"
6
6
  #include "Caches.h"
7
7
 
8
- ImageBitmapImpl::ImageBitmapImpl(ImageAsset* asset)
8
+ ImageBitmapImpl::ImageBitmapImpl(const ImageAsset *asset)
9
9
  : bitmap_(asset) {}
10
10
 
11
- ImageBitmapImpl::~ImageBitmapImpl(){
11
+ ImageBitmapImpl::~ImageBitmapImpl() {
12
12
  canvas_native_image_asset_release(bitmap_);
13
13
  this->bitmap_ = nullptr;
14
14
  }
@@ -26,6 +26,23 @@ void ImageBitmapImpl::Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isol
26
26
  canvasModule->Set(context, ConvertToV8String(isolate, "ImageBitmap"), func);
27
27
  }
28
28
 
29
+
30
+ void ImageBitmapImpl::FromAsset(const v8::FunctionCallbackInfo<v8::Value> &args) {
31
+ auto asset = args[0];
32
+ auto type = GetNativeType(asset);
33
+ auto isolate = args.GetIsolate();
34
+ if (type == NativeType::ImageAsset){
35
+ auto ptr = ImageAssetImpl::GetPointer(asset.As<v8::Object>());
36
+ auto ret = canvas_native_image_asset_reference(ptr->GetImageAsset());
37
+ auto bitmap = new ImageBitmapImpl(ret);
38
+ auto data = v8::External::New(isolate, bitmap);
39
+ auto object = ImageBitmapImpl::NewInstance(isolate, data);
40
+ args.GetReturnValue().Set(object);
41
+ return;
42
+ }
43
+ args.GetReturnValue().SetNull();
44
+ }
45
+
29
46
  ImageBitmapImpl *ImageBitmapImpl::GetPointer(v8::Local<v8::Object> object) {
30
47
  auto ptr = object->GetAlignedPointerFromInternalField(0);
31
48
  if (ptr == nullptr) {
@@ -45,7 +62,10 @@ v8::Local<v8::FunctionTemplate> ImageBitmapImpl::GetCtor(v8::Isolate *isolate) {
45
62
  ctorTmpl->InstanceTemplate()->SetInternalFieldCount(2);
46
63
  ctorTmpl->SetClassName(ConvertToV8String(isolate, "ImageBitmap"));
47
64
 
65
+ ctorTmpl->Set(ConvertToV8String(isolate, "fromAsset"), v8::FunctionTemplate::New(isolate, FromAsset));
66
+
48
67
  auto tmpl = ctorTmpl->InstanceTemplate();
68
+
49
69
  tmpl->SetInternalFieldCount(2);
50
70
  tmpl->SetAccessor(
51
71
  ConvertToV8String(isolate, "width"), GetWidth);
@@ -56,6 +76,13 @@ v8::Local<v8::FunctionTemplate> ImageBitmapImpl::GetCtor(v8::Isolate *isolate) {
56
76
  tmpl->Set(
57
77
  ConvertToV8String(isolate, "close"), v8::FunctionTemplate::New(isolate, Close));
58
78
 
79
+ tmpl->SetAccessor(
80
+ ConvertToV8String(isolate, "__addr"),
81
+ GetAddr);
82
+
83
+ tmpl->Set(
84
+ ConvertToV8String(isolate, "__getRef"),
85
+ v8::FunctionTemplate::New(isolate, GetReference));
59
86
 
60
87
  cache->ImageBitmapTmpl =
61
88
  std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
@@ -93,6 +120,8 @@ void ImageBitmapImpl::Close(const v8::FunctionCallbackInfo<v8::Value> &args) {
93
120
  return;
94
121
  }
95
122
 
123
+ canvas_native_image_asset_close(ptr->GetImageAsset());
124
+
96
125
  ptr->closed_ = true;
97
126
  }
98
127
 
@@ -184,6 +213,34 @@ ImageBitmapImpl::HandleOptions(v8::Isolate *isolate, const v8::Local<v8::Value>
184
213
  return ret;
185
214
  }
186
215
 
187
- ImageAsset* ImageBitmapImpl::GetImageAsset() {
216
+
217
+ void
218
+ ImageBitmapImpl::GetAddr(v8::Local<v8::String> name,
219
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
220
+ auto ptr = GetPointer(info.This());
221
+ if (ptr != nullptr) {
222
+ auto isolate = info.GetIsolate();
223
+ auto ret = std::to_string(canvas_native_image_asset_get_addr(ptr->GetImageAsset()));
224
+ info.GetReturnValue().Set(ConvertToV8String(isolate, ret));
225
+ return;
226
+ }
227
+ info.GetReturnValue().SetEmptyString();
228
+ }
229
+
230
+ void
231
+ ImageBitmapImpl::GetReference(const v8::FunctionCallbackInfo<v8::Value> &args) {
232
+ auto ptr = GetPointer(args.This());
233
+ if (ptr != nullptr) {
234
+ auto isolate = args.GetIsolate();
235
+ auto reference = canvas_native_image_asset_reference(ptr->GetImageAsset());
236
+ auto ret = std::to_string(canvas_native_image_asset_get_addr(reference));
237
+ args.GetReturnValue().Set(ConvertToV8String(isolate, ret));
238
+ return;
239
+ }
240
+
241
+ args.GetReturnValue().SetEmptyString();
242
+ }
243
+
244
+ const ImageAsset *ImageBitmapImpl::GetImageAsset() {
188
245
  return this->bitmap_;
189
246
  }
@@ -21,7 +21,7 @@ struct Options {
21
21
 
22
22
  class ImageBitmapImpl : public ObjectWrapperImpl {
23
23
  public:
24
- explicit ImageBitmapImpl(ImageAsset *asset);
24
+ explicit ImageBitmapImpl(const ImageAsset *asset);
25
25
 
26
26
  ~ImageBitmapImpl();
27
27
 
@@ -46,7 +46,7 @@ public:
46
46
 
47
47
  static Options HandleOptions(v8::Isolate *isolate, const v8::Local<v8::Value> &options);
48
48
 
49
- ImageAsset *GetImageAsset();
49
+ const ImageAsset *GetImageAsset();
50
50
 
51
51
  static void Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate);
52
52
 
@@ -60,9 +60,16 @@ public:
60
60
  static void GetHeight(v8::Local<v8::String> name,
61
61
  const v8::PropertyCallbackInfo<v8::Value> &info);
62
62
 
63
+ static void GetReference(const v8::FunctionCallbackInfo<v8::Value> &args);
64
+
65
+ static void GetAddr(v8::Local<v8::String> name,
66
+ const v8::PropertyCallbackInfo<v8::Value> &info);
67
+
63
68
  static void Close(const v8::FunctionCallbackInfo<v8::Value> &args);
64
69
 
70
+ static void FromAsset(const v8::FunctionCallbackInfo<v8::Value> &args);
71
+
65
72
  private:
66
- ImageAsset *bitmap_;
73
+ const ImageAsset *bitmap_;
67
74
  bool closed_ = false;
68
75
  };
@@ -163,7 +163,7 @@ struct PromiseCallback {
163
163
  auto data = new PromiseCallback(this->inner_);
164
164
  ALooper_addFd(looper,
165
165
  fd,
166
- ALOOPER_POLL_CALLBACK,
166
+ 0,
167
167
  ALOOPER_EVENT_INPUT,
168
168
  [](int fd, int events,
169
169
  void *data) {
@@ -175,7 +175,6 @@ struct PromiseCallback {
175
175
  return 0;
176
176
  }, (void *) data);
177
177
 
178
- ALooper_wake(looper);
179
178
  inner->isPrepared_ = true;
180
179
  }
181
180
 
@@ -630,7 +630,7 @@ void CanvasRenderingContext2DImpl::DrawPoints(const v8::FunctionCallbackInfo<v8:
630
630
  }
631
631
 
632
632
  canvas_native_context_draw_points(
633
- ptr->GetContext(), pointMode,
633
+ ptr->GetContext(), (int32_t)pointMode,
634
634
  store.data(), store.size());
635
635
 
636
636
 
@@ -636,7 +636,7 @@ public:
636
636
  static void DrawImage(const v8::FunctionCallbackInfo<v8::Value> &args);
637
637
 
638
638
  static void
639
- DrawImageDxDyAssetImpl(CanvasRenderingContext2DImpl *ptr, ImageAsset *asset, double dx,
639
+ DrawImageDxDyAssetImpl(CanvasRenderingContext2DImpl *ptr, const ImageAsset *asset, double dx,
640
640
  double dy) {
641
641
  if (asset != nullptr) {
642
642
  canvas_native_context_draw_image_dx_dy_asset(
@@ -690,7 +690,7 @@ public:
690
690
  }
691
691
  }
692
692
 
693
- static void DrawImageDxDyDwDhAssetImpl(CanvasRenderingContext2DImpl *ptr, ImageAsset *asset,
693
+ static void DrawImageDxDyDwDhAssetImpl(CanvasRenderingContext2DImpl *ptr, const ImageAsset *asset,
694
694
  double dx, double dy, double dw, double dh) {
695
695
 
696
696
 
@@ -783,7 +783,7 @@ public:
783
783
 
784
784
  static void
785
785
  DrawImageAssetImpl(CanvasRenderingContext2DImpl *ptr,
786
- ImageAsset *asset, double sx,
786
+ const ImageAsset *asset, double sx,
787
787
  double sy, double sw, double sh, double dx, double dy, double dw,
788
788
  double dh) {
789
789
 
@@ -199,7 +199,7 @@ public:
199
199
  double rotation,
200
200
  double start_angle,
201
201
  double end_angle,
202
- double anticlockwise) {
202
+ bool anticlockwise) {
203
203
 
204
204
  canvas_native_path_ellipse(
205
205
  receiver_obj,
@@ -222,7 +222,7 @@ public:
222
222
  double rotation,
223
223
  double start_angle,
224
224
  double end_angle,
225
- double anticlockwise) {
225
+ bool anticlockwise) {
226
226
  Path2D *ptr = GetPointer(receiver_obj);
227
227
  if (ptr == nullptr) {
228
228
  return;
@@ -362,9 +362,9 @@ public:
362
362
 
363
363
  canvas_native_path_round_rect(
364
364
  ptr->GetPath(),
365
- x, y,
366
- width,
367
- height, buf.data(),
365
+ (float)x, (float)y,
366
+ (float)width,
367
+ (float)height, buf.data(),
368
368
  buf.size());
369
369
 
370
370
  }
@@ -4350,8 +4350,113 @@ WebGLRenderingContext::TexImage2D(const v8::FunctionCallbackInfo<v8::Value> &arg
4350
4350
  ptr->GetState()
4351
4351
  );
4352
4352
  return;
4353
- }
4353
+ } else {
4354
+ auto objectType = GetNativeType(value);
4355
+
4356
+ switch (objectType) {
4357
+ case NativeType::ImageAsset: {
4358
+ auto image_asset = ImageAssetImpl::GetPointer(value.As<v8::Object>());
4359
+
4360
+ if (image_asset !=
4361
+ nullptr) {
4362
+
4363
+ canvas_native_webgl2_tex_image2d_image_asset(
4364
+ target,
4365
+ level,
4366
+ internalformat,
4367
+ width,
4368
+ height,
4369
+ border,
4370
+ format,
4371
+ type,
4372
+ image_asset->GetImageAsset(),
4373
+ ptr->GetState()
4374
+ );
4375
+ }
4376
+ return;
4377
+ }
4378
+ case NativeType::ImageBitmap: {
4379
+ auto image_bitmap = ImageBitmapImpl::GetPointer(value.As<v8::Object>());
4380
+
4381
+ if (image_bitmap !=
4382
+ nullptr) {
4383
+ canvas_native_webgl2_tex_image2d_image_asset(
4384
+ target,
4385
+ level,
4386
+ internalformat,
4387
+ width,
4388
+ height,
4389
+ border,
4390
+ format,
4391
+ type,
4392
+ image_bitmap->GetImageAsset(),
4393
+ ptr->GetState()
4394
+ );
4395
+ }
4396
+ return;
4397
+ }
4398
+ case NativeType::CanvasRenderingContext2D: {
4399
+ auto canvas_2d = CanvasRenderingContext2DImpl::GetPointer(
4400
+ value.As<v8::Object>());
4401
+
4402
+ if (canvas_2d != nullptr) {
4403
+ canvas_native_webgl2_tex_image2d_canvas2d(
4404
+ target,
4405
+ level,
4406
+ internalformat,
4407
+ width,
4408
+ height,
4409
+ border,
4410
+ format,
4411
+ type,
4412
+ canvas_2d->GetContext(),
4413
+ ptr->GetState()
4414
+ );
4415
+ }
4416
+
4417
+ return;
4418
+ }
4419
+ case NativeType::WebGLRenderingContextBase: {
4420
+ auto gl = WebGLRenderingContext::GetPointer(value.As<v8::Object>());
4421
+
4422
+ if (gl != nullptr) {
4423
+ canvas_native_webgl2_tex_image2d_webgl(
4424
+ target,
4425
+ level,
4426
+ internalformat,
4427
+ width,
4428
+ height,
4429
+ border,
4430
+ format,
4431
+ type,
4432
+ gl->GetState(),
4433
+ ptr->GetState()
4434
+ );
4435
+ }
4436
+ return;
4437
+ }
4438
+ case NativeType::ImageData: {
4439
+ auto image_data = ImageDataImpl::GetPointer(value.As<v8::Object>());
4440
+ if (image_data != nullptr) {
4441
+ canvas_native_webgl2_tex_image2d_image_data(
4442
+ target,
4443
+ level,
4444
+ internalformat,
4445
+ width,
4446
+ height,
4447
+ border,
4448
+ format,
4449
+ type,
4450
+ image_data->GetImageData(),
4451
+ ptr->GetState()
4452
+ );
4453
+ }
4354
4454
 
4455
+ }
4456
+ default:
4457
+ break;
4458
+ }
4459
+ }
4355
4460
  }
4356
4461
  }
4357
4462
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "GPUAdapterImpl.h"
6
6
  #include "Caches.h"
7
-
7
+ #include "GPULabel.h"
8
8
  GPUAdapterImpl::GPUAdapterImpl(const CanvasGPUAdapter *adapter) : adapter_(adapter) {}
9
9
 
10
10
  const CanvasGPUAdapter *GPUAdapterImpl::GetGPUAdapter() {
@@ -61,7 +61,6 @@ v8::Local<v8::FunctionTemplate> GPUAdapterImpl::GetCtor(v8::Isolate *isolate) {
61
61
  GetLimits
62
62
  );
63
63
 
64
-
65
64
  tmpl->Set(
66
65
  ConvertToV8String(isolate, "requestAdapterInfo"),
67
66
  v8::FunctionTemplate::New(isolate, &RequestAdapterInfo));
@@ -90,19 +89,19 @@ GPUAdapterImpl::GetFeatures(v8::Local<v8::Name> name,
90
89
 
91
90
  auto len = canvas_native_string_buffer_get_length(features);
92
91
 
93
- auto map = v8::Map::New(isolate);
92
+ auto set = v8::Set::New(isolate);
94
93
  for (int i = 0; i < len; ++i) {
95
94
  auto item = canvas_native_string_buffer_get_value_at(features, i);
96
95
  if (item != nullptr) {
97
- auto keyValue = ConvertToV8OneByteString(isolate, (char *) item);
98
- map->Set(context, keyValue, keyValue);
96
+ auto keyValue = ConvertToV8String(isolate, (char *) item);
97
+ set->Add(context, keyValue);
99
98
  canvas_native_string_destroy(item);
100
99
  }
101
100
 
102
101
  }
103
102
  canvas_native_string_buffer_release(features);
104
103
 
105
- info.GetReturnValue().Set(map);
104
+ info.GetReturnValue().Set(set);
106
105
 
107
106
  return;
108
107
  }
@@ -162,11 +161,14 @@ struct RequestData {
162
161
  char *error_;
163
162
  const CanvasGPUDevice *device_;
164
163
  char **required_features_data_;
164
+ size_t required_features_data_size;
165
165
 
166
166
  ~RequestData() {
167
167
  if (required_features_data_ != nullptr) {
168
- delete[] required_features_data_;
169
- required_features_data_ = nullptr;
168
+ for (size_t i = 0; i < required_features_data_size; ++i) {
169
+ delete[] required_features_data_[i];
170
+ }
171
+ delete[] required_features_data_;
170
172
  }
171
173
 
172
174
  if (error_ != nullptr) {
@@ -190,7 +192,7 @@ void GPUAdapterImpl::RequestDevice(const v8::FunctionCallbackInfo<v8::Value> &ar
190
192
 
191
193
  auto func = cb.As<v8::Function>();
192
194
 
193
- std::string label;
195
+ GPULabel label;
194
196
 
195
197
  std::vector<std::string> required_features_buf;
196
198
 
@@ -201,10 +203,9 @@ void GPUAdapterImpl::RequestDevice(const v8::FunctionCallbackInfo<v8::Value> &ar
201
203
  v8::Local<v8::Value> labelValue;
202
204
  options->Get(context, ConvertToV8String(isolate, "label")).ToLocal(
203
205
  &labelValue);
206
+
207
+ label = GPULabel(isolate, labelValue);
204
208
 
205
- if (!labelValue.IsEmpty() && labelValue->IsString()) {
206
- label = ConvertFromV8String(isolate, labelValue);
207
- }
208
209
 
209
210
  v8::Local<v8::Value> requiredFeaturesValue;
210
211
 
@@ -212,11 +213,9 @@ void GPUAdapterImpl::RequestDevice(const v8::FunctionCallbackInfo<v8::Value> &ar
212
213
  &requiredFeaturesValue);
213
214
 
214
215
 
215
- if (!requiredFeaturesValue.IsEmpty() && requiredFeaturesValue->IsSet()) {
216
- v8::Local<v8::Set> requiredFeaturesSet = requiredFeaturesValue.As<v8::Set>();
217
- v8::Local<v8::Array> requiredFeatures = requiredFeaturesSet->AsArray();
216
+ if (!requiredFeaturesValue.IsEmpty() && requiredFeaturesValue->IsArray()) {
217
+ v8::Local<v8::Array> requiredFeatures = requiredFeaturesValue.As<v8::Array>();
218
218
  auto len = requiredFeatures->Length();
219
-
220
219
  for (int i = 0; i < len; i++) {
221
220
  auto item = requiredFeatures->Get(context, i);
222
221
  if (!item.IsEmpty()) {
@@ -245,10 +244,12 @@ void GPUAdapterImpl::RequestDevice(const v8::FunctionCallbackInfo<v8::Value> &ar
245
244
  size_t required_features_data_length = required_features_buf.size();
246
245
 
247
246
  if (required_features_data_length > 0) {
248
- required_features_data = new char *[required_features_data_length + 1];
247
+ required_features_data = new char *[required_features_data_length];
249
248
 
250
249
  for (size_t i = 0; i < required_features_data_length; ++i) {
251
- std::strcpy(required_features_data[i], required_features_buf[i].c_str());
250
+ required_features_data[i] = new char[required_features_buf[i].size() + 1];
251
+ auto src = required_features_buf[i].c_str();
252
+ std::strcpy(required_features_data[i], src);
252
253
  }
253
254
  }
254
255
 
@@ -297,7 +298,8 @@ void GPUAdapterImpl::RequestDevice(const v8::FunctionCallbackInfo<v8::Value> &ar
297
298
  callback->Call(context, context->Global(),
298
299
  1,
299
300
  args); // ignore JS return value
300
- delete static_cast<AsyncCallback *>(data);
301
+
302
+
301
303
  } else {
302
304
 
303
305
  auto impl = new GPUDeviceImpl(requestData->device_);
@@ -311,14 +313,14 @@ void GPUAdapterImpl::RequestDevice(const v8::FunctionCallbackInfo<v8::Value> &ar
311
313
  callback->Call(context, context->Global(),
312
314
  2,
313
315
  args); // ignore JS return value
314
-
315
- delete static_cast<AsyncCallback *>(data);
316
316
  }
317
317
 
318
318
  if (requestData != nullptr) {
319
319
  delete requestData;
320
320
  requestData = nullptr;
321
321
  }
322
+
323
+ delete static_cast<AsyncCallback *>(data);
322
324
  }
323
325
  }
324
326
  }
@@ -330,14 +332,15 @@ void GPUAdapterImpl::RequestDevice(const v8::FunctionCallbackInfo<v8::Value> &ar
330
332
  inner->data = new RequestData{
331
333
  nullptr,
332
334
  nullptr,
333
- required_features_data
335
+ required_features_data,
336
+ required_features_data_length
334
337
  };
335
338
  }
336
339
 
337
340
  callback->prepare();
338
341
 
339
342
  canvas_native_webgpu_adapter_request_device(ptr->GetGPUAdapter(),
340
- label.empty() ? nullptr : label.c_str(),
343
+ *label,
341
344
  required_features_data,
342
345
  required_features_data_length,
343
346
  limits,