@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.
- package/Canvas/common.d.ts +4 -9
- package/Canvas/common.js +37 -126
- package/Canvas/common.js.map +1 -1
- package/Canvas/index.android.d.ts +0 -1
- package/Canvas/index.android.js +45 -38
- package/Canvas/index.android.js.map +1 -1
- package/Canvas/index.d.ts +11 -3
- package/Canvas/index.ios.js +49 -40
- package/Canvas/index.ios.js.map +1 -1
- package/Canvas/utils.d.ts +3 -0
- package/Canvas/utils.js +85 -0
- package/Canvas/utils.js.map +1 -0
- package/Canvas2D/CanvasRenderingContext2D/index.d.ts +1 -0
- package/Canvas2D/CanvasRenderingContext2D/index.js +1 -0
- package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -1
- package/Dom/Group.d.ts +1 -2
- package/Dom/Group.js.map +1 -1
- package/Dom/Image.js +0 -1
- package/Dom/Image.js.map +1 -1
- package/Dom/Paint.d.ts +1 -1
- package/Dom/shapes/Path.d.ts +1 -1
- package/ImageAsset/index.js +77 -33
- package/ImageAsset/index.js.map +1 -1
- package/ImageBitmap/index.js +107 -20
- package/ImageBitmap/index.js.map +1 -1
- package/README.md +2 -4
- package/WebGL/WebGLRenderingContext/index.js +73 -31
- package/WebGL/WebGLRenderingContext/index.js.map +1 -1
- package/WebGL2/WebGL2RenderingContext/index.js +4 -4
- package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
- package/WebGPU/GPU.js +4 -3
- package/WebGPU/GPU.js.map +1 -1
- package/WebGPU/GPUAdapter.d.ts +6 -3
- package/WebGPU/GPUAdapter.js +31 -0
- package/WebGPU/GPUAdapter.js.map +1 -1
- package/WebGPU/GPUBindGroup.d.ts +1 -0
- package/WebGPU/GPUBindGroup.js +3 -0
- package/WebGPU/GPUBindGroup.js.map +1 -1
- package/WebGPU/GPUBindGroupLayout.d.ts +1 -0
- package/WebGPU/GPUBindGroupLayout.js +3 -0
- package/WebGPU/GPUBindGroupLayout.js.map +1 -1
- package/WebGPU/GPUBuffer.js +10 -2
- package/WebGPU/GPUBuffer.js.map +1 -1
- package/WebGPU/GPUCanvasContext.d.ts +3 -2
- package/WebGPU/GPUCanvasContext.js +52 -10
- package/WebGPU/GPUCanvasContext.js.map +1 -1
- package/WebGPU/GPUCommandBuffer.d.ts +1 -0
- package/WebGPU/GPUCommandBuffer.js +3 -0
- package/WebGPU/GPUCommandBuffer.js.map +1 -1
- package/WebGPU/GPUCommandEncoder.d.ts +3 -9
- package/WebGPU/GPUCommandEncoder.js +94 -41
- package/WebGPU/GPUCommandEncoder.js.map +1 -1
- package/WebGPU/GPUComputePassEncoder.d.ts +1 -0
- package/WebGPU/GPUComputePassEncoder.js +3 -0
- package/WebGPU/GPUComputePassEncoder.js.map +1 -1
- package/WebGPU/GPUComputePipeline.d.ts +1 -0
- package/WebGPU/GPUComputePipeline.js +3 -0
- package/WebGPU/GPUComputePipeline.js.map +1 -1
- package/WebGPU/GPUDevice.d.ts +17 -79
- package/WebGPU/GPUDevice.js +76 -91
- package/WebGPU/GPUDevice.js.map +1 -1
- package/WebGPU/GPUExternalTexture.d.ts +1 -0
- package/WebGPU/GPUExternalTexture.js +3 -0
- package/WebGPU/GPUExternalTexture.js.map +1 -1
- package/WebGPU/GPUPipelineLayout.d.ts +1 -0
- package/WebGPU/GPUPipelineLayout.js +3 -0
- package/WebGPU/GPUPipelineLayout.js.map +1 -1
- package/WebGPU/GPUQuerySet.d.ts +1 -0
- package/WebGPU/GPUQuerySet.js +3 -0
- package/WebGPU/GPUQuerySet.js.map +1 -1
- package/WebGPU/GPUQueue.d.ts +1 -0
- package/WebGPU/GPUQueue.js +56 -14
- package/WebGPU/GPUQueue.js.map +1 -1
- package/WebGPU/GPURenderBundle.d.ts +1 -0
- package/WebGPU/GPURenderBundle.js +3 -0
- package/WebGPU/GPURenderBundle.js.map +1 -1
- package/WebGPU/GPURenderBundleEncoder.d.ts +4 -2
- package/WebGPU/GPURenderBundleEncoder.js +7 -3
- package/WebGPU/GPURenderBundleEncoder.js.map +1 -1
- package/WebGPU/GPURenderPassEncoder.d.ts +2 -1
- package/WebGPU/GPURenderPassEncoder.js +5 -2
- package/WebGPU/GPURenderPassEncoder.js.map +1 -1
- package/WebGPU/GPURenderPipeline.d.ts +1 -0
- package/WebGPU/GPURenderPipeline.js +3 -0
- package/WebGPU/GPURenderPipeline.js.map +1 -1
- package/WebGPU/GPUSampler.d.ts +1 -0
- package/WebGPU/GPUSampler.js +3 -0
- package/WebGPU/GPUSampler.js.map +1 -1
- package/WebGPU/GPUShaderModule.d.ts +1 -1
- package/WebGPU/GPUShaderModule.js +2 -2
- package/WebGPU/GPUShaderModule.js.map +1 -1
- package/WebGPU/GPUTexture.d.ts +1 -0
- package/WebGPU/GPUTexture.js +3 -0
- package/WebGPU/GPUTexture.js.map +1 -1
- package/WebGPU/GPUTextureView.d.ts +1 -0
- package/WebGPU/GPUTextureView.js +3 -0
- package/WebGPU/GPUTextureView.js.map +1 -1
- package/WebGPU/Interfaces.d.ts +95 -4
- package/WebGPU/Types.d.ts +9 -1
- package/WebGPU/Utils.d.ts +6 -0
- package/WebGPU/Utils.js +224 -0
- package/WebGPU/Utils.js.map +1 -1
- package/angular/esm2022/index.mjs +4 -4
- package/angular/fesm2022/nativescript-canvas-angular.mjs +4 -4
- package/package.json +1 -1
- package/platforms/android/canvas-release.aar +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +39 -10
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +7 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +227 -62
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +1635 -151
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +57 -1
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +57 -1
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/NSCCanvas.nib +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +690 -644
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +78 -20
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +7 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +227 -62
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +1635 -151
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +57 -1
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +57 -1
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +1635 -151
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +57 -1
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +57 -1
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/NSCCanvas.nib +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +27 -27
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +692 -646
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/x86_64/CanvasNative.yml +730 -684
- package/platforms/ios/src/NSOperationQueueWrapper.h +1 -1
- package/platforms/ios/src/NSOperationQueueWrapper.mm +41 -9
- package/platforms/ios/src/cpp/AsyncCallback.h +16 -8
- package/platforms/ios/src/cpp/CanvasJSIModule.cpp +208 -789
- package/platforms/ios/src/cpp/ImageAssetImpl.cpp +18 -28
- package/platforms/ios/src/cpp/ImageAssetImpl.h +3 -3
- package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +60 -3
- package/platforms/ios/src/cpp/ImageBitmapImpl.h +10 -3
- package/platforms/ios/src/cpp/PromiseCallback.h +1 -2
- package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +1 -1
- package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +3 -3
- package/platforms/ios/src/cpp/canvas2d/Path2D.h +5 -5
- package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +106 -1
- package/platforms/ios/src/cpp/webgpu/GPUAdapterImpl.cpp +26 -23
- package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.cpp +31 -5
- package/platforms/ios/src/cpp/webgpu/GPUBindGroupImpl.h +4 -1
- package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.cpp +26 -0
- package/platforms/ios/src/cpp/webgpu/GPUBindGroupLayoutImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.cpp +41 -7
- package/platforms/ios/src/cpp/webgpu/GPUBufferImpl.h +4 -0
- package/platforms/ios/src/cpp/webgpu/GPUCanvasContextImpl.cpp +11 -5
- package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.cpp +28 -1
- package/platforms/ios/src/cpp/webgpu/GPUCommandBufferImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.cpp +75 -79
- package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.h +4 -0
- package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.cpp +42 -14
- package/platforms/ios/src/cpp/webgpu/GPUComputePassEncoderImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.cpp +25 -0
- package/platforms/ios/src/cpp/webgpu/GPUComputePipelineImpl.h +2 -0
- package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.cpp +1597 -674
- package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.h +2 -0
- package/platforms/ios/src/cpp/webgpu/GPUImpl.cpp +2 -1
- package/platforms/ios/src/cpp/webgpu/GPUImpl.h +1 -1
- package/platforms/ios/src/cpp/webgpu/GPULabel.h +33 -0
- package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.cpp +26 -0
- package/platforms/ios/src/cpp/webgpu/GPUPipelineLayoutImpl.h +3 -1
- package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.cpp +1 -2
- package/platforms/ios/src/cpp/webgpu/GPUQuerySetImpl.h +1 -1
- package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.cpp +50 -13
- package/platforms/ios/src/cpp/webgpu/GPUQueueImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.cpp +43 -14
- package/platforms/ios/src/cpp/webgpu/GPURenderBundleEncoderImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.cpp +25 -0
- package/platforms/ios/src/cpp/webgpu/GPURenderBundleImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.cpp +39 -13
- package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.cpp +25 -0
- package/platforms/ios/src/cpp/webgpu/GPURenderPipelineImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.cpp +26 -0
- package/platforms/ios/src/cpp/webgpu/GPUSamplerImpl.h +4 -1
- package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.cpp +24 -0
- package/platforms/ios/src/cpp/webgpu/GPUShaderModuleImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.cpp +34 -8
- package/platforms/ios/src/cpp/webgpu/GPUTextureImpl.h +2 -0
- package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.cpp +26 -0
- package/platforms/ios/src/cpp/webgpu/GPUTextureViewImpl.h +3 -0
- package/platforms/ios/src/cpp/webgpu/GPUUtils.h +511 -0
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
506
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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 =
|
|
98
|
-
|
|
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(
|
|
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
|
-
|
|
169
|
-
|
|
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
|
-
|
|
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->
|
|
216
|
-
v8::Local<v8::
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
343
|
+
*label,
|
|
341
344
|
required_features_data,
|
|
342
345
|
required_features_data_length,
|
|
343
346
|
limits,
|