@nativescript/canvas 2.0.0-webgpu.0 → 2.0.0-webgpu.2
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 +3 -18
- package/Canvas/common.js +9 -72
- package/Canvas/common.js.map +1 -1
- package/Canvas/index.android.d.ts +6 -7
- package/Canvas/index.android.js +88 -42
- package/Canvas/index.android.js.map +1 -1
- package/Canvas/index.d.ts +7 -8
- package/Canvas/index.ios.d.ts +3 -2
- package/Canvas/index.ios.js +88 -46
- package/Canvas/index.ios.js.map +1 -1
- package/Canvas2D/CanvasRenderingContext2D/index.js +71 -72
- package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -1
- package/Canvas2D/DOMMatrix/index.js +1 -1
- package/Canvas2D/DOMMatrix/index.js.map +1 -1
- package/Canvas2D/ImageData/index.js.map +1 -1
- package/Canvas2D/Path2D/index.js.map +1 -1
- package/Dom/Dom.js +8 -1
- package/Dom/Dom.js.map +1 -1
- package/Dom/Group.js.map +1 -1
- package/Dom/Image.d.ts +4 -1
- package/Dom/Image.js +16 -2
- package/Dom/Image.js.map +1 -1
- package/Dom/Paint.js.map +1 -1
- package/Dom/Text.js.map +1 -1
- package/Dom/shaders/LinearGradient.js.map +1 -1
- package/Dom/shaders/TwoPointConicalGradient.js.map +1 -1
- package/Dom/shapes/Atlas.js.map +1 -1
- package/Dom/shapes/Circle.js.map +1 -1
- package/Dom/shapes/Line.js.map +1 -1
- package/Dom/shapes/Oval.js.map +1 -1
- package/Dom/shapes/Path.js.map +1 -1
- package/Dom/shapes/Rect.js.map +1 -1
- package/Dom/shapes/RoundedRect.js.map +1 -1
- package/Dom/shapes/index.js.map +1 -1
- package/ImageAsset/index.d.ts +3 -1
- package/ImageAsset/index.js +38 -6
- package/ImageAsset/index.js.map +1 -1
- package/ImageBitmap/index.js +3 -3
- package/ImageBitmap/index.js.map +1 -1
- package/README.md +64 -3
- package/TextDecoder/index.js +3 -3
- package/TextDecoder/index.js.map +1 -1
- package/TextEncoder/index.js +3 -3
- package/TextEncoder/index.js.map +1 -1
- package/WebGL/WebGLExtensions/index.js +5 -5
- package/WebGL/WebGLExtensions/index.js.map +1 -1
- package/WebGL/WebGLRenderingContext/common.js.map +1 -1
- package/WebGL/WebGLRenderingContext/index.js.map +1 -1
- package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
- package/WebGPU/Constants.js.map +1 -1
- package/WebGPU/GPU.js.map +1 -1
- package/WebGPU/GPUAdapter.js.map +1 -1
- package/WebGPU/GPUAdapterInfo.js.map +1 -1
- package/WebGPU/GPUBindGroup.js.map +1 -1
- package/WebGPU/GPUBindGroupLayout.js.map +1 -1
- package/WebGPU/GPUBuffer.js +5 -1
- package/WebGPU/GPUBuffer.js.map +1 -1
- package/WebGPU/GPUCanvasContext.d.ts +3 -1
- package/WebGPU/GPUCanvasContext.js +13 -4
- package/WebGPU/GPUCanvasContext.js.map +1 -1
- package/WebGPU/GPUCommandBuffer.js.map +1 -1
- package/WebGPU/GPUCommandEncoder.js +6 -1
- package/WebGPU/GPUCommandEncoder.js.map +1 -1
- package/WebGPU/GPUComputePassEncoder.js.map +1 -1
- package/WebGPU/GPUComputePipeline.js.map +1 -1
- package/WebGPU/GPUDevice.d.ts +2 -2
- package/WebGPU/GPUDevice.js +41 -65
- package/WebGPU/GPUDevice.js.map +1 -1
- package/WebGPU/GPUExternalTexture.js.map +1 -1
- package/WebGPU/GPUPipelineLayout.js.map +1 -1
- package/WebGPU/GPUQuerySet.js.map +1 -1
- package/WebGPU/GPUQueue.js.map +1 -1
- package/WebGPU/GPURenderBundle.js.map +1 -1
- package/WebGPU/GPURenderBundleEncoder.js.map +1 -1
- package/WebGPU/GPURenderPassEncoder.js +2 -2
- package/WebGPU/GPURenderPassEncoder.js.map +1 -1
- package/WebGPU/GPURenderPipeline.js.map +1 -1
- package/WebGPU/GPUSampler.js.map +1 -1
- 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.js.map +1 -1
- package/WebGPU/Types.d.ts +27 -27
- package/WebGPU/Utils.d.ts +1 -1
- package/WebGPU/Utils.js.map +1 -1
- package/angular/{esm2020 → esm2022}/index.mjs +5 -5
- package/angular/{fesm2015 → fesm2022}/nativescript-canvas-angular.mjs +4 -4
- package/angular/{fesm2020 → fesm2022}/nativescript-canvas-angular.mjs.map +1 -1
- package/common.d.ts +0 -3
- package/common.js +1 -5
- package/common.js.map +1 -1
- package/helpers.js.map +1 -1
- package/package.json +4 -2
- 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 +21 -9
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +2112 -2086
- 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 +5995 -5933
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +35 -9
- package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +35 -9
- 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 +644 -602
- 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 +42 -18
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +2112 -2086
- 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 +5995 -5933
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +35 -9
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +35 -9
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +5995 -5933
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +35 -9
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +35 -9
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +24 -24
- 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 +646 -604
- package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/x86_64/CanvasNative.yml +684 -638
- package/platforms/ios/src/cpp/CanvasJSIModule.cpp +12 -12
- package/platforms/ios/src/cpp/ImageAssetImpl.cpp +11 -11
- package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +1 -1
- package/platforms/ios/src/cpp/JSIReadFileCallback.h +4 -4
- package/platforms/ios/src/cpp/OneByteStringResource.cpp +2 -2
- package/platforms/ios/src/cpp/RafImpl.h +2 -2
- package/platforms/ios/src/cpp/TextDecoderImpl.cpp +0 -6
- package/platforms/ios/src/cpp/TextDecoderImpl.h +3 -3
- package/platforms/ios/src/cpp/TextEncoderImpl.cpp +1 -1
- package/platforms/ios/src/cpp/TextEncoderImpl.h +3 -3
- package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +2 -2
- package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +2 -2
- package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +140 -70
- package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +66 -17
- package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.cpp +3 -4
- package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +3 -3
- package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +2 -2
- package/platforms/ios/src/cpp/canvas2d/Path2D.h +2 -2
- package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +3 -3
- package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +8 -8
- package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.cpp +1 -1
- package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.cpp +722 -722
- package/platforms/ios/src/cpp/webgpu/GPUAdapterImpl.cpp +1 -1
- package/platforms/ios/src/cpp/webgpu/GPUCanvasContextImpl.cpp +11 -11
- package/platforms/ios/src/cpp/webgpu/GPUCommandEncoderImpl.cpp +207 -72
- package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.cpp +28 -20
- package/platforms/ios/src/cpp/webgpu/GPUDeviceImpl.h +1 -1
- package/platforms/ios/src/cpp/webgpu/GPUImpl.cpp +2 -2
- package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.cpp +24 -53
- package/platforms/ios/src/cpp/webgpu/GPURenderPassEncoderImpl.h +2 -2
- package/platforms/ios/src/cpp/webgpu/GPUUtils.h +69 -2
- package/react/index.d.ts +1 -1
- package/utils.js.map +1 -1
- package/angular/fesm2015/nativescript-canvas-angular.mjs.map +0 -1
- package/angular/fesm2020/nativescript-canvas-angular.mjs +0 -24
- package/angular/package.json +0 -26
- package/typings/objc!CanvasNative.d.ts +0 -2038
- package/typings/objc!CanvasNative.js +0 -1
- package/typings/objc!CanvasNative.js.map +0 -1
- /package/angular/{esm2020 → esm2022}/nativescript-canvas-angular.mjs +0 -0
|
@@ -270,7 +270,7 @@ void GPUCanvasContextImpl::GetCapabilities(const v8::FunctionCallbackInfo<v8::Va
|
|
|
270
270
|
auto formats = v8::Array::New(isolate, (int) formats_len);
|
|
271
271
|
for (int i = 0; i < formats_len; i++) {
|
|
272
272
|
auto format = canvas_native_string_buffer_get_value_at(cap->formats, i);
|
|
273
|
-
formats->Set(context, i, ConvertToV8String(isolate, format));
|
|
273
|
+
formats->Set(context, i, ConvertToV8String(isolate, format)).FromJust();
|
|
274
274
|
canvas_native_string_destroy(format);
|
|
275
275
|
}
|
|
276
276
|
|
|
@@ -280,7 +280,7 @@ void GPUCanvasContextImpl::GetCapabilities(const v8::FunctionCallbackInfo<v8::Va
|
|
|
280
280
|
|
|
281
281
|
for (int i = 0; i < present_modes_len; i++) {
|
|
282
282
|
auto mode = canvas_native_string_buffer_get_value_at(cap->present_modes, i);
|
|
283
|
-
present_modes->Set(context, i, ConvertToV8String(isolate, mode));
|
|
283
|
+
present_modes->Set(context, i, ConvertToV8String(isolate, mode)).FromJust();
|
|
284
284
|
canvas_native_string_destroy(mode);
|
|
285
285
|
}
|
|
286
286
|
|
|
@@ -290,15 +290,15 @@ void GPUCanvasContextImpl::GetCapabilities(const v8::FunctionCallbackInfo<v8::Va
|
|
|
290
290
|
|
|
291
291
|
for (int i = 0; i < alpha_modes_len; i++) {
|
|
292
292
|
auto mode = canvas_native_string_buffer_get_value_at(cap->alpha_modes, i);
|
|
293
|
-
alpha_modes->Set(context, i, ConvertToV8String(isolate, mode));
|
|
293
|
+
alpha_modes->Set(context, i, ConvertToV8String(isolate, mode)).FromJust();
|
|
294
294
|
canvas_native_string_destroy(mode);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
ret->Set(context, ConvertToV8String(isolate, "format"), formats);
|
|
298
|
-
ret->Set(context, ConvertToV8String(isolate, "presentModes"), present_modes);
|
|
299
|
-
ret->Set(context, ConvertToV8String(isolate, "alphaModes"), alpha_modes);
|
|
297
|
+
ret->Set(context, ConvertToV8String(isolate, "format"), formats).FromJust();
|
|
298
|
+
ret->Set(context, ConvertToV8String(isolate, "presentModes"), present_modes).FromJust();
|
|
299
|
+
ret->Set(context, ConvertToV8String(isolate, "alphaModes"), alpha_modes).FromJust();
|
|
300
300
|
ret->Set(context, ConvertToV8String(isolate, "usages"),
|
|
301
|
-
v8::Uint32::NewFromUnsigned(isolate, cap->usages));
|
|
301
|
+
v8::Uint32::NewFromUnsigned(isolate, cap->usages)).FromJust();
|
|
302
302
|
|
|
303
303
|
canvas_native_webgpu_struct_surface_capabilities_release(cap);
|
|
304
304
|
|
|
@@ -309,9 +309,9 @@ void GPUCanvasContextImpl::GetCapabilities(const v8::FunctionCallbackInfo<v8::Va
|
|
|
309
309
|
|
|
310
310
|
}
|
|
311
311
|
|
|
312
|
-
ret->Set(context, ConvertToV8String(isolate, "format"), v8::Array::New(isolate));
|
|
313
|
-
ret->Set(context, ConvertToV8String(isolate, "presentModes"), v8::Array::New(isolate));
|
|
314
|
-
ret->Set(context, ConvertToV8String(isolate, "alphaModes"), v8::Array::New(isolate));
|
|
315
|
-
ret->Set(context, ConvertToV8String(isolate, "usages"), v8::Uint32::New(isolate, 0));
|
|
312
|
+
ret->Set(context, ConvertToV8String(isolate, "format"), v8::Array::New(isolate)).FromJust();
|
|
313
|
+
ret->Set(context, ConvertToV8String(isolate, "presentModes"), v8::Array::New(isolate)).FromJust();
|
|
314
|
+
ret->Set(context, ConvertToV8String(isolate, "alphaModes"), v8::Array::New(isolate)).FromJust();
|
|
315
|
+
ret->Set(context, ConvertToV8String(isolate, "usages"), v8::Uint32::New(isolate, 0)).FromJust();
|
|
316
316
|
args.GetReturnValue().Set(ret);
|
|
317
317
|
}
|
|
@@ -28,7 +28,7 @@ void GPUCommandEncoderImpl::Init(v8::Local<v8::Object> canvasModule, v8::Isolate
|
|
|
28
28
|
auto context = isolate->GetCurrentContext();
|
|
29
29
|
auto func = ctor->GetFunction(context).ToLocalChecked();
|
|
30
30
|
|
|
31
|
-
canvasModule->Set(context, ConvertToV8String(isolate, "GPUCommandEncoder"), func).FromJust()
|
|
31
|
+
canvasModule->Set(context, ConvertToV8String(isolate, "GPUCommandEncoder"), func).FromJust();
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
GPUCommandEncoderImpl *GPUCommandEncoderImpl::GetPointer(const v8::Local<v8::Object> &object) {
|
|
@@ -257,45 +257,18 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
257
257
|
v8::Local<v8::Value> clearValueVal;
|
|
258
258
|
colorAttachment->Get(context, ConvertToV8String(isolate, "clearValue")).ToLocal(
|
|
259
259
|
&clearValueVal);
|
|
260
|
-
auto clearValue = CanvasColor{0, 0, 0, 0};
|
|
261
|
-
if (!clearValueVal.IsEmpty() && clearValueVal->IsObject()) {
|
|
262
|
-
auto clearValueObj = clearValueVal.As<v8::Object>();
|
|
263
|
-
|
|
264
|
-
v8::Local<v8::Value> r;
|
|
265
|
-
v8::Local<v8::Value> g;
|
|
266
|
-
v8::Local<v8::Value> b;
|
|
267
|
-
v8::Local<v8::Value> a;
|
|
268
|
-
|
|
269
|
-
clearValueObj->Get(context, ConvertToV8String(isolate, "r")).ToLocal(&r);
|
|
270
|
-
clearValueObj->Get(context, ConvertToV8String(isolate, "g")).ToLocal(&g);
|
|
271
|
-
clearValueObj->Get(context, ConvertToV8String(isolate, "b")).ToLocal(&b);
|
|
272
|
-
clearValueObj->Get(context, ConvertToV8String(isolate, "a")).ToLocal(&a);
|
|
273
|
-
|
|
274
|
-
if (!r.IsEmpty() && r->IsNumber()) {
|
|
275
|
-
clearValue.r = r.As<v8::Number>()->Value();
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
if (!g.IsEmpty() && g->IsNumber()) {
|
|
279
|
-
clearValue.g = g.As<v8::Number>()->Value();
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
if (!b.IsEmpty() && b->IsNumber()) {
|
|
284
|
-
clearValue.b = b.As<v8::Number>()->Value();
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
if (!a.IsEmpty() && a->IsNumber()) {
|
|
288
|
-
clearValue.a = a.As<v8::Number>()->Value();
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
260
|
|
|
261
|
+
auto clearValue = ParseColor(isolate, clearValueVal);
|
|
292
262
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
auto view = GPUTextureViewImpl::GetPointer(viewVal.As<v8::Object>());
|
|
297
|
-
|
|
263
|
+
v8::Local<v8::Value> viewVal;
|
|
264
|
+
colorAttachment->Get(context, ConvertToV8String(isolate,
|
|
265
|
+
"view")).ToLocal(&viewVal);
|
|
298
266
|
|
|
267
|
+
const CanvasGPUTextureView *view = nullptr;
|
|
268
|
+
|
|
269
|
+
auto viewPtr = GPUTextureViewImpl::GetPointer(viewVal.As<v8::Object>());
|
|
270
|
+
view = viewPtr->GetTextureView();
|
|
271
|
+
|
|
299
272
|
const CanvasGPUTextureView *resolve_target = nullptr;
|
|
300
273
|
|
|
301
274
|
v8::Local<v8::Value> resolve_target_val;
|
|
@@ -313,34 +286,37 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
313
286
|
// default
|
|
314
287
|
CanvasLoadOp load = CanvasLoadOp::CanvasLoadOpClear;
|
|
315
288
|
CanvasStoreOp store = CanvasStoreOp::CanvasStoreOpStore;
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
load
|
|
289
|
+
v8::Local<v8::Value> loadVal;
|
|
290
|
+
|
|
291
|
+
if(colorAttachment->Get(context, ConvertToV8String(isolate,
|
|
292
|
+
"loadOp")).ToLocal(&loadVal)){
|
|
293
|
+
if (loadVal->IsUint32()) {
|
|
294
|
+
load = (CanvasLoadOp) loadVal->Uint32Value(
|
|
295
|
+
context).ToChecked();
|
|
296
|
+
} else if (loadVal->IsString()) {
|
|
297
|
+
auto val = ConvertFromV8String(isolate, loadVal);
|
|
298
|
+
if (val == "clear") {
|
|
299
|
+
load = CanvasLoadOp::CanvasLoadOpClear;
|
|
300
|
+
} else if (val == "load") {
|
|
301
|
+
load = CanvasLoadOp::CanvasLoadOpLoad;
|
|
302
|
+
}
|
|
328
303
|
}
|
|
329
304
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
v8::Local<v8::Value> storeVal;
|
|
308
|
+
if(colorAttachment->Get(context, ConvertToV8String(isolate,
|
|
309
|
+
"storeOp")).ToLocal(&storeVal)){
|
|
310
|
+
if (storeVal->IsUint32()) {
|
|
311
|
+
store = (CanvasStoreOp) storeVal->Uint32Value(
|
|
312
|
+
context).ToChecked();
|
|
313
|
+
} else if (storeVal->IsString()) {
|
|
314
|
+
auto val = ConvertFromV8String(isolate, storeVal);
|
|
315
|
+
if (val == "discard") {
|
|
316
|
+
store = CanvasStoreOp::CanvasStoreOpDiscard;
|
|
317
|
+
} else if (val == "store") {
|
|
318
|
+
store = CanvasStoreOp::CanvasStoreOpStore;
|
|
319
|
+
}
|
|
344
320
|
}
|
|
345
321
|
}
|
|
346
322
|
|
|
@@ -352,7 +328,7 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
352
328
|
};
|
|
353
329
|
|
|
354
330
|
auto attachment = CanvasRenderPassColorAttachment{
|
|
355
|
-
view
|
|
331
|
+
view,
|
|
356
332
|
resolve_target,
|
|
357
333
|
channel
|
|
358
334
|
};
|
|
@@ -362,8 +338,8 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
362
338
|
}
|
|
363
339
|
|
|
364
340
|
|
|
341
|
+
// todo add when supported
|
|
365
342
|
v8::Local<v8::Value> maxDrawCountVal;
|
|
366
|
-
|
|
367
343
|
desc->Get(context, ConvertToV8String(isolate, "maxDrawCount")).ToLocal(&maxDrawCountVal);
|
|
368
344
|
|
|
369
345
|
|
|
@@ -376,8 +352,164 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
376
352
|
|
|
377
353
|
if (!depthStencilAttachmentVal.IsEmpty() && depthStencilAttachmentVal->IsObject()) {
|
|
378
354
|
auto depthStencilAttachmentObj = depthStencilAttachmentVal.As<v8::Object>();
|
|
379
|
-
|
|
355
|
+
depthStencilAttachment = new CanvasRenderPassDepthStencilAttachment{};
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
v8::Local<v8::Value> viewVal;
|
|
359
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
360
|
+
"view")).ToLocal(&viewVal);
|
|
380
361
|
|
|
362
|
+
auto viewPtr = GPUTextureViewImpl::GetPointer(viewVal.As<v8::Object>());
|
|
363
|
+
depthStencilAttachment->view = viewPtr->GetTextureView();
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
v8::Local<v8::Value> depthClearValue;
|
|
367
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
368
|
+
"depthClearValue")).ToLocal(
|
|
369
|
+
&depthClearValue);
|
|
370
|
+
|
|
371
|
+
depthStencilAttachment->depth_clear_value = 0;
|
|
372
|
+
|
|
373
|
+
if (!depthClearValue.IsEmpty() && depthClearValue->IsNumber()) {
|
|
374
|
+
depthStencilAttachment->depth_clear_value = (float) depthClearValue->NumberValue(
|
|
375
|
+
context).FromJust();
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
v8::Local<v8::Value> depthLoadOp;
|
|
379
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
380
|
+
"depthLoadOp")).ToLocal(
|
|
381
|
+
&depthLoadOp);
|
|
382
|
+
|
|
383
|
+
depthStencilAttachment->depth_load_op = CanvasOptionalLoadOp{
|
|
384
|
+
CanvasOptionalLoadOpNone
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
if (!depthLoadOp.IsEmpty() && depthLoadOp->IsString()) {
|
|
388
|
+
auto value = ConvertFromV8String(isolate, depthLoadOp);
|
|
389
|
+
if (value == "load") {
|
|
390
|
+
depthStencilAttachment->depth_load_op = CanvasOptionalLoadOp{
|
|
391
|
+
CanvasOptionalLoadOpSome,
|
|
392
|
+
CanvasLoadOpLoad
|
|
393
|
+
};
|
|
394
|
+
} else if (value == "clear") {
|
|
395
|
+
depthStencilAttachment->depth_load_op = CanvasOptionalLoadOp{
|
|
396
|
+
CanvasOptionalLoadOpSome,
|
|
397
|
+
CanvasLoadOpClear
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
v8::Local<v8::Value> depthStoreOp;
|
|
404
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
405
|
+
"depthStoreOp")).ToLocal(
|
|
406
|
+
&depthStoreOp);
|
|
407
|
+
|
|
408
|
+
depthStencilAttachment->depth_store_op = CanvasOptionalStoreOp{
|
|
409
|
+
CanvasOptionalStoreOpNone
|
|
410
|
+
};
|
|
411
|
+
|
|
412
|
+
if (!depthStoreOp.IsEmpty() && depthStoreOp->IsString()) {
|
|
413
|
+
auto value = ConvertFromV8String(isolate, depthStoreOp);
|
|
414
|
+
if (value == "store") {
|
|
415
|
+
depthStencilAttachment->depth_store_op = depthStencilAttachment->depth_store_op = CanvasOptionalStoreOp{
|
|
416
|
+
CanvasOptionalStoreOpSome,
|
|
417
|
+
CanvasStoreOpStore
|
|
418
|
+
};
|
|
419
|
+
} else if (value == "discard") {
|
|
420
|
+
depthStencilAttachment->depth_store_op = depthStencilAttachment->depth_store_op = CanvasOptionalStoreOp{
|
|
421
|
+
CanvasOptionalStoreOpSome,
|
|
422
|
+
CanvasStoreOpDiscard
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
v8::Local<v8::Value> depthReadOnly;
|
|
429
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
430
|
+
"depthReadOnly")).ToLocal(
|
|
431
|
+
&depthReadOnly);
|
|
432
|
+
|
|
433
|
+
depthStencilAttachment->depth_read_only = false;
|
|
434
|
+
if (!depthReadOnly.IsEmpty() && depthReadOnly->IsBoolean()) {
|
|
435
|
+
depthStencilAttachment->depth_read_only = depthReadOnly->BooleanValue(isolate);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
v8::Local<v8::Value> stencilClearValue;
|
|
440
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
441
|
+
"stencilClearValue")).ToLocal(
|
|
442
|
+
&stencilClearValue);
|
|
443
|
+
|
|
444
|
+
depthStencilAttachment->stencil_clear_value = 0;
|
|
445
|
+
|
|
446
|
+
if (!stencilClearValue.IsEmpty() && stencilClearValue->IsUint32()) {
|
|
447
|
+
depthStencilAttachment->stencil_clear_value = stencilClearValue->Uint32Value(
|
|
448
|
+
context).FromJust();
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
v8::Local<v8::Value> stencilLoadOp;
|
|
453
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
454
|
+
"stencilLoadOp")).ToLocal(
|
|
455
|
+
&stencilLoadOp);
|
|
456
|
+
|
|
457
|
+
depthStencilAttachment->stencil_load_op = CanvasOptionalLoadOp{
|
|
458
|
+
CanvasOptionalLoadOpNone
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
if (!stencilLoadOp.IsEmpty() && stencilLoadOp->IsString()) {
|
|
462
|
+
auto value = ConvertFromV8String(isolate, stencilLoadOp);
|
|
463
|
+
if (value == "load") {
|
|
464
|
+
depthStencilAttachment->stencil_load_op = CanvasOptionalLoadOp{
|
|
465
|
+
CanvasOptionalLoadOpSome,
|
|
466
|
+
CanvasLoadOpLoad
|
|
467
|
+
};
|
|
468
|
+
} else if (value == "clear") {
|
|
469
|
+
depthStencilAttachment->stencil_load_op = CanvasOptionalLoadOp{
|
|
470
|
+
CanvasOptionalLoadOpSome,
|
|
471
|
+
CanvasLoadOpClear
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
v8::Local<v8::Value> stencilStoreOp;
|
|
478
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
479
|
+
"stencilStoreOp")).ToLocal(
|
|
480
|
+
&stencilStoreOp);
|
|
481
|
+
|
|
482
|
+
depthStencilAttachment->stencil_store_op = CanvasOptionalStoreOp{
|
|
483
|
+
CanvasOptionalStoreOpNone
|
|
484
|
+
};
|
|
485
|
+
|
|
486
|
+
if (!stencilStoreOp.IsEmpty() && stencilStoreOp->IsString()) {
|
|
487
|
+
auto value = ConvertFromV8String(isolate, stencilStoreOp);
|
|
488
|
+
if (value == "store") {
|
|
489
|
+
depthStencilAttachment->stencil_store_op = CanvasOptionalStoreOp{
|
|
490
|
+
CanvasOptionalStoreOpSome,
|
|
491
|
+
CanvasStoreOpStore
|
|
492
|
+
};
|
|
493
|
+
} else if (value == "discard") {
|
|
494
|
+
depthStencilAttachment->stencil_store_op = CanvasOptionalStoreOp{
|
|
495
|
+
CanvasOptionalStoreOpSome,
|
|
496
|
+
CanvasStoreOpDiscard
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
v8::Local<v8::Value> stencilReadOnly;
|
|
503
|
+
depthStencilAttachmentObj->Get(context, ConvertToV8String(isolate,
|
|
504
|
+
"stencilReadOnly")).ToLocal(
|
|
505
|
+
&stencilReadOnly);
|
|
506
|
+
|
|
507
|
+
depthStencilAttachment->stencil_read_only = false;
|
|
508
|
+
if (!stencilReadOnly.IsEmpty() && stencilReadOnly->IsBoolean()) {
|
|
509
|
+
depthStencilAttachment->stencil_read_only = stencilReadOnly->BooleanValue(isolate);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
}
|
|
381
513
|
|
|
382
514
|
const CanvasGPUQuerySet *occlusion_query_set = nullptr;
|
|
383
515
|
v8::Local<v8::Value> occlusionQuerySetVal;
|
|
@@ -386,8 +518,8 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
386
518
|
desc->Get(context, ConvertToV8String(isolate, "occlusionQuerySet")).ToLocal(
|
|
387
519
|
&occlusionQuerySetVal);
|
|
388
520
|
|
|
389
|
-
|
|
390
|
-
if (
|
|
521
|
+
|
|
522
|
+
if (GetNativeType(occlusionQuerySetVal) == NativeType::GPUQuerySet) {
|
|
391
523
|
auto occlusionQuerySet = GPUQuerySetImpl::GetPointer(
|
|
392
524
|
occlusionQuerySetVal.As<v8::Object>());
|
|
393
525
|
occlusion_query_set = occlusionQuerySet->GetQuerySet();
|
|
@@ -410,7 +542,7 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
410
542
|
&querySetVal);
|
|
411
543
|
|
|
412
544
|
|
|
413
|
-
if (
|
|
545
|
+
if (GetNativeType(querySetVal) == NativeType::GPUQuerySet) {
|
|
414
546
|
auto queryPtr = GPUQuerySetImpl::GetPointer(querySetVal.As<v8::Object>());
|
|
415
547
|
if (queryPtr != nullptr) {
|
|
416
548
|
querySet = queryPtr->GetQuerySet();
|
|
@@ -451,6 +583,10 @@ void GPUCommandEncoderImpl::BeginRenderPass(const v8::FunctionCallbackInfo<v8::V
|
|
|
451
583
|
querySet, beginningOfPassWriteIndex, endOfPassWriteIndex
|
|
452
584
|
);
|
|
453
585
|
|
|
586
|
+
if (depthStencilAttachment != nullptr) {
|
|
587
|
+
delete depthStencilAttachment;
|
|
588
|
+
}
|
|
589
|
+
|
|
454
590
|
|
|
455
591
|
}
|
|
456
592
|
|
|
@@ -970,10 +1106,9 @@ void GPUCommandEncoderImpl::Finish(const v8::FunctionCallbackInfo<v8::Value> &ar
|
|
|
970
1106
|
if (descVal->IsObject()) {
|
|
971
1107
|
auto desc = descVal.As<v8::Object>();
|
|
972
1108
|
v8::Local<v8::Value> labelVal;
|
|
973
|
-
desc->Get(context, ConvertToV8String(isolate, "label")).ToLocal(&labelVal);
|
|
974
|
-
if (
|
|
1109
|
+
didSet = desc->Get(context, ConvertToV8String(isolate, "label")).ToLocal(&labelVal);
|
|
1110
|
+
if (didSet && labelVal->IsString()) {
|
|
975
1111
|
label = ConvertFromV8String(isolate, labelVal);
|
|
976
|
-
didSet = true;
|
|
977
1112
|
}
|
|
978
1113
|
}
|
|
979
1114
|
|
|
@@ -248,13 +248,13 @@ GPUDeviceImpl::GetFeatures(v8::Local<v8::Name> name,
|
|
|
248
248
|
for (int i = 0; i < len; ++i) {
|
|
249
249
|
auto item = canvas_native_string_buffer_get_value_at(features, i);
|
|
250
250
|
if (item != nullptr) {
|
|
251
|
-
auto keyValue =
|
|
251
|
+
auto keyValue = ConvertToV8String(isolate, (char *) item);
|
|
252
252
|
map->Set(context, keyValue, keyValue);
|
|
253
253
|
canvas_native_string_destroy(item);
|
|
254
254
|
}
|
|
255
255
|
|
|
256
256
|
}
|
|
257
|
-
|
|
257
|
+
canvas_native_string_buffer_release(features);
|
|
258
258
|
|
|
259
259
|
info.GetReturnValue().Set(map);
|
|
260
260
|
|
|
@@ -378,6 +378,8 @@ void GPUDeviceImpl::CreateBindGroup(const v8::FunctionCallbackInfo<v8::Value> &a
|
|
|
378
378
|
|
|
379
379
|
auto optionsVal = args[0];
|
|
380
380
|
|
|
381
|
+
std::vector<CanvasBindGroupEntry> entries;
|
|
382
|
+
|
|
381
383
|
if (optionsVal->IsObject()) {
|
|
382
384
|
auto options = optionsVal.As<v8::Object>();
|
|
383
385
|
v8::Local<v8::Value> labelVal;
|
|
@@ -401,7 +403,6 @@ void GPUDeviceImpl::CreateBindGroup(const v8::FunctionCallbackInfo<v8::Value> &a
|
|
|
401
403
|
}
|
|
402
404
|
}
|
|
403
405
|
|
|
404
|
-
std::vector<CanvasBindGroupEntry> entries;
|
|
405
406
|
|
|
406
407
|
v8::Local<v8::Value> entriesVal;
|
|
407
408
|
options->Get(context, ConvertToV8String(isolate, "entries")).ToLocal(&entriesVal);
|
|
@@ -466,7 +467,8 @@ void GPUDeviceImpl::CreateBindGroup(const v8::FunctionCallbackInfo<v8::Value> &a
|
|
|
466
467
|
int64_t offset = -1;
|
|
467
468
|
|
|
468
469
|
v8::Local<v8::Value> offsetVal;
|
|
469
|
-
|
|
470
|
+
|
|
471
|
+
resourceObj->Get(context,
|
|
470
472
|
ConvertToV8String(isolate,
|
|
471
473
|
"offset")).ToLocal(
|
|
472
474
|
&offsetVal);
|
|
@@ -478,9 +480,9 @@ void GPUDeviceImpl::CreateBindGroup(const v8::FunctionCallbackInfo<v8::Value> &a
|
|
|
478
480
|
int64_t size = -1;
|
|
479
481
|
|
|
480
482
|
v8::Local<v8::Value> sizeVal;
|
|
481
|
-
|
|
483
|
+
resourceObj->Get(context,
|
|
482
484
|
ConvertToV8String(isolate, "size")).ToLocal(
|
|
483
|
-
&
|
|
485
|
+
&sizeVal);
|
|
484
486
|
if (!sizeVal.IsEmpty() && sizeVal->IsNumber()) {
|
|
485
487
|
size = (int64_t) sizeVal->NumberValue(
|
|
486
488
|
context).ToChecked();
|
|
@@ -595,7 +597,7 @@ void GPUDeviceImpl::CreateBindGroupLayout(const v8::FunctionCallbackInfo<v8::Val
|
|
|
595
597
|
|
|
596
598
|
v8::Local<v8::Value> hasDynamicOffsetVal;
|
|
597
599
|
bufferObj->Get(context,
|
|
598
|
-
ConvertToV8String(isolate, "hasDynamicOffset
|
|
600
|
+
ConvertToV8String(isolate, "hasDynamicOffset")).ToLocal(
|
|
599
601
|
&hasDynamicOffsetVal);
|
|
600
602
|
|
|
601
603
|
|
|
@@ -607,7 +609,7 @@ void GPUDeviceImpl::CreateBindGroupLayout(const v8::FunctionCallbackInfo<v8::Val
|
|
|
607
609
|
|
|
608
610
|
v8::Local<v8::Value> minBindingSizeVal;
|
|
609
611
|
bufferObj->Get(context,
|
|
610
|
-
ConvertToV8String(isolate, "minBindingSize
|
|
612
|
+
ConvertToV8String(isolate, "minBindingSize")).ToLocal(
|
|
611
613
|
&minBindingSizeVal);
|
|
612
614
|
|
|
613
615
|
|
|
@@ -1086,9 +1088,10 @@ void GPUDeviceImpl::CreateComputePipeline(const v8::FunctionCallbackInfo<v8::Val
|
|
|
1086
1088
|
|
|
1087
1089
|
if (!keyVal.IsEmpty() && keyVal->IsString() && !valueVal.IsEmpty() &&
|
|
1088
1090
|
valueVal->IsNumber()) {
|
|
1091
|
+
auto val = ConvertFromV8String(isolate, keyVal);
|
|
1089
1092
|
canvas_native_webgpu_constants_insert(
|
|
1090
1093
|
store,
|
|
1091
|
-
|
|
1094
|
+
val.c_str(),
|
|
1092
1095
|
valueVal.As<v8::Number>()->Value()
|
|
1093
1096
|
);
|
|
1094
1097
|
}
|
|
@@ -1231,7 +1234,6 @@ void GPUDeviceImpl::CreateQuerySet(const v8::FunctionCallbackInfo<v8::Value> &ar
|
|
|
1231
1234
|
label = *v8::String::Utf8Value(isolate, labelVal);
|
|
1232
1235
|
}
|
|
1233
1236
|
|
|
1234
|
-
|
|
1235
1237
|
v8::Local<v8::Value> typeVal;
|
|
1236
1238
|
options->Get(context, ConvertToV8String(isolate, "type")).ToLocal(&labelVal);
|
|
1237
1239
|
|
|
@@ -1412,9 +1414,9 @@ void GPUDeviceImpl::CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Valu
|
|
|
1412
1414
|
|
|
1413
1415
|
stencilObj->Get(context, ConvertToV8String(isolate, "format")).ToLocal(&formatValue);
|
|
1414
1416
|
if (!formatValue.IsEmpty() && formatValue->IsString()) {
|
|
1415
|
-
auto val =
|
|
1417
|
+
auto val = ConvertFromV8String(isolate, formatValue);
|
|
1416
1418
|
auto format = canvas_native_webgpu_enum_string_to_gpu_texture(
|
|
1417
|
-
val);
|
|
1419
|
+
val.c_str());
|
|
1418
1420
|
if (format.tag ==
|
|
1419
1421
|
CanvasOptionalGPUTextureFormat_Tag::CanvasOptionalGPUTextureFormatSome) {
|
|
1420
1422
|
stencil->format = format.some;
|
|
@@ -1434,8 +1436,8 @@ void GPUDeviceImpl::CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Valu
|
|
|
1434
1436
|
stencilObj->Get(context, ConvertToV8String(isolate, "depthBiasClamp")).ToLocal(
|
|
1435
1437
|
&depthBiasClampVal);
|
|
1436
1438
|
|
|
1437
|
-
if (!depthBiasClampVal.IsEmpty() && depthBiasClampVal->
|
|
1438
|
-
stencil->depth_bias_clamp = depthBiasClampVal->
|
|
1439
|
+
if (!depthBiasClampVal.IsEmpty() && depthBiasClampVal->IsNumber()) {
|
|
1440
|
+
stencil->depth_bias_clamp = (float)depthBiasClampVal->NumberValue(context).FromJust();
|
|
1439
1441
|
}
|
|
1440
1442
|
|
|
1441
1443
|
|
|
@@ -1443,8 +1445,8 @@ void GPUDeviceImpl::CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Valu
|
|
|
1443
1445
|
stencilObj->Get(context, ConvertToV8String(isolate, "depthBiasSlopeScale")).ToLocal(
|
|
1444
1446
|
&depthBiasSlopeScaleVal);
|
|
1445
1447
|
|
|
1446
|
-
if (!depthBiasSlopeScaleVal.IsEmpty() && depthBiasSlopeScaleVal->
|
|
1447
|
-
stencil->depth_bias_slope_scale = depthBiasSlopeScaleVal->
|
|
1448
|
+
if (!depthBiasSlopeScaleVal.IsEmpty() && depthBiasSlopeScaleVal->IsNumber()) {
|
|
1449
|
+
stencil->depth_bias_slope_scale = (float)depthBiasSlopeScaleVal->NumberValue(
|
|
1448
1450
|
context).FromJust();
|
|
1449
1451
|
}
|
|
1450
1452
|
|
|
@@ -1571,6 +1573,8 @@ void GPUDeviceImpl::CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Valu
|
|
|
1571
1573
|
stencil->stencil_write_mask = stencilWriteMaskVal->Uint32Value(context).FromJust();
|
|
1572
1574
|
}
|
|
1573
1575
|
|
|
1576
|
+
descriptor.depth_stencil = stencil;
|
|
1577
|
+
|
|
1574
1578
|
}
|
|
1575
1579
|
|
|
1576
1580
|
|
|
@@ -1907,6 +1911,8 @@ void GPUDeviceImpl::CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Valu
|
|
|
1907
1911
|
case 2:
|
|
1908
1912
|
primitive->cull_mode = CanvasCullMode::CanvasCullModeBack;
|
|
1909
1913
|
break;
|
|
1914
|
+
default:
|
|
1915
|
+
break;
|
|
1910
1916
|
}
|
|
1911
1917
|
} else if (cullModeValue->IsString()) {
|
|
1912
1918
|
|
|
@@ -2059,7 +2065,6 @@ void GPUDeviceImpl::CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Valu
|
|
|
2059
2065
|
|
|
2060
2066
|
std::vector<std::vector<CanvasVertexAttribute>> attributes;
|
|
2061
2067
|
|
|
2062
|
-
|
|
2063
2068
|
if (!vertexValue.IsEmpty() && vertexValue->IsObject()) {
|
|
2064
2069
|
auto vertexObj = vertexValue.As<v8::Object>();
|
|
2065
2070
|
vertex = new CanvasVertexState{};
|
|
@@ -2257,6 +2262,10 @@ void GPUDeviceImpl::CreateRenderPipeline(const v8::FunctionCallbackInfo<v8::Valu
|
|
|
2257
2262
|
|
|
2258
2263
|
}
|
|
2259
2264
|
|
|
2265
|
+
if(descriptor.depth_stencil != nullptr){
|
|
2266
|
+
delete descriptor.depth_stencil;
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2260
2269
|
|
|
2261
2270
|
if (pipeline != nullptr) {
|
|
2262
2271
|
auto ret = GPURenderPipelineImpl::NewInstance(isolate, new GPURenderPipelineImpl(pipeline));
|
|
@@ -2599,10 +2608,9 @@ void GPUDeviceImpl::CreateTexture(const v8::FunctionCallbackInfo<v8::Value> &arg
|
|
|
2599
2608
|
|
|
2600
2609
|
|
|
2601
2610
|
v8::Local<v8::Value> formatVal;
|
|
2602
|
-
options->Get(context, ConvertToV8String(isolate, "format")).ToLocal(
|
|
2603
|
-
&formatVal);
|
|
2604
2611
|
|
|
2605
|
-
if (
|
|
2612
|
+
if (options->Get(context, ConvertToV8String(isolate, "format")).ToLocal(
|
|
2613
|
+
&formatVal) && formatVal->IsString()) {
|
|
2606
2614
|
auto format = ConvertFromV8String(isolate, formatVal);
|
|
2607
2615
|
|
|
2608
2616
|
// todo use enum
|
|
@@ -180,7 +180,7 @@ void GPUImpl::__GetPointer(const v8::FunctionCallbackInfo<v8::Value> &args) {
|
|
|
180
180
|
|
|
181
181
|
auto isolate = args.GetIsolate();
|
|
182
182
|
|
|
183
|
-
auto pointer = (
|
|
184
|
-
auto ret = std::to_string(
|
|
183
|
+
auto pointer = canvas_native_webgpu_get_pointer_addr(ptr->GetGPUInstance());
|
|
184
|
+
auto ret = std::to_string(pointer);
|
|
185
185
|
args.GetReturnValue().Set(ConvertToV8String(isolate, ret));
|
|
186
186
|
}
|