162
162
163
163
var LibraryWebGPU = {
164
164
$WebGPU__postset : 'WebGPU.initManagers();' ,
165
+ $WebGPU__deps : [ '$withStackSave' , '$stringToUTF8OnStack' ] ,
165
166
$WebGPU : {
167
+ errorCallback : function ( callback , type , message , userdata ) {
168
+ withStackSave ( ( ) => {
169
+ var messagePtr = stringToUTF8OnStack ( message ) ;
170
+ { { { makeDynCall ( 'viii' , 'callback' ) } } } ( type , messagePtr , userdata ) ;
171
+ } ) ;
172
+ } ,
173
+
166
174
initManagers : function ( ) {
167
175
if ( WebGPU . mgrDevice ) return ;
168
176
@@ -770,13 +778,13 @@ var LibraryWebGPU = {
770
778
device [ "pushErrorScope" ] ( WebGPU . ErrorFilter [ filter ] ) ;
771
779
} ,
772
780
773
- wgpuDevicePopErrorScope__deps : [ '$callUserCallback' , '$stringToNewUTF8' ] ,
781
+ wgpuDevicePopErrorScope__deps : [ '$callUserCallback' ] ,
774
782
wgpuDevicePopErrorScope : function ( deviceId , callback , userdata ) {
775
783
var device = WebGPU . mgrDevice . get ( deviceId ) ;
776
784
{ { { runtimeKeepalivePush ( ) } } }
777
- device [ "popErrorScope" ] ( ) . then ( function ( gpuError ) {
785
+ device [ "popErrorScope" ] ( ) . then ( ( gpuError ) => {
778
786
{ { { runtimeKeepalivePop ( ) } } }
779
- callUserCallback ( function ( ) {
787
+ callUserCallback ( ( ) => {
780
788
if ( ! gpuError ) {
781
789
{ { { makeDynCall ( 'viii' , 'callback' ) } } } (
782
790
{ { { gpu . ErrorType . NoError } } } , 0 , userdata) ;
@@ -787,20 +795,16 @@ var LibraryWebGPU = {
787
795
#if ASSERTIONS
788
796
assert ( gpuError instanceof GPUValidationError ) ;
789
797
#endif
790
- var messagePtr = stringToNewUTF8 ( gpuError . message ) ;
791
- { { { makeDynCall ( 'viii' , 'callback' ) } } } ( { { { gpu . ErrorType . Validation } } } , messagePtr , userdata ) ;
792
- _free ( messagePtr ) ;
798
+ WebGPU . errorCallback ( callback, { { { gpu . ErrorType . Validation } } } , gpuError. message , userdata) ;
793
799
}
794
800
} ) ;
795
- } , function ( ex ) {
801
+ } , ( ex ) => {
796
802
{ { { runtimeKeepalivePop( ) } } }
797
- callUserCallback ( function ( ) {
798
- var messagePtr = stringToNewUTF8 ( ex . message ) ;
803
+ callUserCallback ( ( ) => {
799
804
// TODO: This can mean either the device was lost or the error scope stack was empty. Figure
800
805
// out how to synthesize the DeviceLost error type. (Could be by simply tracking the error
801
806
// scope depth, but that isn't ideal.)
802
- { { { makeDynCall ( 'viii' , 'callback' ) } } } ( { { { gpu . ErrorType . Unknown } } } , messagePtr, userdata ) ;
803
- _free ( messagePtr) ;
807
+ WebGPU . errorCallback ( callback, { { { gpu . ErrorType . Unknown } } } , ex . message, userdata) ;
804
808
} ) ;
805
809
} ) ;
806
810
} ,
@@ -810,32 +814,27 @@ var LibraryWebGPU = {
810
814
device . label = UTF8ToString ( labelPtr ) ;
811
815
} ,
812
816
813
- wgpuDeviceSetDeviceLostCallback__deps : [ '$callUserCallback' , '$stringToNewUTF8' , 'free' ] ,
817
+ wgpuDeviceSetDeviceLostCallback__deps : [ '$callUserCallback' ] ,
814
818
wgpuDeviceSetDeviceLostCallback : function ( deviceId , callback , userdata ) {
815
819
var deviceWrapper = WebGPU . mgrDevice . objects [ deviceId ] ;
816
820
{ { { gpu . makeCheckDefined ( 'deviceWrapper' ) } } }
817
821
if ( ! deviceWrapper . lostCallback ) {
818
822
// device.lost hasn't been registered yet - register it.
819
- deviceWrapper . object [ "lost" ] . then ( function ( info ) {
820
- deviceWrapper . lostCallback ( info ) ;
821
- } ) ;
823
+ deviceWrapper . object [ "lost" ] . then ( ( info ) => deviceWrapper . lostCallback ( info ) ) ;
822
824
}
823
- deviceWrapper . lostCallback = function ( info ) {
825
+ deviceWrapper . lostCallback = ( info ) => {
824
826
// This will skip the callback if the runtime is no longer alive.
825
- callUserCallback ( function ( ) {
826
- var messagePtr = stringToNewUTF8 ( info . message ) ;
827
- { { { makeDynCall ( 'viii' , 'callback' ) } } } ( WebGPU . DeviceLostReason [ info . reason ] , messagePtr , userdata ) ;
828
- _free ( messagePtr ) ;
829
- } ) ;
827
+ callUserCallback ( ( ) => WebGPU . errorCallback ( callback , WebGPU . DeviceLostReason [ info . reason ] ,
828
+ info . message , userdata ) ) ;
830
829
} ;
831
830
} ,
832
831
833
- wgpuDeviceSetUncapturedErrorCallback__deps : [ '$callUserCallback' , '$stringToNewUTF8' ] ,
832
+ wgpuDeviceSetUncapturedErrorCallback__deps : [ '$callUserCallback' ] ,
834
833
wgpuDeviceSetUncapturedErrorCallback : function ( deviceId , callback , userdata ) {
835
834
var device = WebGPU . mgrDevice . get ( deviceId ) ;
836
835
device [ "onuncapturederror" ] = function ( ev ) {
837
836
// This will skip the callback if the runtime is no longer alive.
838
- callUserCallback ( function ( ) {
837
+ callUserCallback ( ( ) => {
839
838
// WGPUErrorType type, const char* message, void* userdata
840
839
var Validation = 0x00000001 ;
841
840
var OutOfMemory = 0x00000002 ;
@@ -847,9 +846,7 @@ var LibraryWebGPU = {
847
846
if ( ev . error instanceof GPUValidationError ) type = Validation ;
848
847
else if ( ev . error instanceof GPUOutOfMemoryError ) type = OutOfMemory ;
849
848
850
- var messagePtr = stringToNewUTF8 ( ev . error . message ) ;
851
- { { { makeDynCall ( 'viii' , 'callback' ) } } } ( type , messagePtr , userdata ) ;
852
- _free ( messagePtr ) ;
849
+ WebGPU . errorCallback ( callback , type , ev . error . message , userdata ) ;
853
850
} ) ;
854
851
} ;
855
852
} ,
@@ -1506,14 +1503,14 @@ var LibraryWebGPU = {
1506
1503
#endif
1507
1504
1508
1505
{ { { runtimeKeepalivePush ( ) } } }
1509
- queue [ "onSubmittedWorkDone" ] ( ) . then ( function ( ) {
1506
+ queue [ "onSubmittedWorkDone" ] ( ) . then ( ( ) => {
1510
1507
{ { { runtimeKeepalivePop ( ) } } }
1511
- callUserCallback ( function ( ) {
1508
+ callUserCallback ( ( ) => {
1512
1509
{ { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . QueueWorkDoneStatus . Success } } } , userdata) ;
1513
1510
} ) ;
1514
- } , function ( ) {
1511
+ } , ( ) => {
1515
1512
{ { { runtimeKeepalivePop ( ) } } }
1516
- callUserCallback ( function ( ) {
1513
+ callUserCallback ( ( ) => {
1517
1514
{ { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . QueueWorkDoneStatus . Error } } } , userdata) ;
1518
1515
} ) ;
1519
1516
} ) ;
@@ -1885,9 +1882,7 @@ var LibraryWebGPU = {
1885
1882
1886
1883
var data = _malloc ( mapped . byteLength ) ;
1887
1884
HEAPU8 . set ( new Uint8Array ( mapped ) , data ) ;
1888
- bufferWrapper . onUnmap . push ( function ( ) {
1889
- _free ( data ) ;
1890
- } ) ;
1885
+ bufferWrapper . onUnmap . push ( ( ) => _free ( data ) ) ;
1891
1886
return data ;
1892
1887
} ,
1893
1888
@@ -1924,7 +1919,7 @@ var LibraryWebGPU = {
1924
1919
1925
1920
var data = _malloc ( mapped . byteLength ) ;
1926
1921
HEAPU8 . fill ( 0 , data , mapped . byteLength ) ;
1927
- bufferWrapper . onUnmap . push ( function ( ) {
1922
+ bufferWrapper . onUnmap . push ( ( ) => {
1928
1923
new Uint8Array ( mapped ) . set ( HEAPU8 . subarray ( data , data + mapped . byteLength ) ) ;
1929
1924
_free ( data ) ;
1930
1925
} ) ;
@@ -1947,14 +1942,14 @@ var LibraryWebGPU = {
1947
1942
// `callback` takes (WGPUBufferMapAsyncStatus status, void * userdata)
1948
1943
1949
1944
{ { { runtimeKeepalivePush( ) } } }
1950
- buffer [ "mapAsync" ] ( mode, offset, size ) . then ( function ( ) {
1945
+ buffer [ "mapAsync" ] ( mode , offset, size ) . then ( ( ) => {
1951
1946
{ { { runtimeKeepalivePop( ) } } }
1952
- callUserCallback ( function ( ) {
1947
+ callUserCallback ( ( ) => {
1953
1948
{ { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . BufferMapAsyncStatus . Success } } } , userdata) ;
1954
1949
} ) ;
1955
- } , function ( ) {
1950
+ } , ( ) => {
1956
1951
{ { { runtimeKeepalivePop( ) } } }
1957
- callUserCallback ( function ( ) {
1952
+ callUserCallback ( ( ) => {
1958
1953
// TODO(kainino0x): Figure out how to pick other error status values.
1959
1954
{ { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . BufferMapAsyncStatus . Error } } } , userdata) ;
1960
1955
} ) ;
@@ -2432,7 +2427,7 @@ var LibraryWebGPU = {
2432
2427
#endif
2433
2428
} ,
2434
2429
2435
- wgpuInstanceRequestAdapter__deps : [ '$callUserCallback' , '$stringToNewUTF8' , 'free '] ,
2430
+ wgpuInstanceRequestAdapter__deps : [ '$callUserCallback' , '$stringToUTF8OnStack ' ] ,
2436
2431
wgpuInstanceRequestAdapter : function ( instanceId , options , callback , userdata ) {
2437
2432
{ { { gpu . makeCheck ( 'instanceId === 0, "WGPUInstance is ignored"' ) } } }
2438
2433
@@ -2448,31 +2443,34 @@ var LibraryWebGPU = {
2448
2443
}
2449
2444
2450
2445
if ( ! ( 'gpu' in navigator ) ) {
2451
- var messagePtr = stringToNewUTF8 ( 'WebGPU not available on this browser (navigator.gpu is not available)' ) ;
2452
- { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Unavailable } } } , 0 , messagePtr , userdata ) ;
2453
- _free ( messagePtr ) ;
2446
+ withStackSave ( ( ) => {
2447
+ var messagePtr = stringToUTF8OnStack ( 'WebGPU not available on this browser (navigator.gpu is not available)' ) ;
2448
+ { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Unavailable } } } , 0 , messagePtr, userdata) ;
2449
+ } ) ;
2454
2450
return ;
2455
2451
}
2456
2452
2457
2453
{ { { runtimeKeepalivePush ( ) } } }
2458
- navigator [ "gpu "] [ "requestAdapter "] ( opts ) . then ( function ( adapter ) {
2454
+ navigator [ "gpu" ] [ "requestAdapter" ] ( opts ) . then ( ( adapter ) => {
2459
2455
{ { { runtimeKeepalivePop ( ) } } }
2460
- callUserCallback ( function ( ) {
2456
+ callUserCallback ( ( ) => {
2461
2457
if ( adapter ) {
2462
2458
var adapterId = WebGPU . mgrAdapter . create ( adapter ) ;
2463
2459
{ { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Success } } } , adapterId, 0 , userdata) ;
2464
2460
} else {
2465
- var messagePtr = stringToNewUTF8 ( 'WebGPU not available on this system (requestAdapter returned null)' ) ;
2466
- { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Unavailable } } } , 0 , messagePtr , userdata ) ;
2467
- _free ( messagePtr ) ;
2461
+ withStackSave ( ( ) => {
2462
+ var messagePtr = stringToUTF8OnStack ( 'WebGPU not available on this system (requestAdapter returned null)' ) ;
2463
+ { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Unavailable } } } , 0 , messagePtr, userdata) ;
2464
+ } ) ;
2468
2465
}
2469
2466
} ) ;
2470
- } , function ( ex ) {
2467
+ } , ( ex ) => {
2471
2468
{ { { runtimeKeepalivePop ( ) } } }
2472
- callUserCallback ( function ( ) {
2473
- var messagePtr = stringToNewUTF8 ( ex . message ) ;
2474
- { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Error } } } , 0 , messagePtr , userdata ) ;
2475
- _free ( messagePtr ) ;
2469
+ callUserCallback ( ( ) => {
2470
+ withStackSave ( ( ) => {
2471
+ var messagePtr = stringToUTF8OnStack ( ex . message ) ;
2472
+ { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Error } } } , 0 , messagePtr, userdata) ;
2473
+ } ) ;
2476
2474
} ) ;
2477
2475
} ) ;
2478
2476
} ,
@@ -2513,7 +2511,7 @@ var LibraryWebGPU = {
2513
2511
return adapter . features . has ( WebGPU . FeatureName [ featureEnumValue ] ) ;
2514
2512
} ,
2515
2513
2516
- wgpuAdapterRequestDevice__deps : [ '$callUserCallback' , '$stringToNewUTF8' , 'free '] ,
2514
+ wgpuAdapterRequestDevice__deps : [ '$callUserCallback' , '$stringToUTF8OnStack ' ] ,
2517
2515
wgpuAdapterRequestDevice : function ( adapterId , descriptor , callback , userdata ) {
2518
2516
var adapter = WebGPU . mgrAdapter . get ( adapterId ) ;
2519
2517
@@ -2524,7 +2522,7 @@ var LibraryWebGPU = {
2524
2522
if ( requiredFeaturesCount ) {
2525
2523
var requiredFeaturesPtr = { { { makeGetValue ( 'descriptor' , C_STRUCTS . WGPUDeviceDescriptor . requiredFeatures , '*' ) } } } ;
2526
2524
desc [ "requiredFeatures" ] = Array . from ( HEAP32 . subarray ( requiredFeaturesPtr >> 2 , ( requiredFeaturesPtr >> 2 ) + requiredFeaturesCount ) ,
2527
- function ( feature ) { return WebGPU . FeatureName [ feature ] ; } ) ;
2525
+ ( feature ) => WebGPU . FeatureName [ feature ] ) ;
2528
2526
}
2529
2527
var requiredLimitsPtr = { { { makeGetValue ( 'descriptor' , C_STRUCTS . WGPUDeviceDescriptor . requiredLimits , '*' ) } } } ;
2530
2528
if ( requiredLimitsPtr ) {
@@ -2592,19 +2590,20 @@ var LibraryWebGPU = {
2592
2590
}
2593
2591
2594
2592
{ { { runtimeKeepalivePush ( ) } } }
2595
- adapter [ "requestDevice "] ( desc ) . then ( function ( device ) {
2593
+ adapter [ "requestDevice" ] ( desc ) . then ( ( device ) => {
2596
2594
{ { { runtimeKeepalivePop ( ) } } }
2597
- callUserCallback ( function ( ) {
2595
+ callUserCallback ( ( ) => {
2598
2596
var deviceWrapper = { queueId : WebGPU . mgrQueue . create ( device [ "queue" ] ) } ;
2599
2597
var deviceId = WebGPU . mgrDevice . create ( device , deviceWrapper ) ;
2600
2598
{ { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestDeviceStatus . Success } } } , deviceId, 0 , userdata) ;
2601
2599
} ) ;
2602
2600
} , function ( ex ) {
2603
2601
{ { { runtimeKeepalivePop ( ) } } }
2604
- callUserCallback ( function ( ) {
2605
- var messagePtr = stringToNewUTF8 ( ex . message ) ;
2606
- { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestDeviceStatus . Error } } } , 0 , messagePtr , userdata ) ;
2607
- _free ( messagePtr ) ;
2602
+ callUserCallback ( ( ) => {
2603
+ withStackSave ( ( ) => {
2604
+ var messagePtr = stringToUTF8OnStack ( ex . message ) ;
2605
+ { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestDeviceStatus . Error } } } , 0 , messagePtr, userdata) ;
2606
+ } ) ;
2608
2607
} ) ;
2609
2608
} ) ;
2610
2609
} ,
0 commit comments