Skip to content

Commit dbc9baf

Browse files
authored
Fix default for buffer binding type (#445)
* Fix default for buffer binding type * Validate defaults that should not be there Wanted to do this with schema but it was breaking the unevaluatedProperties check so I just did it in Go.
1 parent 4b95e76 commit dbc9baf

File tree

4 files changed

+54
-49
lines changed

4 files changed

+54
-49
lines changed

gen/gen.go

Lines changed: 50 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -492,11 +492,17 @@ func (g *Generator) DefaultValue(member ParameterType, isDocString bool) string
492492
return s
493493
}
494494
}
495+
495496
switch {
496497
case member.Pointer != "":
498+
if member.Default != nil {
499+
panic("pointer type should not have a default")
500+
}
497501
return literal("NULL")
502+
503+
// Cases that may have member.Default
498504
case strings.HasPrefix(member.Type, "enum."):
499-
if member.Default == "" {
505+
if member.Default == nil {
500506
if member.Type == "enum.optional_bool" {
501507
// This Undefined is a special one that is not the zero-value, so that
502508
// a stdbool.h bool cast correctly to WGPUOptionalBool; this means we
@@ -508,72 +514,75 @@ func (g *Generator) DefaultValue(member ParameterType, isDocString bool) string
508514
return "_wgpu_ENUM_ZERO_INIT(WGPU" + PascalCase(strings.TrimPrefix(member.Type, "enum.")) + ")"
509515
}
510516
} else {
511-
return ref("WGPU" + PascalCase(strings.TrimPrefix(member.Type, "enum.")) + "_" + PascalCase(member.Default))
517+
return ref("WGPU" + PascalCase(strings.TrimPrefix(member.Type, "enum.")) + "_" + PascalCase(*member.Default))
512518
}
513519
case strings.HasPrefix(member.Type, "bitflag."):
514-
if member.Default == "" {
520+
if member.Default == nil {
515521
return ref("WGPU" + PascalCase(strings.TrimPrefix(member.Type, "bitflag.")) + "_None")
516522
} else {
517-
return ref("WGPU" + PascalCase(strings.TrimPrefix(member.Type, "bitflag.")) + "_" + PascalCase(member.Default))
518-
}
519-
case strings.HasPrefix(member.Type, "struct."):
520-
if member.Optional {
521-
return literal("NULL")
522-
} else {
523-
typ := strings.TrimPrefix(member.Type, "struct.")
524-
return ref("WGPU_" + ConstantCase(typ) + "_INIT")
523+
return ref("WGPU" + PascalCase(strings.TrimPrefix(member.Type, "bitflag.")) + "_" + PascalCase(*member.Default))
525524
}
526-
case strings.HasPrefix(member.Type, "callback."):
527-
typ := strings.TrimPrefix(member.Type, "callback.")
528-
return ref("WGPU_" + ConstantCase(typ) + "_CALLBACK_INFO_INIT")
529-
case strings.HasPrefix(member.Type, "object."):
530-
return literal("NULL")
531-
case strings.HasPrefix(member.Type, "array<"):
532-
return literal("NULL")
533-
case member.Type == "out_string", member.Type == "string_with_default_empty", member.Type == "nullable_string":
534-
return ref("WGPU_STRING_VIEW_INIT")
535525
case member.Type == "uint16", member.Type == "uint32", member.Type == "uint64", member.Type == "usize", member.Type == "int32":
536-
if member.Default == "" {
526+
if member.Default == nil {
537527
return literal("0")
538-
} else if strings.HasPrefix(member.Default, "constant.") {
539-
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(member.Default, "constant.")))
528+
} else if strings.HasPrefix(*member.Default, "constant.") {
529+
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(*member.Default, "constant.")))
540530
} else {
541-
return literal(member.Default)
531+
return literal(*member.Default)
542532
}
543533
case member.Type == "float32":
544-
if member.Default == "" {
534+
if member.Default == nil {
545535
return literal("0.f")
546-
} else if strings.HasPrefix(member.Default, "constant.") {
547-
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(member.Default, "constant.")))
548-
} else if strings.Contains(member.Default, ".") {
549-
return literal(member.Default + "f")
536+
} else if strings.HasPrefix(*member.Default, "constant.") {
537+
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(*member.Default, "constant.")))
538+
} else if strings.Contains(*member.Default, ".") {
539+
return literal(*member.Default + "f")
550540
} else {
551-
return literal(member.Default + ".f")
541+
return literal(*member.Default + ".f")
552542
}
553543
case member.Type == "float64":
554-
if member.Default == "" {
544+
if member.Default == nil {
555545
return literal("0.")
556-
} else if strings.HasPrefix(member.Default, "constant.") {
557-
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(member.Default, "constant.")))
546+
} else if strings.HasPrefix(*member.Default, "constant.") {
547+
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(*member.Default, "constant.")))
558548
} else {
559-
return literal(member.Default)
549+
return literal(*member.Default)
560550
}
561551
case member.Type == "bool":
562-
if member.Default == "" {
552+
if member.Default == nil {
563553
return literal("0")
564-
} else if strings.HasPrefix(member.Default, "constant.") {
565-
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(member.Default, "constant.")))
566-
} else if member.Default == "true" {
554+
} else if strings.HasPrefix(*member.Default, "constant.") {
555+
return ref("WGPU_" + ConstantCase(strings.TrimPrefix(*member.Default, "constant.")))
556+
} else if *member.Default == "true" {
567557
return literal("1")
568-
} else if member.Default == "false" {
558+
} else if *member.Default == "false" {
569559
return literal("0")
570560
} else {
571-
return member.Default
561+
return *member.Default
572562
}
563+
case member.Default != nil:
564+
panic(fmt.Errorf("type %s should not have a default", member.Type))
565+
566+
// Cases that should not have member.Default
567+
case strings.HasPrefix(member.Type, "struct."):
568+
if member.Optional {
569+
return literal("NULL")
570+
} else {
571+
typ := strings.TrimPrefix(member.Type, "struct.")
572+
return ref("WGPU_" + ConstantCase(typ) + "_INIT")
573+
}
574+
case strings.HasPrefix(member.Type, "callback."):
575+
typ := strings.TrimPrefix(member.Type, "callback.")
576+
return ref("WGPU_" + ConstantCase(typ) + "_CALLBACK_INFO_INIT")
577+
case strings.HasPrefix(member.Type, "object."):
578+
return literal("NULL")
579+
case strings.HasPrefix(member.Type, "array<"):
580+
return literal("NULL")
581+
case member.Type == "out_string", member.Type == "string_with_default_empty", member.Type == "nullable_string":
582+
return ref("WGPU_STRING_VIEW_INIT")
573583
case member.Type == "c_void":
574584
return literal("NULL")
575585
default:
576586
panic("invalid prefix: " + member.Type + " in member " + member.Name)
577-
return ""
578587
}
579588
}

gen/yml.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ type ParameterType struct {
7474
Pointer PointerType `yaml:"pointer"`
7575
Optional bool `yaml:"optional"`
7676
Namespace string `yaml:"namespace"`
77-
Default string `yaml:"default"`
77+
Default *string `yaml:"default"`
7878
}
7979

8080
type Callback struct {

webgpu.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1667,7 +1667,7 @@ typedef struct WGPUBlendComponent {
16671667
typedef struct WGPUBufferBindingLayout {
16681668
WGPUChainedStruct const * nextInChain;
16691669
/**
1670-
* The `INIT` macro sets this to @ref WGPUBufferBindingType_Uniform.
1670+
* The `INIT` macro sets this to @ref WGPUBufferBindingType_BindingNotUsed.
16711671
*/
16721672
WGPUBufferBindingType type;
16731673
/**
@@ -1685,7 +1685,7 @@ typedef struct WGPUBufferBindingLayout {
16851685
*/
16861686
#define WGPU_BUFFER_BINDING_LAYOUT_INIT _wgpu_MAKE_INIT_STRUCT(WGPUBufferBindingLayout, { \
16871687
/*.nextInChain=*/NULL _wgpu_COMMA \
1688-
/*.type=*/WGPUBufferBindingType_Uniform _wgpu_COMMA \
1688+
/*.type=*/WGPUBufferBindingType_BindingNotUsed _wgpu_COMMA \
16891689
/*.hasDynamicOffset=*/0 _wgpu_COMMA \
16901690
/*.minBindingSize=*/0 _wgpu_COMMA \
16911691
})

webgpu.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,22 +1618,18 @@ structs:
16181618
doc: |
16191619
TODO
16201620
type: struct.buffer_binding_layout
1621-
default: constant.binding_not_used
16221621
- name: sampler
16231622
doc: |
16241623
TODO
16251624
type: struct.sampler_binding_layout
1626-
default: constant.binding_not_used
16271625
- name: texture
16281626
doc: |
16291627
TODO
16301628
type: struct.texture_binding_layout
1631-
default: constant.binding_not_used
16321629
- name: storage_texture
16331630
doc: |
16341631
TODO
16351632
type: struct.storage_texture_binding_layout
1636-
default: constant.binding_not_used
16371633
- name: blend_component
16381634
doc: |
16391635
TODO
@@ -1676,7 +1672,7 @@ structs:
16761672
doc: |
16771673
TODO
16781674
type: enum.buffer_binding_type
1679-
default: uniform
1675+
default: binding_not_used
16801676
- name: has_dynamic_offset
16811677
doc: |
16821678
TODO

0 commit comments

Comments
 (0)