@@ -22,15 +22,6 @@ use crate::get_data_slice;
2222use crate :: texture:: GPUTextureFormat ;
2323use crate :: Instance ;
2424
25- fn c_string_truncated_at_first_nul < T : Into < Vec < u8 > > > (
26- src : T ,
27- ) -> std:: ffi:: CString {
28- std:: ffi:: CString :: new ( src) . unwrap_or_else ( |err| {
29- let nul_pos = err. nul_position ( ) ;
30- std:: ffi:: CString :: new ( err. into_vec ( ) . split_at ( nul_pos) . 0 ) . unwrap ( )
31- } )
32- }
33-
3425pub struct GPURenderBundleEncoder {
3526 pub instance : Instance ,
3627 pub error_handler : super :: error:: ErrorHandler ,
@@ -98,15 +89,9 @@ impl GPURenderBundleEncoder {
9889 JsErrorBox :: generic ( "Encoder has already been finished" )
9990 } ) ?;
10091
101- let label = c_string_truncated_at_first_nul ( group_label) ;
102- // SAFETY: the string the raw pointer points to lives longer than the below
103- // function invocation.
104- unsafe {
105- wgpu_core:: command:: bundle_ffi:: wgpu_render_bundle_push_debug_group (
106- encoder,
107- label. as_ptr ( ) ,
108- ) ;
109- }
92+ self
93+ . instance
94+ . render_bundle_encoder_push_debug_group ( encoder, & group_label) ;
11095
11196 Ok ( ( ) )
11297 }
@@ -118,7 +103,7 @@ impl GPURenderBundleEncoder {
118103 let encoder = encoder. as_mut ( ) . ok_or_else ( || {
119104 JsErrorBox :: generic ( "Encoder has already been finished" )
120105 } ) ?;
121- wgpu_core :: command :: bundle_ffi :: wgpu_render_bundle_pop_debug_group ( encoder) ;
106+ self . instance . render_bundle_encoder_pop_debug_group ( encoder) ;
122107 Ok ( ( ) )
123108 }
124109
@@ -132,15 +117,9 @@ impl GPURenderBundleEncoder {
132117 JsErrorBox :: generic ( "Encoder has already been finished" )
133118 } ) ?;
134119
135- let label = c_string_truncated_at_first_nul ( marker_label) ;
136- // SAFETY: the string the raw pointer points to lives longer than the below
137- // function invocation.
138- unsafe {
139- wgpu_core:: command:: bundle_ffi:: wgpu_render_bundle_insert_debug_marker (
140- encoder,
141- label. as_ptr ( ) ,
142- ) ;
143- }
120+ self
121+ . instance
122+ . render_bundle_encoder_insert_debug_marker ( encoder, & marker_label) ;
144123 Ok ( ( ) )
145124 }
146125
@@ -193,16 +172,12 @@ impl GPURenderBundleEncoder {
193172
194173 let offsets = & data[ start..( start + len) ] ;
195174
196- // SAFETY: wgpu FFI call
197- unsafe {
198- wgpu_core:: command:: bundle_ffi:: wgpu_render_bundle_set_bind_group (
199- encoder,
200- index,
201- bind_group. into_option ( ) . map ( |bind_group| bind_group. id ) ,
202- offsets. as_ptr ( ) ,
203- offsets. len ( ) ,
204- ) ;
205- }
175+ self . instance . render_bundle_encoder_set_bind_group (
176+ encoder,
177+ index,
178+ bind_group. into_option ( ) . map ( |bind_group| bind_group. id ) ,
179+ offsets,
180+ ) ;
206181 } else {
207182 let offsets = <Option < Vec < u32 > > >:: convert (
208183 scope,
@@ -216,16 +191,12 @@ impl GPURenderBundleEncoder {
216191 ) ?
217192 . unwrap_or_default ( ) ;
218193
219- // SAFETY: wgpu FFI call
220- unsafe {
221- wgpu_core:: command:: bundle_ffi:: wgpu_render_bundle_set_bind_group (
222- encoder,
223- index,
224- bind_group. into_option ( ) . map ( |bind_group| bind_group. id ) ,
225- offsets. as_ptr ( ) ,
226- offsets. len ( ) ,
227- ) ;
228- }
194+ self . instance . render_bundle_encoder_set_bind_group (
195+ encoder,
196+ index,
197+ bind_group. into_option ( ) . map ( |bind_group| bind_group. id ) ,
198+ & offsets,
199+ ) ;
229200 }
230201
231202 Ok ( ( ) )
@@ -241,10 +212,9 @@ impl GPURenderBundleEncoder {
241212 JsErrorBox :: generic ( "Encoder has already been finished" )
242213 } ) ?;
243214
244- wgpu_core:: command:: bundle_ffi:: wgpu_render_bundle_set_pipeline (
245- encoder,
246- pipeline. id ,
247- ) ;
215+ self
216+ . instance
217+ . render_bundle_encoder_set_pipeline ( encoder, pipeline. id ) ;
248218 Ok ( ( ) )
249219 }
250220
@@ -262,7 +232,8 @@ impl GPURenderBundleEncoder {
262232 JsErrorBox :: generic ( "Encoder has already been finished" )
263233 } ) ?;
264234
265- encoder. set_index_buffer (
235+ self . instance . render_bundle_encoder_set_index_buffer (
236+ encoder,
266237 buffer. id ,
267238 index_format. into ( ) ,
268239 offset,
@@ -285,7 +256,7 @@ impl GPURenderBundleEncoder {
285256 JsErrorBox :: generic ( "Encoder has already been finished" )
286257 } ) ?;
287258
288- wgpu_core :: command :: bundle_ffi :: wgpu_render_bundle_set_vertex_buffer (
259+ self . instance . render_bundle_encoder_set_vertex_buffer (
289260 encoder,
290261 slot,
291262 buffer. into_option ( ) . map ( |buffer| buffer. id ) ,
@@ -309,7 +280,7 @@ impl GPURenderBundleEncoder {
309280 JsErrorBox :: generic ( "Encoder has already been finished" )
310281 } ) ?;
311282
312- wgpu_core :: command :: bundle_ffi :: wgpu_render_bundle_draw (
283+ self . instance . render_bundle_encoder_draw (
313284 encoder,
314285 vertex_count,
315286 instance_count,
@@ -334,7 +305,7 @@ impl GPURenderBundleEncoder {
334305 JsErrorBox :: generic ( "Encoder has already been finished" )
335306 } ) ?;
336307
337- wgpu_core :: command :: bundle_ffi :: wgpu_render_bundle_draw_indexed (
308+ self . instance . render_bundle_encoder_draw_indexed (
338309 encoder,
339310 index_count,
340311 instance_count,
@@ -357,7 +328,7 @@ impl GPURenderBundleEncoder {
357328 JsErrorBox :: generic ( "Encoder has already been finished" )
358329 } ) ?;
359330
360- wgpu_core :: command :: bundle_ffi :: wgpu_render_bundle_draw_indirect (
331+ self . instance . render_bundle_encoder_draw_indirect (
361332 encoder,
362333 indirect_buffer. id ,
363334 indirect_offset,
@@ -377,7 +348,7 @@ impl GPURenderBundleEncoder {
377348 JsErrorBox :: generic ( "Encoder has already been finished" )
378349 } ) ?;
379350
380- wgpu_core :: command :: bundle_ffi :: wgpu_render_bundle_draw_indexed_indirect (
351+ self . instance . render_bundle_encoder_draw_indexed_indirect (
381352 encoder,
382353 indirect_buffer. id ,
383354 indirect_offset,
@@ -402,14 +373,9 @@ impl GPURenderBundleEncoder {
402373 JsErrorBox :: generic ( "Encoder has already been finished" )
403374 } ) ?;
404375
405- unsafe {
406- wgpu_core:: command:: bundle_ffi:: wgpu_render_bundle_set_immediates (
407- encoder,
408- offset,
409- data. len ( ) . try_into ( ) . unwrap ( ) ,
410- data. as_ptr ( ) ,
411- ) ;
412- }
376+ self
377+ . instance
378+ . render_bundle_encoder_set_immediates ( encoder, offset, data) ;
413379 Ok ( ( ) )
414380 }
415381}
0 commit comments