@@ -35,9 +35,8 @@ wgpu${type}Reference: function(id) { WebGPU.mgr${type}.reference(id) },
35
35
wgpu${ type } Release: function(id) { WebGPU.mgr${ type } .release(id) },` ;
36
36
} ,
37
37
38
- convertI32PairToI53WithSentinelAsUndefined : function ( lowName , highName ) {
39
- return `((${ highName } === -1 && ${ lowName } === -1) ? undefined : \
40
- convertI32PairToI53(${ lowName } , ${ highName } ))` ;
38
+ convertSentinelToUndefined : function ( name ) {
39
+ return `if (${ name } == -1) ${ name } = undefined;` ;
41
40
} ,
42
41
43
42
makeGetBool : function ( struct , offset ) {
@@ -1041,6 +1040,7 @@ var LibraryWebGPU = {
1041
1040
return WebGPU . mgrBindGroupLayout . create ( device [ "createBindGroupLayout" ] ( desc ) ) ;
1042
1041
} ,
1043
1042
1043
+ wgpuDeviceCreateBindGroup__deps : [ '$readI53FromI64' ] ,
1044
1044
wgpuDeviceCreateBindGroup : function ( deviceId , descriptor ) {
1045
1045
{ { { gpu . makeCheckDescriptor ( 'descriptor' ) } } }
1046
1046
@@ -1057,16 +1057,15 @@ var LibraryWebGPU = {
1057
1057
var binding = { { { gpu . makeGetU32 ( 'entryPtr' , C_STRUCTS . WGPUBindGroupEntry . binding ) } } } ;
1058
1058
1059
1059
if ( bufferId ) {
1060
- var size_low = { { { makeGetValue ( 'entryPtr' , C_STRUCTS . WGPUBindGroupEntry . size , 'i32' ) } } } ;
1061
- var size_high = { { { makeGetValue ( 'entryPtr' , C_STRUCTS . WGPUBindGroupEntry . size + 4 , 'i32' ) } } } ;
1062
- var size = { { { gpu . convertI32PairToI53WithSentinelAsUndefined ( 'size_low' , 'size_high' ) } } } ;
1060
+ var size = { { { makeGetValue ( 'entryPtr' , C_STRUCTS . WGPUBindGroupEntry . size , 'i53' ) } } } ;
1061
+ { { { gpu . convertSentinelToUndefined ( 'size ') } } }
1063
1062
1064
1063
return {
1065
1064
"binding" : binding ,
1066
1065
"resource" : {
1067
1066
"buffer" : WebGPU . mgrBuffer . get ( bufferId ) ,
1068
1067
"offset" : { { { gpu . makeGetU64 ( 'entryPtr' , C_STRUCTS . WGPUBindGroupEntry . offset) } } } ,
1069
- "size" : size ,
1068
+ "size" : size
1070
1069
} ,
1071
1070
} ;
1072
1071
} else if ( samplerId ) {
@@ -1700,15 +1699,12 @@ var LibraryWebGPU = {
1700
1699
1701
1700
wgpuCommandEncoderClearBuffer : function ( encoderId , bufferId , { { { defineI64Param ( 'offset' ) } } } , { { { defineI64Param ( 'size' ) } } } ) {
1702
1701
var commandEncoder = WebGPU . mgrCommandEncoder . get ( encoderId ) ;
1703
- { { { receiveI64ParamAsI32s ( 'offset' ) } } }
1704
- { { { receiveI64ParamAsI32s ( 'size' ) } } }
1702
+ { { { receiveI64ParamAsI53 ( 'offset' ) } } }
1703
+ { { { receiveI64ParamAsI53 ( 'size' ) } } }
1704
+ { { { gpu . convertSentinelToUndefined ( 'size' ) } } }
1705
1705
1706
1706
var buffer = WebGPU . mgrBuffer . get ( bufferId ) ;
1707
- commandEncoder [ "clearBuffer" ] (
1708
- buffer ,
1709
- convertI32PairToI53 ( offset_low , offset_high ) ,
1710
- convertI32PairToI53 ( size_low , size_high )
1711
- ) ;
1707
+ commandEncoder [ "clearBuffer" ] ( buffer , offset , size ) ;
1712
1708
} ,
1713
1709
1714
1710
wgpuCommandEncoderCopyBufferToBuffer : function ( encoderId , srcId , { { { defineI64Param ( 'srcOffset' ) } } } , dstId , { { { defineI64Param ( 'dstOffset' ) } } } , { { { defineI64Param ( 'size' ) } } } ) {
@@ -2159,10 +2155,10 @@ var LibraryWebGPU = {
2159
2155
} ,
2160
2156
wgpuRenderPassEncoderSetIndexBuffer : function ( passId , bufferId , format , { { { defineI64Param ( 'offset' ) } } } , { { { defineI64Param ( 'size' ) } } } ) {
2161
2157
{ { { receiveI64ParamAsI53 ( 'offset' ) } } }
2162
- { { { receiveI64ParamAsI32s ( 'size' ) } } }
2158
+ { { { receiveI64ParamAsI53 ( 'size' ) } } }
2159
+ { { { gpu . convertSentinelToUndefined ( 'size' ) } } }
2163
2160
var pass = WebGPU . mgrRenderPassEncoder . get ( passId ) ;
2164
2161
var buffer = WebGPU . mgrBuffer . get ( bufferId ) ;
2165
- var size = { { { gpu . convertI32PairToI53WithSentinelAsUndefined ( 'size_low' , 'size_high' ) } } } ;
2166
2162
pass [ "setIndexBuffer" ] ( buffer , WebGPU . IndexFormat [ format ] , offset , size ) ;
2167
2163
} ,
2168
2164
wgpuRenderPassEncoderSetPipeline : function ( passId , pipelineId ) {
@@ -2184,10 +2180,10 @@ var LibraryWebGPU = {
2184
2180
} ,
2185
2181
wgpuRenderPassEncoderSetVertexBuffer : function ( passId , slot , bufferId , { { { defineI64Param ( 'offset' ) } } } , { { { defineI64Param ( 'size' ) } } } ) {
2186
2182
{ { { receiveI64ParamAsI53 ( 'offset' ) } } }
2187
- { { { receiveI64ParamAsI32s ( 'size' ) } } }
2183
+ { { { receiveI64ParamAsI53 ( 'size' ) } } }
2184
+ { { { gpu . convertSentinelToUndefined ( 'size' ) } } }
2188
2185
var pass = WebGPU . mgrRenderPassEncoder . get ( passId ) ;
2189
2186
var buffer = WebGPU . mgrBuffer . get ( bufferId ) ;
2190
- var size = { { { gpu . convertI32PairToI53WithSentinelAsUndefined ( 'size_low' , 'size_high' ) } } } ;
2191
2187
pass [ "setVertexBuffer" ] ( slot , buffer , offset , size ) ;
2192
2188
} ,
2193
2189
@@ -2295,10 +2291,10 @@ var LibraryWebGPU = {
2295
2291
} ,
2296
2292
wgpuRenderBundleEncoderSetIndexBuffer : function ( bundleId , bufferId , format , { { { defineI64Param ( 'offset' ) } } } , { { { defineI64Param ( 'size' ) } } } ) {
2297
2293
{ { { receiveI64ParamAsI53 ( 'offset' ) } } }
2298
- { { { receiveI64ParamAsI32s ( 'size' ) } } }
2294
+ { { { receiveI64ParamAsI53 ( 'size' ) } } }
2295
+ { { { gpu . convertSentinelToUndefined ( 'size' ) } } }
2299
2296
var pass = WebGPU . mgrRenderBundleEncoder . get ( bundleId ) ;
2300
2297
var buffer = WebGPU . mgrBuffer . get ( bufferId ) ;
2301
- var size = { { { gpu . convertI32PairToI53WithSentinelAsUndefined ( 'size_low' , 'size_high' ) } } } ;
2302
2298
pass [ "setIndexBuffer" ] ( buffer , WebGPU . IndexFormat [ format ] , offset , size ) ;
2303
2299
} ,
2304
2300
wgpuRenderBundleEncoderSetPipeline : function ( bundleId , pipelineId ) {
@@ -2308,10 +2304,10 @@ var LibraryWebGPU = {
2308
2304
} ,
2309
2305
wgpuRenderBundleEncoderSetVertexBuffer : function ( bundleId , slot , bufferId , { { { defineI64Param ( 'offset' ) } } } , { { { defineI64Param ( 'size' ) } } } ) {
2310
2306
{ { { receiveI64ParamAsI53 ( 'offset' ) } } }
2311
- { { { receiveI64ParamAsI32s ( 'size' ) } } }
2307
+ { { { receiveI64ParamAsI53 ( 'size' ) } } }
2308
+ { { { gpu . convertSentinelToUndefined ( 'size' ) } } }
2312
2309
var pass = WebGPU . mgrRenderBundleEncoder . get ( bundleId ) ;
2313
2310
var buffer = WebGPU . mgrBuffer . get ( bufferId ) ;
2314
- var size = { { { gpu . convertI32PairToI53WithSentinelAsUndefined ( 'size_low' , 'size_high' ) } } } ;
2315
2311
pass [ "setVertexBuffer" ] ( slot , buffer , offset , size ) ;
2316
2312
} ,
2317
2313
0 commit comments