File tree 2 files changed +18
-6
lines changed
2 files changed +18
-6
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ const log = std.log.scoped(.zgpu);
4
4
const default_options = struct {
5
5
const uniforms_buffer_size = 4 * 1024 * 1024 ;
6
6
const dawn_skip_validation = false ;
7
+ const dawn_allow_unsafe_apis = false ;
7
8
const buffer_pool_size = 256 ;
8
9
const texture_pool_size = 256 ;
9
10
const texture_view_pool_size = 256 ;
@@ -32,6 +33,11 @@ pub fn build(b: *std.Build) void {
32
33
"dawn_skip_validation" ,
33
34
"Disable Dawn validation" ,
34
35
) orelse default_options .dawn_skip_validation ,
36
+ .dawn_allow_unsafe_apis = b .option (
37
+ bool ,
38
+ "dawn_allow_unsafe_apis" ,
39
+ "Allow unsafe WebGPU APIs (e.g. timestamp queries)" ,
40
+ ) orelse default_options .dawn_allow_unsafe_apis ,
35
41
.buffer_pool_size = b .option (
36
42
u32 ,
37
43
"buffer_pool_size" ,
Original file line number Diff line number Diff line change @@ -205,20 +205,26 @@ pub const GraphicsContext = struct {
205
205
}
206
206
}).callback ;
207
207
208
- const toggles = [_ ][* :0 ]const u8 {"skip_validation" };
208
+ var toggles : [2 ][* :0 ]const u8 = undefined ;
209
+ var num_toggles : usize = 0 ;
210
+ if (zgpu_options .dawn_skip_validation ) {
211
+ toggles [num_toggles ] = "skip_validation" ;
212
+ num_toggles += 1 ;
213
+ }
214
+ if (zgpu_options .dawn_allow_unsafe_apis ) {
215
+ toggles [num_toggles ] = "allow_unsafe_apis" ;
216
+ num_toggles += 1 ;
217
+ }
209
218
const dawn_toggles = wgpu.DawnTogglesDescriptor {
210
219
.chain = .{ .next = null , .struct_type = .dawn_toggles_descriptor },
211
- .enabled_toggles_count = toggles . len ,
220
+ .enabled_toggles_count = num_toggles ,
212
221
.enabled_toggles = & toggles ,
213
222
};
214
223
215
224
var response = Response {};
216
225
adapter .requestDevice (
217
226
wgpu.DeviceDescriptor {
218
- .next_in_chain = if (zgpu_options .dawn_skip_validation )
219
- @ptrCast (& dawn_toggles )
220
- else
221
- null ,
227
+ .next_in_chain = @ptrCast (& dawn_toggles ),
222
228
.required_features_count = options .required_features .len ,
223
229
.required_features = options .required_features .ptr ,
224
230
.required_limits = @ptrCast (options .required_limits ),
You can’t perform that action at this time.
0 commit comments