Merge branch 'dev' of git.nbross.com:nielsbross/Shader-Compiler into dev
This commit is contained in:
@@ -77,7 +77,7 @@ Type_Variable :: struct {
|
||||
child_count : int;
|
||||
|
||||
//@Note(niels): For constant buffers
|
||||
buffer_index : u32;
|
||||
resource_index : u32;
|
||||
|
||||
uf_parent : Type_Variable_Handle;
|
||||
|
||||
@@ -198,6 +198,10 @@ Semantic_Checker :: struct {
|
||||
// type_variables : [..]Type_Variable;
|
||||
constraints : [..]Type_Constraint;
|
||||
|
||||
current_buffer_index : u32 = 0;
|
||||
current_sampler_index : u32 = 0;
|
||||
current_texture_index : u32 = 0;
|
||||
|
||||
result : Semantic_Check_Result;
|
||||
}
|
||||
|
||||
@@ -926,8 +930,6 @@ declare_struct :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Variab
|
||||
return declare_struct(checker, node, node.name);
|
||||
}
|
||||
|
||||
current_buffer_index : u32 = 0;
|
||||
|
||||
declare_properties :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Variable_Handle {
|
||||
name := ifx node.name.count == 0 then "properties" else node.name;
|
||||
|
||||
@@ -938,8 +940,8 @@ declare_properties :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Va
|
||||
var := h2tv(checker, type_var);
|
||||
var.type = .Properties;
|
||||
var.typename = "properties";
|
||||
var.buffer_index = current_buffer_index;
|
||||
current_buffer_index += 1;
|
||||
var.resource_index = checker.current_buffer_index;
|
||||
checker.current_buffer_index += 1;
|
||||
return type_var;
|
||||
}
|
||||
|
||||
@@ -947,8 +949,8 @@ declare_cbuffer :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Varia
|
||||
type_var := declare_struct(checker, node);
|
||||
var := h2tv(checker, type_var);
|
||||
var.type = .CBuffer;
|
||||
var.buffer_index = current_buffer_index;
|
||||
current_buffer_index += 1;
|
||||
var.resource_index = checker.current_buffer_index;
|
||||
checker.current_buffer_index += 1;
|
||||
array_add(*checker.result.constant_buffers, type_var);
|
||||
return type_var;
|
||||
}
|
||||
@@ -1252,6 +1254,17 @@ create_field :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Variable
|
||||
variable.name = node.name;
|
||||
typename : string;
|
||||
variable.type = get_type_from_identifier(checker, checker.current_scope, node, *typename);
|
||||
|
||||
if variable.kind == .Declaration && variable.type == .Sampler {
|
||||
variable.resource_index = checker.current_sampler_index;
|
||||
checker.current_sampler_index += 1;
|
||||
}
|
||||
|
||||
if variable.kind == .Declaration && variable.type == .Texture2D {
|
||||
variable.resource_index = checker.current_texture_index;
|
||||
checker.current_texture_index += 1;
|
||||
}
|
||||
|
||||
variable.typename = typename;
|
||||
variable.source_node = node;
|
||||
variable.scope = checker.current_scope;
|
||||
@@ -1761,7 +1774,9 @@ type_check :: (checker : *Semantic_Checker, root : *AST_Node) {
|
||||
}
|
||||
|
||||
check :: (checker : *Semantic_Checker, root : *AST_Node) -> Semantic_Check_Result {
|
||||
current_buffer_index = 0;
|
||||
checker.current_buffer_index = 0;
|
||||
checker.current_sampler_index = 0;
|
||||
checker.current_texture_index = 0;
|
||||
array_reserve(*checker.result.messages, 16);
|
||||
array_reserve(*checker.constraints, 1024);
|
||||
add_hlsl_builtins(checker);
|
||||
@@ -2037,6 +2052,7 @@ print_type_variable :: (builder : *String_Builder, variable : Type_Variable, che
|
||||
}
|
||||
case .Function; #through;
|
||||
case .Struct; #through;
|
||||
case .CBuffer; #through;
|
||||
case .Field; {
|
||||
if variable.struct_field_parent {
|
||||
print_to_builder(builder, "%.", variable.struct_field_parent.name);
|
||||
|
||||
Reference in New Issue
Block a user