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

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 (197) 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 +73 -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/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  108. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +39 -10
  109. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +7 -0
  110. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +227 -62
  111. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  112. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  113. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +1635 -151
  114. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +57 -1
  115. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  116. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +57 -1
  117. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/NSCCanvas.nib +0 -0
  118. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  119. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +690 -644
  120. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  121. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +78 -20
  122. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +7 -0
  123. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +227 -62
  124. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  125. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  126. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  127. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +1635 -151
  128. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +57 -1
  129. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  130. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +57 -1
  131. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +1635 -151
  132. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +57 -1
  133. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  134. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +57 -1
  135. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/NSCCanvas.nib +0 -0
  136. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +27 -27
  137. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  138. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +692 -646
  139. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/x86_64/CanvasNative.yml +730 -684
  140. package/platforms/ios/src/NSOperationQueueWrapper.h +1 -1
  141. package/platforms/ios/src/NSOperationQueueWrapper.mm +41 -9
  142. package/platforms/ios/src/cpp/AsyncCallback.h +16 -8
  143. package/platforms/ios/src/cpp/CanvasJSIModule.cpp +208 -789
  144. package/platforms/ios/src/cpp/ImageAssetImpl.cpp +18 -28
  145. package/platforms/ios/src/cpp/ImageAssetImpl.h +3 -3
  146. package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +60 -3
  147. package/platforms/ios/src/cpp/ImageBitmapImpl.h +10 -3
  148. package/platforms/ios/src/cpp/PromiseCallback.h +1 -2
  149. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +1 -1
  150. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +3 -3
  151. package/platforms/ios/src/cpp/canvas2d/Path2D.h +5 -5
  152. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +106 -1
  153. package/platforms/ios/src/cpp/webgpu/GPUAdapterImpl.cpp +26 -23
  154. package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.cpp +31 -5
  155. package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.h +4 -1
  156. package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.cpp +26 -0
  157. package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.h +3 -0
  158. package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.cpp +41 -7
  159. package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.h +4 -0
  160. package/platforms/ios/src/cpp/webgpu/GPUCanvasContextImpl.cpp +11 -5
  161. package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.cpp +28 -1
  162. package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.h +3 -0
  163. package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.cpp +75 -79
  164. package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.h +4 -0
  165. package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.cpp +42 -14
  166. package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.h +3 -0
  167. package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.cpp +25 -0
  168. package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.h +2 -0
  169. package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.cpp +1597 -674
  170. package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.h +2 -0
  171. package/platforms/ios/src/cpp/webgpu/GPUImpl.cpp +2 -1
  172. package/platforms/ios/src/cpp/webgpu/GPUImpl.h +1 -1
  173. package/platforms/ios/src/cpp/webgpu/GPULabel.h +33 -0
  174. package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.cpp +26 -0
  175. package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.h +3 -1
  176. package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.cpp +1 -2
  177. package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.h +1 -1
  178. package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.cpp +50 -13
  179. package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.h +3 -0
  180. package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.cpp +43 -14
  181. package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.h +3 -0
  182. package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.cpp +25 -0
  183. package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.h +3 -0
  184. package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.cpp +39 -13
  185. package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.h +3 -0
  186. package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.cpp +25 -0
  187. package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.h +3 -0
  188. package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.cpp +26 -0
  189. package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.h +4 -1
  190. package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.cpp +24 -0
  191. package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.h +3 -0
  192. package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.cpp +34 -8
  193. package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.h +2 -0
  194. package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.cpp +26 -0
  195. package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.h +3 -0
  196. package/platforms/ios/src/cpp/webgpu/GPUUtils.h +511 -0
  197. package/utils.d.ts +1 -1
@@ -47,7 +47,33 @@ v8::Local<v8::FunctionTemplate> GPUSamplerImpl::GetCtor(v8::Isolate *isolate) {
47
47
  auto tmpl = ctorTmpl->InstanceTemplate();
48
48
  tmpl->SetInternalFieldCount(2);
49
49
 
50
+ tmpl->SetLazyDataProperty(
51
+ ConvertToV8String(isolate, "label"),
52
+ GetLabel
53
+ );
54
+
50
55
  cache->GPUSamplerTmpl =
51
56
  std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
52
57
  return ctorTmpl;
53
58
  }
59
+
60
+
61
+ void
62
+ GPUSamplerImpl::GetLabel(v8::Local<v8::Name> name,
63
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
64
+ auto ptr = GetPointer(info.This());
65
+ if (ptr != nullptr) {
66
+ auto label = canvas_native_webgpu_sampler_get_label(ptr->sampler_);
67
+ if (label == nullptr) {
68
+ info.GetReturnValue().SetEmptyString();
69
+ return;
70
+ }
71
+ info.GetReturnValue().Set(
72
+ ConvertToV8String(info.GetIsolate(), label)
73
+ );
74
+ canvas_native_string_destroy(label);
75
+ return;
76
+ }
77
+
78
+ info.GetReturnValue().SetEmptyString();
79
+ }
@@ -9,7 +9,7 @@
9
9
  #include "Helpers.h"
10
10
  #include "ObjectWrapperImpl.h"
11
11
 
12
- class GPUSamplerImpl: ObjectWrapperImpl {
12
+ class GPUSamplerImpl : ObjectWrapperImpl {
13
13
  public:
14
14
  explicit GPUSamplerImpl(const CanvasGPUSampler *sampler);
15
15
 
@@ -36,6 +36,9 @@ public:
36
36
  return scope.Escape(object);
37
37
  }
38
38
 
39
+ static void GetLabel(v8::Local<v8::Name> name,
40
+ const v8::PropertyCallbackInfo<v8::Value> &info);
41
+
39
42
 
40
43
  private:
41
44
  const CanvasGPUSampler *sampler_;
@@ -47,10 +47,34 @@ v8::Local<v8::FunctionTemplate> GPUShaderModuleImpl::GetCtor(v8::Isolate *isolat
47
47
  auto tmpl = ctorTmpl->InstanceTemplate();
48
48
  tmpl->SetInternalFieldCount(2);
49
49
 
50
+ tmpl->SetLazyDataProperty(
51
+ ConvertToV8String(isolate, "label"),
52
+ GetLabel
53
+ );
50
54
 
51
55
  cache->GPUShaderModuleTmpl =
52
56
  std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
53
57
  return ctorTmpl;
54
58
  }
55
59
 
60
+ void
61
+ GPUShaderModuleImpl::GetLabel(v8::Local<v8::Name> name,
62
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
63
+ auto ptr = GetPointer(info.This());
64
+ if (ptr != nullptr) {
65
+ auto label = canvas_native_webgpu_shader_module_get_label(ptr->shaderModule_);
66
+ if (label == nullptr) {
67
+ info.GetReturnValue().SetEmptyString();
68
+ return;
69
+ }
70
+ info.GetReturnValue().Set(
71
+ ConvertToV8String(info.GetIsolate(), label)
72
+ );
73
+ canvas_native_string_destroy(label);
74
+ return;
75
+ }
76
+
77
+ info.GetReturnValue().SetEmptyString();
78
+ }
79
+
56
80
 
@@ -37,6 +37,9 @@ public:
37
37
  return scope.Escape(object);
38
38
  }
39
39
 
40
+ static void GetLabel(v8::Local<v8::Name> name,
41
+ const v8::PropertyCallbackInfo<v8::Value> &info);
42
+
40
43
  private:
41
44
  const CanvasGPUShaderModule *shaderModule_;
42
45
  };
@@ -5,6 +5,7 @@
5
5
  #include "GPUTextureImpl.h"
6
6
  #include "Caches.h"
7
7
  #include "GPUTextureViewImpl.h"
8
+ #include "GPULabel.h"
8
9
 
9
10
  GPUTextureImpl::GPUTextureImpl(const CanvasGPUTexture *texture) : texture_(texture) {}
10
11
 
@@ -47,6 +48,10 @@ v8::Local<v8::FunctionTemplate> GPUTextureImpl::GetCtor(v8::Isolate *isolate) {
47
48
  auto tmpl = ctorTmpl->InstanceTemplate();
48
49
  tmpl->SetInternalFieldCount(2);
49
50
 
51
+ tmpl->SetLazyDataProperty(
52
+ ConvertToV8String(isolate, "label"),
53
+ GetLabel
54
+ );
50
55
 
51
56
  tmpl->Set(
52
57
  ConvertToV8String(isolate, "destroy"),
@@ -107,6 +112,27 @@ v8::Local<v8::FunctionTemplate> GPUTextureImpl::GetCtor(v8::Isolate *isolate) {
107
112
  return ctorTmpl;
108
113
  }
109
114
 
115
+
116
+ void
117
+ GPUTextureImpl::GetLabel(v8::Local<v8::Name> name,
118
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
119
+ auto ptr = GetPointer(info.This());
120
+ if (ptr != nullptr) {
121
+ auto label = canvas_native_webgpu_texture_get_label(ptr->texture_);
122
+ if (label == nullptr) {
123
+ info.GetReturnValue().SetEmptyString();
124
+ return;
125
+ }
126
+ info.GetReturnValue().Set(
127
+ ConvertToV8String(info.GetIsolate(), label)
128
+ );
129
+ canvas_native_string_destroy(label);
130
+ return;
131
+ }
132
+
133
+ info.GetReturnValue().SetEmptyString();
134
+ }
135
+
110
136
  void
111
137
  GPUTextureImpl::GetDimension(v8::Local<v8::Name> name,
112
138
  const v8::PropertyCallbackInfo<v8::Value> &info) {
@@ -249,6 +275,7 @@ void GPUTextureImpl::CreateView(const v8::FunctionCallbackInfo<v8::Value> &args)
249
275
  aspect, 0, -1, 0, -1
250
276
  };
251
277
 
278
+ GPULabel label;
252
279
 
253
280
  if (descVal->IsObject()) {
254
281
  descriptor = new CanvasCreateTextureViewDescriptor{};
@@ -269,7 +296,6 @@ void GPUTextureImpl::CreateView(const v8::FunctionCallbackInfo<v8::Value> &args)
269
296
  }
270
297
 
271
298
 
272
-
273
299
  v8::Local<v8::Value> arrayLayerCountVal;
274
300
  if (descObj->Get(context, ConvertToV8String(isolate, "arrayLayerCount")).ToLocal(
275
301
  &arrayLayerCountVal) && arrayLayerCountVal->IsInt32()) {
@@ -297,16 +323,15 @@ void GPUTextureImpl::CreateView(const v8::FunctionCallbackInfo<v8::Value> &args)
297
323
  descriptor->range = &range;
298
324
 
299
325
 
300
-
301
326
  v8::Local<v8::Value> formatVal;
302
327
  descObj->Get(context, ConvertToV8String(isolate, "format")).ToLocal(&formatVal);
303
328
  auto formatStr = ConvertFromV8String(isolate, formatVal);
304
329
 
305
- descriptor->format = CanvasOptionalGPUTextureFormat {
306
- CanvasOptionalGPUTextureFormatNone
330
+ descriptor->format = CanvasOptionalGPUTextureFormat{
331
+ CanvasOptionalGPUTextureFormatNone
307
332
  };
308
333
 
309
- if (!formatStr.empty()){
334
+ if (!formatStr.empty()) {
310
335
  auto format = canvas_native_webgpu_enum_string_to_gpu_texture(formatStr.c_str());
311
336
  descriptor->format = format;
312
337
  }
@@ -317,9 +342,9 @@ void GPUTextureImpl::CreateView(const v8::FunctionCallbackInfo<v8::Value> &args)
317
342
  v8::Local<v8::Value> labelVal;
318
343
  descObj->Get(context, ConvertToV8String(isolate, "label")).ToLocal(&labelVal);
319
344
 
320
- if (!labelVal.IsEmpty() && labelVal->IsString()) {
321
- descriptor->label = *v8::String::Utf8Value(isolate, labelVal);
322
- }
345
+ label = GPULabel(isolate, labelVal);
346
+
347
+ descriptor->label = *label;
323
348
 
324
349
  v8::Local<v8::Value> dimensionVal;
325
350
  if (descObj->Get(context, ConvertToV8String(isolate, "dimension")).ToLocal(&dimensionVal)) {
@@ -347,6 +372,7 @@ void GPUTextureImpl::CreateView(const v8::FunctionCallbackInfo<v8::Value> &args)
347
372
 
348
373
  if (descriptor != nullptr) {
349
374
  delete descriptor;
375
+ descriptor = nullptr;
350
376
  }
351
377
 
352
378
  if (view != nullptr) {
@@ -36,6 +36,8 @@ public:
36
36
  return scope.Escape(object);
37
37
  }
38
38
 
39
+ static void GetLabel(v8::Local<v8::Name> name,
40
+ const v8::PropertyCallbackInfo<v8::Value> &info);
39
41
 
40
42
 
41
43
  static void GetWidth(v8::Local<v8::Name> name,
@@ -46,8 +46,34 @@ v8::Local<v8::FunctionTemplate> GPUTextureViewImpl::GetCtor(v8::Isolate *isolate
46
46
  auto tmpl = ctorTmpl->InstanceTemplate();
47
47
  tmpl->SetInternalFieldCount(2);
48
48
 
49
+ tmpl->SetLazyDataProperty(
50
+ ConvertToV8String(isolate, "label"),
51
+ GetLabel
52
+ );
53
+
49
54
 
50
55
  cache->GPUTextureViewTmpl =
51
56
  std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
52
57
  return ctorTmpl;
53
58
  }
59
+
60
+
61
+ void
62
+ GPUTextureViewImpl::GetLabel(v8::Local<v8::Name> name,
63
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
64
+ auto ptr = GetPointer(info.This());
65
+ if (ptr != nullptr) {
66
+ auto label = canvas_native_webgpu_texture_view_get_label(ptr->view_);
67
+ if (label == nullptr) {
68
+ info.GetReturnValue().SetEmptyString();
69
+ return;
70
+ }
71
+ info.GetReturnValue().Set(
72
+ ConvertToV8String(info.GetIsolate(), label)
73
+ );
74
+ canvas_native_string_destroy(label);
75
+ return;
76
+ }
77
+
78
+ info.GetReturnValue().SetEmptyString();
79
+ }
@@ -36,6 +36,9 @@ public:
36
36
  return scope.Escape(object);
37
37
  }
38
38
 
39
+ static void GetLabel(v8::Local<v8::Name> name,
40
+ const v8::PropertyCallbackInfo<v8::Value> &info);
41
+
39
42
 
40
43
  private:
41
44
  const CanvasGPUTextureView *view_;