162162
163163var LibraryWebGPU = {
164164 $WebGPU__postset : 'WebGPU.initManagers();' ,
165+ $WebGPU__deps : [ '$withStackSave' , '$stringToUTF8OnStack' ] ,
165166 $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+
166174 initManagers : function ( ) {
167175 if ( WebGPU . mgrDevice ) return ;
168176
@@ -770,13 +778,13 @@ var LibraryWebGPU = {
770778 device [ "pushErrorScope" ] ( WebGPU . ErrorFilter [ filter ] ) ;
771779 } ,
772780
773- wgpuDevicePopErrorScope__deps : [ '$callUserCallback' , '$stringToNewUTF8' ] ,
781+ wgpuDevicePopErrorScope__deps : [ '$callUserCallback' ] ,
774782 wgpuDevicePopErrorScope : function ( deviceId , callback , userdata ) {
775783 var device = WebGPU . mgrDevice . get ( deviceId ) ;
776784 { { { runtimeKeepalivePush ( ) } } }
777- device [ "popErrorScope" ] ( ) . then ( function ( gpuError ) {
785+ device [ "popErrorScope" ] ( ) . then ( ( gpuError ) => {
778786 { { { runtimeKeepalivePop ( ) } } }
779- callUserCallback ( function ( ) {
787+ callUserCallback ( ( ) => {
780788 if ( ! gpuError ) {
781789 { { { makeDynCall ( 'viii' , 'callback' ) } } } (
782790 { { { gpu . ErrorType . NoError } } } , 0 , userdata) ;
@@ -787,20 +795,16 @@ var LibraryWebGPU = {
787795#if ASSERTIONS
788796 assert ( gpuError instanceof GPUValidationError ) ;
789797#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) ;
793799 }
794800 } ) ;
795- } , function ( ex ) {
801+ } , ( ex ) => {
796802 { { { runtimeKeepalivePop( ) } } }
797- callUserCallback ( function ( ) {
798- var messagePtr = stringToNewUTF8 ( ex . message ) ;
803+ callUserCallback ( ( ) => {
799804 // TODO: This can mean either the device was lost or the error scope stack was empty. Figure
800805 // out how to synthesize the DeviceLost error type. (Could be by simply tracking the error
801806 // 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) ;
804808 } ) ;
805809 } ) ;
806810 } ,
@@ -810,32 +814,27 @@ var LibraryWebGPU = {
810814 device . label = UTF8ToString ( labelPtr ) ;
811815 } ,
812816
813- wgpuDeviceSetDeviceLostCallback__deps : [ '$callUserCallback' , '$stringToNewUTF8' , 'free' ] ,
817+ wgpuDeviceSetDeviceLostCallback__deps : [ '$callUserCallback' ] ,
814818 wgpuDeviceSetDeviceLostCallback : function ( deviceId , callback , userdata ) {
815819 var deviceWrapper = WebGPU . mgrDevice . objects [ deviceId ] ;
816820 { { { gpu . makeCheckDefined ( 'deviceWrapper' ) } } }
817821 if ( ! deviceWrapper . lostCallback ) {
818822 // 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 ) ) ;
822824 }
823- deviceWrapper . lostCallback = function ( info ) {
825+ deviceWrapper . lostCallback = ( info ) => {
824826 // 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 ) ) ;
830829 } ;
831830 } ,
832831
833- wgpuDeviceSetUncapturedErrorCallback__deps : [ '$callUserCallback' , '$stringToNewUTF8' ] ,
832+ wgpuDeviceSetUncapturedErrorCallback__deps : [ '$callUserCallback' ] ,
834833 wgpuDeviceSetUncapturedErrorCallback : function ( deviceId , callback , userdata ) {
835834 var device = WebGPU . mgrDevice . get ( deviceId ) ;
836835 device [ "onuncapturederror" ] = function ( ev ) {
837836 // This will skip the callback if the runtime is no longer alive.
838- callUserCallback ( function ( ) {
837+ callUserCallback ( ( ) => {
839838 // WGPUErrorType type, const char* message, void* userdata
840839 var Validation = 0x00000001 ;
841840 var OutOfMemory = 0x00000002 ;
@@ -847,9 +846,7 @@ var LibraryWebGPU = {
847846 if ( ev . error instanceof GPUValidationError ) type = Validation ;
848847 else if ( ev . error instanceof GPUOutOfMemoryError ) type = OutOfMemory ;
849848
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 ) ;
853850 } ) ;
854851 } ;
855852 } ,
@@ -1506,14 +1503,14 @@ var LibraryWebGPU = {
15061503#endif
15071504
15081505 { { { runtimeKeepalivePush ( ) } } }
1509- queue [ "onSubmittedWorkDone" ] ( ) . then ( function ( ) {
1506+ queue [ "onSubmittedWorkDone" ] ( ) . then ( ( ) => {
15101507 { { { runtimeKeepalivePop ( ) } } }
1511- callUserCallback ( function ( ) {
1508+ callUserCallback ( ( ) => {
15121509 { { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . QueueWorkDoneStatus . Success } } } , userdata) ;
15131510 } ) ;
1514- } , function ( ) {
1511+ } , ( ) => {
15151512 { { { runtimeKeepalivePop ( ) } } }
1516- callUserCallback ( function ( ) {
1513+ callUserCallback ( ( ) => {
15171514 { { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . QueueWorkDoneStatus . Error } } } , userdata) ;
15181515 } ) ;
15191516 } ) ;
@@ -1885,9 +1882,7 @@ var LibraryWebGPU = {
18851882
18861883 var data = _malloc ( mapped . byteLength ) ;
18871884 HEAPU8 . set ( new Uint8Array ( mapped ) , data ) ;
1888- bufferWrapper . onUnmap . push ( function ( ) {
1889- _free ( data ) ;
1890- } ) ;
1885+ bufferWrapper . onUnmap . push ( ( ) => _free ( data ) ) ;
18911886 return data ;
18921887 } ,
18931888
@@ -1924,7 +1919,7 @@ var LibraryWebGPU = {
19241919
19251920 var data = _malloc ( mapped . byteLength ) ;
19261921 HEAPU8 . fill ( 0 , data , mapped . byteLength ) ;
1927- bufferWrapper . onUnmap . push ( function ( ) {
1922+ bufferWrapper . onUnmap . push ( ( ) => {
19281923 new Uint8Array ( mapped ) . set ( HEAPU8 . subarray ( data , data + mapped . byteLength ) ) ;
19291924 _free ( data ) ;
19301925 } ) ;
@@ -1947,14 +1942,14 @@ var LibraryWebGPU = {
19471942 // `callback` takes (WGPUBufferMapAsyncStatus status, void * userdata)
19481943
19491944 { { { runtimeKeepalivePush( ) } } }
1950- buffer [ "mapAsync" ] ( mode, offset, size ) . then ( function ( ) {
1945+ buffer [ "mapAsync" ] ( mode , offset, size ) . then ( ( ) => {
19511946 { { { runtimeKeepalivePop( ) } } }
1952- callUserCallback ( function ( ) {
1947+ callUserCallback ( ( ) => {
19531948 { { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . BufferMapAsyncStatus . Success } } } , userdata) ;
19541949 } ) ;
1955- } , function ( ) {
1950+ } , ( ) => {
19561951 { { { runtimeKeepalivePop( ) } } }
1957- callUserCallback ( function ( ) {
1952+ callUserCallback ( ( ) => {
19581953 // TODO(kainino0x): Figure out how to pick other error status values.
19591954 { { { makeDynCall ( 'vii' , 'callback' ) } } } ( { { { gpu . BufferMapAsyncStatus . Error } } } , userdata) ;
19601955 } ) ;
@@ -2432,7 +2427,7 @@ var LibraryWebGPU = {
24322427#endif
24332428 } ,
24342429
2435- wgpuInstanceRequestAdapter__deps : [ '$callUserCallback' , '$stringToNewUTF8' , 'free '] ,
2430+ wgpuInstanceRequestAdapter__deps : [ '$callUserCallback' , '$stringToUTF8OnStack ' ] ,
24362431 wgpuInstanceRequestAdapter : function ( instanceId , options , callback , userdata ) {
24372432 { { { gpu . makeCheck ( 'instanceId === 0, "WGPUInstance is ignored"' ) } } }
24382433
@@ -2448,31 +2443,34 @@ var LibraryWebGPU = {
24482443 }
24492444
24502445 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+ } ) ;
24542450 return ;
24552451 }
24562452
24572453 { { { runtimeKeepalivePush ( ) } } }
2458- navigator [ "gpu "] [ "requestAdapter "] ( opts ) . then ( function ( adapter ) {
2454+ navigator [ "gpu" ] [ "requestAdapter" ] ( opts ) . then ( ( adapter ) => {
24592455 { { { runtimeKeepalivePop ( ) } } }
2460- callUserCallback ( function ( ) {
2456+ callUserCallback ( ( ) => {
24612457 if ( adapter ) {
24622458 var adapterId = WebGPU . mgrAdapter . create ( adapter ) ;
24632459 { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestAdapterStatus . Success } } } , adapterId, 0 , userdata) ;
24642460 } 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+ } ) ;
24682465 }
24692466 } ) ;
2470- } , function ( ex ) {
2467+ } , ( ex ) => {
24712468 { { { 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+ } ) ;
24762474 } ) ;
24772475 } ) ;
24782476 } ,
@@ -2513,7 +2511,7 @@ var LibraryWebGPU = {
25132511 return adapter . features . has ( WebGPU . FeatureName [ featureEnumValue ] ) ;
25142512 } ,
25152513
2516- wgpuAdapterRequestDevice__deps : [ '$callUserCallback' , '$stringToNewUTF8' , 'free '] ,
2514+ wgpuAdapterRequestDevice__deps : [ '$callUserCallback' , '$stringToUTF8OnStack ' ] ,
25172515 wgpuAdapterRequestDevice : function ( adapterId , descriptor , callback , userdata ) {
25182516 var adapter = WebGPU . mgrAdapter . get ( adapterId ) ;
25192517
@@ -2524,7 +2522,7 @@ var LibraryWebGPU = {
25242522 if ( requiredFeaturesCount ) {
25252523 var requiredFeaturesPtr = { { { makeGetValue ( 'descriptor' , C_STRUCTS . WGPUDeviceDescriptor . requiredFeatures , '*' ) } } } ;
25262524 desc [ "requiredFeatures" ] = Array . from ( HEAP32 . subarray ( requiredFeaturesPtr >> 2 , ( requiredFeaturesPtr >> 2 ) + requiredFeaturesCount ) ,
2527- function ( feature ) { return WebGPU . FeatureName [ feature ] ; } ) ;
2525+ ( feature ) => WebGPU . FeatureName [ feature ] ) ;
25282526 }
25292527 var requiredLimitsPtr = { { { makeGetValue ( 'descriptor' , C_STRUCTS . WGPUDeviceDescriptor . requiredLimits , '*' ) } } } ;
25302528 if ( requiredLimitsPtr ) {
@@ -2592,19 +2590,20 @@ var LibraryWebGPU = {
25922590 }
25932591
25942592 { { { runtimeKeepalivePush ( ) } } }
2595- adapter [ "requestDevice "] ( desc ) . then ( function ( device ) {
2593+ adapter [ "requestDevice" ] ( desc ) . then ( ( device ) => {
25962594 { { { runtimeKeepalivePop ( ) } } }
2597- callUserCallback ( function ( ) {
2595+ callUserCallback ( ( ) => {
25982596 var deviceWrapper = { queueId : WebGPU . mgrQueue . create ( device [ "queue" ] ) } ;
25992597 var deviceId = WebGPU . mgrDevice . create ( device , deviceWrapper ) ;
26002598 { { { makeDynCall ( 'viiii' , 'callback' ) } } } ( { { { gpu . RequestDeviceStatus . Success } } } , deviceId, 0 , userdata) ;
26012599 } ) ;
26022600 } , function ( ex ) {
26032601 { { { 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+ } ) ;
26082607 } ) ;
26092608 } ) ;
26102609 } ,
0 commit comments