summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHai Nguyen <chaoticbob@me.com>2021-08-11 16:23:03 -0400
committerHai Nguyen <chaoticbob@me.com>2021-08-11 16:23:03 -0400
commit272e050728de8d4a4ce9e7101c1244e6ff56e5b0 (patch)
tree5903ed73b4429989efe0df1b7a479f54e1078f2c
parent9e6a4b51ae6ce109bec5297f027ebb6788d5b240 (diff)
downloadSPIRV-Reflect-272e050728de8d4a4ce9e7101c1244e6ff56e5b0.tar.gz
Added SpvReflectPrv prefix to address issue #122
- Added SpvReflectPrv prefix to all internal struct types to stop and prevent collisions with common type names such as String, Node, Parser etc. - Did some light refactoring on layout function parameters. - Updated golden YAML for tests.
-rw-r--r--spirv_reflect.c491
-rw-r--r--tests/glsl/input_attachment.spv.yaml4
-rw-r--r--tests/glsl/texel_buffer.spv.yaml8
-rw-r--r--tests/hlsl/append_consume.spv.yaml4
-rw-r--r--tests/hlsl/array_of_structured_buffer.spv.yaml4
-rw-r--r--tests/hlsl/binding_array.spv.yaml4
-rw-r--r--tests/hlsl/binding_types.spv.yaml76
-rw-r--r--tests/hlsl/counter_buffers.spv.yaml4
-rw-r--r--tests/hlsl/structuredbuffer.spv.yaml2
-rw-r--r--tests/multi_entrypoint/multi_entrypoint.spv.yaml4
-rw-r--r--tests/raytrace/rayquery_equal.cs.spv.yaml4
-rw-r--r--tests/raytrace/rayquery_init_rahit.spv.yaml2
-rw-r--r--tests/raytrace/rayquery_init_rcall.spv.yaml2
-rw-r--r--tests/raytrace/rayquery_init_rchit.spv.yaml2
-rw-r--r--tests/raytrace/rayquery_init_rgen.spv.yaml2
-rw-r--r--tests/raytrace/rayquery_init_rmiss.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.khr.closesthit.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.anyhit.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.callable.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.closesthit.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.enum.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.intersection.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.library.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.miss.spv.yaml2
-rw-r--r--tests/raytrace/raytracing.nv.raygen.spv.yaml2
-rw-r--r--tests/spirv15/VertexShader.spv.yaml4
26 files changed, 337 insertions, 300 deletions
diff --git a/spirv_reflect.c b/spirv_reflect.c
index 82fc6fa..1c94a2e 100644
--- a/spirv_reflect.c
+++ b/spirv_reflect.c
@@ -76,150 +76,154 @@ enum {
// clang-format on
// clang-format off
-typedef struct ArrayTraits {
- uint32_t element_type_id;
- uint32_t length_id;
-} ArrayTraits;
+typedef struct SpvReflectPrvArrayTraits {
+ uint32_t element_type_id;
+ uint32_t length_id;
+} SpvReflectPrvArrayTraits;
// clang-format on
// clang-format off
-typedef struct ImageTraits {
- uint32_t sampled_type_id;
- SpvDim dim;
- uint32_t depth;
- uint32_t arrayed;
- uint32_t ms;
- uint32_t sampled;
- SpvImageFormat image_format;
-} ImageTraits;
+typedef struct SpvReflectPrvImageTraits {
+ uint32_t sampled_type_id;
+ SpvDim dim;
+ uint32_t depth;
+ uint32_t arrayed;
+ uint32_t ms;
+ uint32_t sampled;
+ SpvImageFormat image_format;
+} SpvReflectPrvImageTraits;
// clang-format on
// clang-format off
-typedef struct NumberDecoration {
- uint32_t word_offset;
- uint32_t value;
-} NumberDecoration;
+typedef struct SpvReflectPrvNumberDecoration {
+ uint32_t word_offset;
+ uint32_t value;
+} SpvReflectPrvNumberDecoration;
// clang-format on
// clang-format off
-typedef struct StringDecoration {
- uint32_t word_offset;
- const char* value;
-} StringDecoration;
+typedef struct SpvReflectPrvStringDecoration {
+ uint32_t word_offset;
+ const char* value;
+} SpvReflectPrvStringDecoration;
// clang-format on
// clang-format off
-typedef struct Decorations {
- bool is_block;
- bool is_buffer_block;
- bool is_row_major;
- bool is_column_major;
- bool is_built_in;
- bool is_noperspective;
- bool is_flat;
- bool is_non_writable;
- NumberDecoration set;
- NumberDecoration binding;
- NumberDecoration input_attachment_index;
- NumberDecoration location;
- NumberDecoration offset;
- NumberDecoration uav_counter_buffer;
- StringDecoration semantic;
- uint32_t array_stride;
- uint32_t matrix_stride;
- SpvBuiltIn built_in;
-} Decorations;
+typedef struct SpvReflectPrvDecorations {
+ bool is_block;
+ bool is_buffer_block;
+ bool is_row_major;
+ bool is_column_major;
+ bool is_built_in;
+ bool is_noperspective;
+ bool is_flat;
+ bool is_non_writable;
+ SpvReflectPrvNumberDecoration set;
+ SpvReflectPrvNumberDecoration binding;
+ SpvReflectPrvNumberDecoration input_attachment_index;
+ SpvReflectPrvNumberDecoration location;
+ SpvReflectPrvNumberDecoration offset;
+ SpvReflectPrvNumberDecoration uav_counter_buffer;
+ SpvReflectPrvStringDecoration semantic;
+ uint32_t array_stride;
+ uint32_t matrix_stride;
+ SpvBuiltIn built_in;
+} SpvReflectPrvDecorations;
// clang-format on
// clang-format off
-typedef struct Node {
- uint32_t result_id;
- SpvOp op;
- uint32_t result_type_id;
- uint32_t type_id;
- SpvStorageClass storage_class;
- uint32_t word_offset;
- uint32_t word_count;
- bool is_type;
-
- ArrayTraits array_traits;
- ImageTraits image_traits;
- uint32_t image_type_id;
-
- const char* name;
- Decorations decorations;
- uint32_t member_count;
- const char** member_names;
- Decorations* member_decorations;
-} Node;
+typedef struct SpvReflectPrvNode {
+ uint32_t result_id;
+ SpvOp op;
+ uint32_t result_type_id;
+ uint32_t type_id;
+ SpvStorageClass storage_class;
+ uint32_t word_offset;
+ uint32_t word_count;
+ bool is_type;
+
+ SpvReflectPrvArrayTraits array_traits;
+ SpvReflectPrvImageTraits image_traits;
+ uint32_t image_type_id;
+
+ const char* name;
+ SpvReflectPrvDecorations decorations;
+ uint32_t member_count;
+ const char** member_names;
+ SpvReflectPrvDecorations* member_decorations;
+} SpvReflectPrvNode;
// clang-format on
// clang-format off
-typedef struct String {
- uint32_t result_id;
- const char* string;
-} String;
+typedef struct SpvReflectPrvString {
+ uint32_t result_id;
+ const char* string;
+} SpvReflectPrvString;
// clang-format on
// clang-format off
-typedef struct Function {
- uint32_t id;
- uint32_t callee_count;
- uint32_t* callees;
- struct Function** callee_ptrs;
- uint32_t accessed_ptr_count;
- uint32_t* accessed_ptrs;
-} Function;
+typedef struct SpvReflectPrvFunction {
+ uint32_t id;
+ uint32_t callee_count;
+ uint32_t* callees;
+ struct SpvReflectPrvFunction** callee_ptrs;
+ uint32_t accessed_ptr_count;
+ uint32_t* accessed_ptrs;
+} SpvReflectPrvFunction;
// clang-format on
// clang-format off
-typedef struct AccessChain {
- uint32_t result_id;
- uint32_t result_type_id;
+typedef struct SpvReflectPrvAccessChain {
+ uint32_t result_id;
+ uint32_t result_type_id;
//
// Pointing to the base of a composite object.
// Generally the id of descriptor block variable
- uint32_t base_id;
+ uint32_t base_id;
//
// From spec:
// The first index in Indexes will select the
// top-level member/element/component/element
// of the base composite
- uint32_t index_count;
- uint32_t* indexes;
-} AccessChain;
+ uint32_t index_count;
+ uint32_t* indexes;
+} SpvReflectPrvAccessChain;
// clang-format on
// clang-format off
-typedef struct Parser {
- size_t spirv_word_count;
- uint32_t* spirv_code;
- uint32_t string_count;
- String* strings;
- SpvSourceLanguage source_language;
- uint32_t source_language_version;
- uint32_t source_file_id;
- const char* source_embedded;
- size_t node_count;
- Node* nodes;
- uint32_t entry_point_count;
- uint32_t function_count;
- Function* functions;
- uint32_t access_chain_count;
- AccessChain* access_chains;
-
- uint32_t type_count;
- uint32_t descriptor_count;
- uint32_t push_constant_count;
-} Parser;
+typedef struct SpvReflectPrvParser {
+ size_t spirv_word_count;
+ uint32_t* spirv_code;
+ uint32_t string_count;
+ SpvReflectPrvString* strings;
+ SpvSourceLanguage source_language;
+ uint32_t source_language_version;
+ uint32_t source_file_id;
+ const char* source_embedded;
+ size_t node_count;
+ SpvReflectPrvNode* nodes;
+ uint32_t entry_point_count;
+ uint32_t function_count;
+ SpvReflectPrvFunction* functions;
+ uint32_t access_chain_count;
+ SpvReflectPrvAccessChain* access_chains;
+
+ uint32_t type_count;
+ uint32_t descriptor_count;
+ uint32_t push_constant_count;
+} SpvReflectPrvParser;
// clang-format on
-static uint32_t Max(uint32_t a, uint32_t b)
+static uint32_t Max(
+ uint32_t a,
+ uint32_t b)
{
return a > b ? a : b;
}
-static uint32_t RoundUp(uint32_t value, uint32_t multiple)
+static uint32_t RoundUp(
+ uint32_t value,
+ uint32_t multiple)
{
assert(multiple && ((multiple & (multiple - 1)) == 0));
return (value + multiple - 1) & ~(multiple - 1);
@@ -239,7 +243,9 @@ static uint32_t RoundUp(uint32_t value, uint32_t multiple)
} \
}
-static int SortCompareUint32(const void* a, const void* b)
+static int SortCompareUint32(
+ const void* a,
+ const void* b)
{
const uint32_t* p_a = (const uint32_t*)a;
const uint32_t* p_b = (const uint32_t*)b;
@@ -269,7 +275,10 @@ static size_t DedupSortedUint32(uint32_t* arr, size_t size)
return dedup_idx+1;
}
-static bool SearchSortedUint32(const uint32_t* arr, size_t size, uint32_t target)
+static bool SearchSortedUint32(
+ const uint32_t* arr,
+ size_t size,
+ uint32_t target)
{
size_t lo = 0;
size_t hi = size;
@@ -338,7 +347,9 @@ static SpvReflectResult IntersectSortedUint32(
}
-static bool InRange(const Parser* p_parser, uint32_t index)
+static bool InRange(
+ const SpvReflectPrvParser* p_parser,
+ uint32_t index)
{
bool in_range = false;
if (IsNotNull(p_parser)) {
@@ -347,7 +358,10 @@ static bool InRange(const Parser* p_parser, uint32_t index)
return in_range;
}
-static SpvReflectResult ReadU32(Parser* p_parser, uint32_t word_offset, uint32_t* p_value)
+static SpvReflectResult ReadU32(
+ SpvReflectPrvParser* p_parser,
+ uint32_t word_offset,
+ uint32_t* p_value)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->spirv_code));
@@ -396,12 +410,12 @@ static SpvReflectResult ReadU32(Parser* p_parser, uint32_t word_offset, uint32_t
}
static SpvReflectResult ReadStr(
- Parser* p_parser,
- uint32_t word_offset,
- uint32_t word_index,
- uint32_t word_count,
- uint32_t* p_buf_size,
- char* p_buf
+ SpvReflectPrvParser* p_parser,
+ uint32_t word_offset,
+ uint32_t word_index,
+ uint32_t word_count,
+ uint32_t* p_buf_size,
+ char* p_buf
)
{
uint32_t limit = (word_offset + word_count);
@@ -442,7 +456,7 @@ static SpvReflectResult ReadStr(
return result;
}
-static SpvReflectDecorationFlags ApplyDecorations(const Decorations* p_decoration_fields)
+static SpvReflectDecorationFlags ApplyDecorations(const SpvReflectPrvDecorations* p_decoration_fields)
{
SpvReflectDecorationFlags decorations = SPV_REFLECT_DECORATION_NONE;
if (p_decoration_fields->is_block) {
@@ -482,11 +496,13 @@ static void ApplyArrayTraits(const SpvReflectTypeDescription* p_type, SpvReflect
memcpy(p_array_traits, &p_type->traits.array, sizeof(p_type->traits.array));
}
-static Node* FindNode(Parser* p_parser, uint32_t result_id)
+static SpvReflectPrvNode* FindNode(
+ SpvReflectPrvParser* p_parser,
+ uint32_t result_id)
{
- Node* p_node = NULL;
+ SpvReflectPrvNode* p_node = NULL;
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_elem = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_elem = &(p_parser->nodes[i]);
if (p_elem->result_id == result_id) {
p_node = p_elem;
break;
@@ -508,7 +524,10 @@ static SpvReflectTypeDescription* FindType(SpvReflectShaderModule* p_module, uin
return p_type;
}
-static SpvReflectResult CreateParser(size_t size, void* p_code, Parser* p_parser)
+static SpvReflectResult CreateParser(
+ size_t size,
+ void* p_code,
+ SpvReflectPrvParser* p_parser)
{
if (p_code == NULL) {
return SPV_REFLECT_RESULT_ERROR_NULL_POINTER;
@@ -531,12 +550,12 @@ static SpvReflectResult CreateParser(size_t size, void* p_code, Parser* p_parser
return SPV_REFLECT_RESULT_SUCCESS;
}
-static void DestroyParser(Parser* p_parser)
+static void DestroyParser(SpvReflectPrvParser* p_parser)
{
if (!IsNull(p_parser->nodes)) {
// Free nodes
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (IsNotNull(p_node->member_names)) {
SafeFree(p_node->member_names);
}
@@ -566,7 +585,7 @@ static void DestroyParser(Parser* p_parser)
}
}
-static SpvReflectResult ParseNodes(Parser* p_parser)
+static SpvReflectResult ParseNodes(SpvReflectPrvParser* p_parser)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->spirv_code));
@@ -596,7 +615,7 @@ static SpvReflectResult ParseNodes(Parser* p_parser)
// Allocate nodes
p_parser->node_count = node_count;
- p_parser->nodes = (Node*)calloc(p_parser->node_count, sizeof(*(p_parser->nodes)));
+ p_parser->nodes = (SpvReflectPrvNode*)calloc(p_parser->node_count, sizeof(*(p_parser->nodes)));
if (IsNull(p_parser->nodes)) {
return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
}
@@ -620,7 +639,7 @@ static SpvReflectResult ParseNodes(Parser* p_parser)
// Allocate access chain
if (p_parser->access_chain_count > 0) {
- p_parser->access_chains = (AccessChain*)calloc(p_parser->access_chain_count, sizeof(*(p_parser->access_chains)));
+ p_parser->access_chains = (SpvReflectPrvAccessChain*)calloc(p_parser->access_chain_count, sizeof(*(p_parser->access_chains)));
if (IsNull(p_parser->access_chains)) {
return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
}
@@ -635,7 +654,7 @@ static SpvReflectResult ParseNodes(Parser* p_parser)
SpvOp op = (SpvOp)(word & 0xFFFF);
uint32_t node_word_count = (word >> 16) & 0xFFFF;
- Node* p_node = &(p_parser->nodes[node_index]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[node_index]);
p_node->op = op;
p_node->word_offset = spirv_word_index;
p_node->word_count = node_word_count;
@@ -829,7 +848,7 @@ static SpvReflectResult ParseNodes(Parser* p_parser)
case SpvOpAccessChain:
{
- AccessChain* p_access_chain = &(p_parser->access_chains[access_chain_index]);
+ SpvReflectPrvAccessChain* p_access_chain = &(p_parser->access_chains[access_chain_index]);
CHECKED_READU32(p_parser, p_node->word_offset + 1, p_access_chain->result_type_id);
CHECKED_READU32(p_parser, p_node->word_offset + 2, p_access_chain->result_id);
CHECKED_READU32(p_parser, p_node->word_offset + 3, p_access_chain->base_id);
@@ -849,7 +868,7 @@ static SpvReflectResult ParseNodes(Parser* p_parser)
uint32_t index_id = 0;
CHECKED_READU32(p_parser, p_node->word_offset + SPIRV_ACCESS_CHAIN_INDEX_OFFSET + index_index, index_id);
// Find OpConstant node that contains index value
- Node* p_index_value_node = FindNode(p_parser, index_id);
+ SpvReflectPrvNode* p_index_value_node = FindNode(p_parser, index_id);
if ((p_index_value_node != NULL) && (p_index_value_node->op == SpvOpConstant)) {
// Read index value
uint32_t index_value = UINT32_MAX;
@@ -878,7 +897,7 @@ static SpvReflectResult ParseNodes(Parser* p_parser)
case SpvOpLabel:
{
if (function_node != (uint32_t)INVALID_VALUE) {
- Node* p_func_node = &(p_parser->nodes[function_node]);
+ SpvReflectPrvNode* p_func_node = &(p_parser->nodes[function_node]);
CHECKED_READU32(p_parser, p_func_node->word_offset + 2, p_func_node->result_id);
++(p_parser->function_count);
}
@@ -902,7 +921,7 @@ static SpvReflectResult ParseNodes(Parser* p_parser)
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseStrings(Parser* p_parser)
+static SpvReflectResult ParseStrings(SpvReflectPrvParser* p_parser)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->spirv_code));
@@ -915,11 +934,11 @@ static SpvReflectResult ParseStrings(Parser* p_parser)
if (IsNotNull(p_parser) && IsNotNull(p_parser->spirv_code) && IsNotNull(p_parser->nodes)) {
// Allocate string storage
- p_parser->strings = (String*)calloc(p_parser->string_count, sizeof(*(p_parser->strings)));
+ p_parser->strings = (SpvReflectPrvString*)calloc(p_parser->string_count, sizeof(*(p_parser->strings)));
uint32_t string_index = 0;
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (p_node->op != SpvOpString) {
continue;
}
@@ -931,7 +950,7 @@ static SpvReflectResult ParseStrings(Parser* p_parser)
}
// Result id
- String* p_string = &(p_parser->strings[string_index]);
+ SpvReflectPrvString* p_string = &(p_parser->strings[string_index]);
CHECKED_READU32(p_parser, p_node->word_offset + 1, p_string->result_id);
// String
@@ -946,7 +965,7 @@ static SpvReflectResult ParseStrings(Parser* p_parser)
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseSource(Parser* p_parser, SpvReflectShaderModule* p_module)
+static SpvReflectResult ParseSource(SpvReflectPrvParser* p_parser, SpvReflectShaderModule* p_module)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->spirv_code));
@@ -955,7 +974,7 @@ static SpvReflectResult ParseSource(Parser* p_parser, SpvReflectShaderModule* p_
// Source file
if (IsNotNull(p_parser->strings)) {
for (uint32_t i = 0; i < p_parser->string_count; ++i) {
- String* p_string = &(p_parser->strings[i]);
+ SpvReflectPrvString* p_string = &(p_parser->strings[i]);
if (p_string->result_id == p_parser->source_file_id) {
p_module->source_file = p_string->string;
break;
@@ -986,7 +1005,11 @@ static SpvReflectResult ParseSource(Parser* p_parser, SpvReflectShaderModule* p_
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseFunction(Parser* p_parser, Node* p_func_node, Function* p_func, size_t first_label_index)
+static SpvReflectResult ParseFunction(
+ SpvReflectPrvParser* p_parser,
+ SpvReflectPrvNode* p_func_node,
+ SpvReflectPrvFunction* p_func,
+ size_t first_label_index)
{
p_func->id = p_func_node->result_id;
@@ -994,7 +1017,7 @@ static SpvReflectResult ParseFunction(Parser* p_parser, Node* p_func_node, Funct
p_func->accessed_ptr_count = 0;
for (size_t i = first_label_index; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (p_node->op == SpvOpFunctionEnd) {
break;
}
@@ -1044,7 +1067,7 @@ static SpvReflectResult ParseFunction(Parser* p_parser, Node* p_func_node, Funct
p_func->callee_count = 0;
p_func->accessed_ptr_count = 0;
for (size_t i = first_label_index; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (p_node->op == SpvOpFunctionEnd) {
break;
}
@@ -1107,14 +1130,16 @@ static SpvReflectResult ParseFunction(Parser* p_parser, Node* p_func_node, Funct
return SPV_REFLECT_RESULT_SUCCESS;
}
-static int SortCompareFunctions(const void* a, const void* b)
+static int SortCompareFunctions(
+ const void* a,
+ const void* b)
{
- const Function* af = (const Function*)a;
- const Function* bf = (const Function*)b;
+ const SpvReflectPrvFunction* af = (const SpvReflectPrvFunction*)a;
+ const SpvReflectPrvFunction* bf = (const SpvReflectPrvFunction*)b;
return (int)af->id - (int)bf->id;
}
-static SpvReflectResult ParseFunctions(Parser* p_parser)
+static SpvReflectResult ParseFunctions(SpvReflectPrvParser* p_parser)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->spirv_code));
@@ -1125,15 +1150,15 @@ static SpvReflectResult ParseFunctions(Parser* p_parser)
return SPV_REFLECT_RESULT_SUCCESS;
}
- p_parser->functions = (Function*)calloc(p_parser->function_count,
- sizeof(*(p_parser->functions)));
+ p_parser->functions = (SpvReflectPrvFunction*)calloc(p_parser->function_count,
+ sizeof(*(p_parser->functions)));
if (IsNull(p_parser->functions)) {
return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
}
size_t function_index = 0;
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (p_node->op != SpvOpFunction) {
continue;
}
@@ -1155,7 +1180,7 @@ static SpvReflectResult ParseFunctions(Parser* p_parser)
continue;
}
- Function* p_function = &(p_parser->functions[function_index]);
+ SpvReflectPrvFunction* p_function = &(p_parser->functions[function_index]);
SpvReflectResult result = ParseFunction(p_parser, p_node, p_function, i);
if (result != SPV_REFLECT_RESULT_SUCCESS) {
@@ -1171,12 +1196,12 @@ static SpvReflectResult ParseFunctions(Parser* p_parser)
// Once they're sorted, link the functions with pointers to improve graph
// traversal efficiency
for (size_t i = 0; i < p_parser->function_count; ++i) {
- Function* p_func = &(p_parser->functions[i]);
+ SpvReflectPrvFunction* p_func = &(p_parser->functions[i]);
if (p_func->callee_count == 0) {
continue;
}
- p_func->callee_ptrs = (Function**)calloc(p_func->callee_count,
- sizeof(*(p_func->callee_ptrs)));
+ p_func->callee_ptrs = (SpvReflectPrvFunction**)calloc(p_func->callee_count,
+ sizeof(*(p_func->callee_ptrs)));
for (size_t j = 0, k = 0; j < p_func->callee_count; ++j) {
while (p_parser->functions[k].id != p_func->callees[j]) {
++k;
@@ -1193,7 +1218,7 @@ static SpvReflectResult ParseFunctions(Parser* p_parser)
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseMemberCounts(Parser* p_parser)
+static SpvReflectResult ParseMemberCounts(SpvReflectPrvParser* p_parser)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->spirv_code));
@@ -1201,7 +1226,7 @@ static SpvReflectResult ParseMemberCounts(Parser* p_parser)
if (IsNotNull(p_parser) && IsNotNull(p_parser->spirv_code) && IsNotNull(p_parser->nodes)) {
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if ((p_node->op != SpvOpMemberName) && (p_node->op != SpvOpMemberDecorate)) {
continue;
}
@@ -1210,7 +1235,7 @@ static SpvReflectResult ParseMemberCounts(Parser* p_parser)
uint32_t member_index = (uint32_t)INVALID_VALUE;
CHECKED_READU32(p_parser, p_node->word_offset + 1, target_id);
CHECKED_READU32(p_parser, p_node->word_offset + 2, member_index);
- Node* p_target_node = FindNode(p_parser, target_id);
+ SpvReflectPrvNode* p_target_node = FindNode(p_parser, target_id);
// Not all nodes get parsed, so FindNode returning NULL is expected.
if (IsNull(p_target_node)) {
continue;
@@ -1224,7 +1249,7 @@ static SpvReflectResult ParseMemberCounts(Parser* p_parser)
}
for (uint32_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (p_node->member_count == 0) {
continue;
}
@@ -1234,7 +1259,7 @@ static SpvReflectResult ParseMemberCounts(Parser* p_parser)
return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
}
- p_node->member_decorations = (Decorations*)calloc(p_node->member_count, sizeof(*(p_node->member_decorations)));
+ p_node->member_decorations = (SpvReflectPrvDecorations*)calloc(p_node->member_count, sizeof(*(p_node->member_decorations)));
if (IsNull(p_node->member_decorations)) {
return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
}
@@ -1243,7 +1268,7 @@ static SpvReflectResult ParseMemberCounts(Parser* p_parser)
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseNames(Parser* p_parser)
+static SpvReflectResult ParseNames(SpvReflectPrvParser* p_parser)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->spirv_code));
@@ -1251,14 +1276,14 @@ static SpvReflectResult ParseNames(Parser* p_parser)
if (IsNotNull(p_parser) && IsNotNull(p_parser->spirv_code) && IsNotNull(p_parser->nodes)) {
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if ((p_node->op != SpvOpName) && (p_node->op != SpvOpMemberName)) {
continue;
}
uint32_t target_id = 0;
CHECKED_READU32(p_parser, p_node->word_offset + 1, target_id);
- Node* p_target_node = FindNode(p_parser, target_id);
+ SpvReflectPrvNode* p_target_node = FindNode(p_parser, target_id);
// Not all nodes get parsed, so FindNode returning NULL is expected.
if (IsNull(p_target_node)) {
continue;
@@ -1277,10 +1302,10 @@ static SpvReflectResult ParseNames(Parser* p_parser)
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseDecorations(Parser* p_parser)
+static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser)
{
for (uint32_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (((uint32_t)p_node->op != (uint32_t)SpvOpDecorate) &&
((uint32_t)p_node->op != (uint32_t)SpvOpMemberDecorate) &&
@@ -1337,12 +1362,12 @@ static SpvReflectResult ParseDecorations(Parser* p_parser)
// Find target target node
uint32_t target_id = 0;
CHECKED_READU32(p_parser, p_node->word_offset + 1, target_id);
- Node* p_target_node = FindNode(p_parser, target_id);
+ SpvReflectPrvNode* p_target_node = FindNode(p_parser, target_id);
if (IsNull(p_target_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
// Get decorations
- Decorations* p_target_decorations = &(p_target_node->decorations);
+ SpvReflectPrvDecorations* p_target_decorations = &(p_target_node->decorations);
// Update pointer if this is a member member decoration
if (p_node->op == SpvOpMemberDecorate) {
uint32_t member_index = (uint32_t)INVALID_VALUE;
@@ -1485,11 +1510,11 @@ static SpvReflectResult EnumerateAllUniforms(
}
static SpvReflectResult ParseType(
- Parser* p_parser,
- Node* p_node,
- Decorations* p_struct_member_decorations,
- SpvReflectShaderModule* p_module,
- SpvReflectTypeDescription* p_type
+ SpvReflectPrvParser* p_parser,
+ SpvReflectPrvNode* p_node,
+ SpvReflectPrvDecorations* p_struct_member_decorations,
+ SpvReflectShaderModule* p_module,
+ SpvReflectTypeDescription* p_type
)
{
SpvReflectResult result = SPV_REFLECT_RESULT_SUCCESS;
@@ -1552,7 +1577,7 @@ static SpvReflectResult ParseType(
IF_READU32(result, p_parser, p_node->word_offset + 2, component_type_id);
IF_READU32(result, p_parser, p_node->word_offset + 3, p_type->traits.numeric.vector.component_count);
// Parse component type
- Node* p_next_node = FindNode(p_parser, component_type_id);
+ SpvReflectPrvNode* p_next_node = FindNode(p_parser, component_type_id);
if (IsNotNull(p_next_node)) {
result = ParseType(p_parser, p_next_node, NULL, p_module, p_type);
}
@@ -1568,7 +1593,7 @@ static SpvReflectResult ParseType(
uint32_t column_type_id = (uint32_t)INVALID_VALUE;
IF_READU32(result, p_parser, p_node->word_offset + 2, column_type_id);
IF_READU32(result, p_parser, p_node->word_offset + 3, p_type->traits.numeric.matrix.column_count);
- Node* p_next_node = FindNode(p_parser, column_type_id);
+ SpvReflectPrvNode* p_next_node = FindNode(p_parser, column_type_id);
if (IsNotNull(p_next_node)) {
result = ParseType(p_parser, p_next_node, NULL, p_module, p_type);
}
@@ -1589,7 +1614,7 @@ static SpvReflectResult ParseType(
p_type->type_flags |= SPV_REFLECT_TYPE_FLAG_EXTERNAL_IMAGE;
uint32_t sampled_type_id = (uint32_t)INVALID_VALUE;
IF_READU32(result, p_parser, p_node->word_offset + 2, sampled_type_id);
- Node* p_next_node = FindNode(p_parser, sampled_type_id);
+ SpvReflectPrvNode* p_next_node = FindNode(p_parser, sampled_type_id);
if (IsNotNull(p_next_node)) {
result = ParseType(p_parser, p_next_node, NULL, p_module, p_type);
}
@@ -1614,7 +1639,7 @@ static SpvReflectResult ParseType(
p_type->type_flags |= SPV_REFLECT_TYPE_FLAG_EXTERNAL_SAMPLED_IMAGE;
uint32_t image_type_id = (uint32_t)INVALID_VALUE;
IF_READU32(result, p_parser, p_node->word_offset + 2, image_type_id);
- Node* p_next_node = FindNode(p_parser, image_type_id);
+ SpvReflectPrvNode* p_next_node = FindNode(p_parser, image_type_id);
if (IsNotNull(p_next_node)) {
result = ParseType(p_parser, p_next_node, NULL, p_module, p_type);
}
@@ -1636,7 +1661,7 @@ static SpvReflectResult ParseType(
// OpMemberDecorate, even if the array is apart of a struct.
p_type->traits.array.stride = p_node->decorations.array_stride;
// Get length for current dimension
- Node* p_length_node = FindNode(p_parser, length_id);
+ SpvReflectPrvNode* p_length_node = FindNode(p_parser, length_id);
if (IsNotNull(p_length_node)) {
if (p_length_node->op == SpvOpSpecConstant ||
p_length_node->op == SpvOpSpecConstantOp) {
@@ -1655,7 +1680,7 @@ static SpvReflectResult ParseType(
}
}
// Parse next dimension or element type
- Node* p_next_node = FindNode(p_parser, element_type_id);
+ SpvReflectPrvNode* p_next_node = FindNode(p_parser, element_type_id);
if (IsNotNull(p_next_node)) {
result = ParseType(p_parser, p_next_node, NULL, p_module, p_type);
}
@@ -1673,7 +1698,7 @@ static SpvReflectResult ParseType(
uint32_t element_type_id = (uint32_t)INVALID_VALUE;
IF_READU32(result, p_parser, p_node->word_offset + 2, element_type_id);
// Parse next dimension or element type
- Node* p_next_node = FindNode(p_parser, element_type_id);
+ SpvReflectPrvNode* p_next_node = FindNode(p_parser, element_type_id);
if (IsNotNull(p_next_node)) {
result = ParseType(p_parser, p_next_node, NULL, p_module, p_type);
}
@@ -1693,7 +1718,7 @@ static SpvReflectResult ParseType(
uint32_t member_id = (uint32_t)INVALID_VALUE;
IF_READU32(result, p_parser, p_node->word_offset + word_index, member_id);
// Find member node
- Node* p_member_node = FindNode(p_parser, member_id);
+ SpvReflectPrvNode* p_member_node = FindNode(p_parser, member_id);
if (IsNull(p_member_node)) {
result = SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
SPV_REFLECT_ASSERT(false);
@@ -1701,7 +1726,7 @@ static SpvReflectResult ParseType(
}
// Member decorations
- Decorations* p_member_decorations = &p_node->member_decorations[member_index];
+ SpvReflectPrvDecorations* p_member_decorations = &p_node->member_decorations[member_index];
assert(member_index < p_type->member_count);
// Parse member type
@@ -1726,7 +1751,7 @@ static SpvReflectResult ParseType(
uint32_t type_id = (uint32_t)INVALID_VALUE;
IF_READU32(result, p_parser, p_node->word_offset + 3, type_id);
// Parse type
- Node* p_next_node = FindNode(p_parser, type_id);
+ SpvReflectPrvNode* p_next_node = FindNode(p_parser, type_id);
if (IsNotNull(p_next_node)) {
result = ParseType(p_parser, p_next_node, NULL, p_module, p_type);
}
@@ -1755,7 +1780,9 @@ static SpvReflectResult ParseType(
return result;
}
-static SpvReflectResult ParseTypes(Parser* p_parser, SpvReflectShaderModule* p_module)
+static SpvReflectResult ParseTypes(
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module)
{
if (p_parser->type_count == 0) {
return SPV_REFLECT_RESULT_SUCCESS;
@@ -1778,7 +1805,7 @@ static SpvReflectResult ParseTypes(Parser* p_parser, SpvReflectShaderModule* p_m
size_t type_index = 0;
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (! p_node->is_type) {
continue;
}
@@ -1807,11 +1834,13 @@ static int SortCompareDescriptorBinding(const void* a, const void* b)
return value;
}
-static SpvReflectResult ParseDescriptorBindings(Parser* p_parser, SpvReflectShaderModule* p_module)
+static SpvReflectResult ParseDescriptorBindings(
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module)
{
p_module->descriptor_binding_count = 0;
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if ((p_node->op != SpvOpVariable) ||
((p_node->storage_class != SpvStorageClassUniform) &&
(p_node->storage_class != SpvStorageClassStorageBuffer) &&
@@ -1847,7 +1876,7 @@ static SpvReflectResult ParseDescriptorBindings(Parser* p_parser, SpvReflectShad
size_t descriptor_index = 0;
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if ((p_node->op != SpvOpVariable) ||
((p_node->storage_class != SpvStorageClassUniform) &&
(p_node->storage_class != SpvStorageClassStorageBuffer) &&
@@ -1869,7 +1898,7 @@ static SpvReflectResult ParseDescriptorBindings(Parser* p_parser, SpvReflectShad
if (p_type->op == SpvOpTypePointer) {
pointer_storage_class = p_type->storage_class;
// Find the type's node
- Node* p_type_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);
if (IsNull(p_type_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2097,7 +2126,7 @@ static SpvReflectResult ParseUAVCounterBindings(SpvReflectShaderModule* p_module
}
static SpvReflectResult ParseDescriptorBlockVariable(
- Parser* p_parser,
+ SpvReflectPrvParser* p_parser,
SpvReflectShaderModule* p_module,
SpvReflectTypeDescription* p_type,
SpvReflectBlockVariable* p_var
@@ -2112,7 +2141,7 @@ static SpvReflectResult ParseDescriptorBlockVariable(
return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;
}
- Node* p_type_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);
if (IsNull(p_type_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2176,12 +2205,12 @@ static SpvReflectResult ParseDescriptorBlockVariable(
}
static SpvReflectResult ParseDescriptorBlockVariableSizes(
- Parser* p_parser,
- SpvReflectShaderModule* p_module,
- bool is_parent_root,
- bool is_parent_aos,
- bool is_parent_rta,
- SpvReflectBlockVariable* p_var
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module,
+ bool is_parent_root,
+ bool is_parent_aos,
+ bool is_parent_rta,
+ SpvReflectBlockVariable* p_var
)
{
if (p_var->member_count == 0) {
@@ -2332,12 +2361,12 @@ static void MarkSelfAndAllMemberVarsAsUsed(SpvReflectBlockVariable* p_var)
}
static SpvReflectResult ParseDescriptorBlockVariableUsage(
- Parser* p_parser,
- SpvReflectShaderModule* p_module,
- AccessChain* p_access_chain,
- uint32_t index_index,
- SpvOp override_op_type,
- SpvReflectBlockVariable* p_var
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module,
+ SpvReflectPrvAccessChain* p_access_chain,
+ uint32_t index_index,
+ SpvOp override_op_type,
+ SpvReflectBlockVariable* p_var
)
{
(void)p_parser;
@@ -2362,7 +2391,7 @@ static SpvReflectResult ParseDescriptorBlockVariableUsage(
SpvReflectTypeDescription* p_type = p_var->type_description;
while ((p_type->op == SpvOpTypeArray) && (index_index < p_access_chain->index_count)) {
// Find the array element type id
- Node* p_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_node = FindNode(p_parser, p_type->id);
if (p_node == NULL) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2461,7 +2490,9 @@ static SpvReflectResult ParseDescriptorBlockVariableUsage(
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseDescriptorBlocks(Parser* p_parser, SpvReflectShaderModule* p_module)
+static SpvReflectResult ParseDescriptorBlocks(
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module)
{
if (p_module->descriptor_binding_count == 0) {
return SPV_REFLECT_RESULT_SUCCESS;
@@ -2485,7 +2516,7 @@ static SpvReflectResult ParseDescriptorBlocks(Parser* p_parser, SpvReflectShader
}
for (uint32_t access_chain_index = 0; access_chain_index < p_parser->access_chain_count; ++access_chain_index) {
- AccessChain* p_access_chain = &(p_parser->access_chains[access_chain_index]);
+ SpvReflectPrvAccessChain* p_access_chain = &(p_parser->access_chains[access_chain_index]);
// Skip any access chains that aren't touching this descriptor block
if (p_descriptor->spirv_id != p_access_chain->base_id) {
continue;
@@ -2601,15 +2632,15 @@ static SpvReflectResult ParseFormat(
}
static SpvReflectResult ParseInterfaceVariable(
- Parser* p_parser,
- const Decorations* p_type_node_decorations,
- SpvReflectShaderModule* p_module,
- SpvReflectTypeDescription* p_type,
- SpvReflectInterfaceVariable* p_var,
- bool* p_has_built_in
+ SpvReflectPrvParser* p_parser,
+ const SpvReflectPrvDecorations* p_type_node_decorations,
+ SpvReflectShaderModule* p_module,
+ SpvReflectTypeDescription* p_type,
+ SpvReflectInterfaceVariable* p_var,
+ bool* p_has_built_in
)
{
- Node* p_type_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);
if (IsNull(p_type_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2622,7 +2653,7 @@ static SpvReflectResult ParseInterfaceVariable(
}
for (uint32_t member_index = 0; member_index < p_type_node->member_count; ++member_index) {
- Decorations* p_member_decorations = &p_type_node->member_decorations[member_index];
+ SpvReflectPrvDecorations* p_member_decorations = &p_type_node->member_decorations[member_index];
SpvReflectTypeDescription* p_member_type = &p_type->members[member_index];
SpvReflectInterfaceVariable* p_member_var = &p_var->members[member_index];
SpvReflectResult result = ParseInterfaceVariable(p_parser, p_member_decorations, p_module, p_member_type, p_member_var, p_has_built_in);
@@ -2658,7 +2689,7 @@ static SpvReflectResult ParseInterfaceVariable(
}
static SpvReflectResult ParseInterfaceVariables(
- Parser* p_parser,
+ SpvReflectPrvParser* p_parser,
SpvReflectShaderModule* p_module,
SpvReflectEntryPoint* p_entry,
uint32_t interface_variable_count,
@@ -2674,7 +2705,7 @@ static SpvReflectResult ParseInterfaceVariables(
p_entry->output_variable_count = 0;
for (size_t i = 0; i < interface_variable_count; ++i) {
uint32_t var_result_id = *(p_interface_variable_ids + i);
- Node* p_node = FindNode(p_parser, var_result_id);
+ SpvReflectPrvNode* p_node = FindNode(p_parser, var_result_id);
if (IsNull(p_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2712,7 +2743,7 @@ static SpvReflectResult ParseInterfaceVariables(
size_t output_index = 0;
for (size_t i = 0; i < interface_variable_count; ++i) {
uint32_t var_result_id = *(p_interface_variable_ids + i);
- Node* p_node = FindNode(p_parser, var_result_id);
+ SpvReflectPrvNode* p_node = FindNode(p_parser, var_result_id);
if (IsNull(p_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2724,7 +2755,7 @@ static SpvReflectResult ParseInterfaceVariables(
// If the type is a pointer, resolve it
if (p_type->op == SpvOpTypePointer) {
// Find the type's node
- Node* p_type_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);
if (IsNull(p_type_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2735,7 +2766,7 @@ static SpvReflectResult ParseInterfaceVariables(
}
}
- Node* p_type_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);
if (IsNull(p_type_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -2816,11 +2847,11 @@ static SpvReflectResult EnumerateAllPushConstants(
}
static SpvReflectResult TraverseCallGraph(
- Parser* p_parser,
- Function* p_func,
- size_t* p_func_count,
- uint32_t* p_func_ids,
- uint32_t depth
+ SpvReflectPrvParser* p_parser,
+ SpvReflectPrvFunction* p_func,
+ size_t* p_func_count,
+ uint32_t* p_func_ids,
+ uint32_t depth
)
{
if (depth > p_parser->function_count) {
@@ -2845,7 +2876,7 @@ static SpvReflectResult TraverseCallGraph(
}
static SpvReflectResult ParseStaticallyUsedResources(
- Parser* p_parser,
+ SpvReflectPrvParser* p_parser,
SpvReflectShaderModule* p_module,
SpvReflectEntryPoint* p_entry,
size_t uniform_count,
@@ -2855,7 +2886,7 @@ static SpvReflectResult ParseStaticallyUsedResources(
)
{
// Find function with the right id
- Function* p_func = NULL;
+ SpvReflectPrvFunction* p_func = NULL;
for (size_t i = 0; i < p_parser->function_count; ++i) {
if (p_parser->functions[i].id == p_entry->id) {
p_func = &(p_parser->functions[i]);
@@ -2989,7 +3020,9 @@ static SpvReflectResult ParseStaticallyUsedResources(
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseEntryPoints(Parser* p_parser, SpvReflectShaderModule* p_module)
+static SpvReflectResult ParseEntryPoints(
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module)
{
if (p_parser->entry_point_count == 0) {
return SPV_REFLECT_RESULT_SUCCESS;
@@ -3018,7 +3051,7 @@ static SpvReflectResult ParseEntryPoints(Parser* p_parser, SpvReflectShaderModul
size_t entry_point_index = 0;
for (size_t i = 0; entry_point_index < p_parser->entry_point_count && i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if (p_node->op != SpvOpEntryPoint) {
continue;
}
@@ -3103,7 +3136,9 @@ static SpvReflectResult ParseEntryPoints(Parser* p_parser, SpvReflectShaderModul
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParseExecutionModes(Parser* p_parser, SpvReflectShaderModule* p_module)
+static SpvReflectResult ParseExecutionModes(
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module)
{
assert(IsNotNull(p_parser));
assert(IsNotNull(p_parser->nodes));
@@ -3111,7 +3146,7 @@ static SpvReflectResult ParseExecutionModes(Parser* p_parser, SpvReflectShaderMo
if (IsNotNull(p_parser) && IsNotNull(p_parser->spirv_code) && IsNotNull(p_parser->nodes)) {
for (size_t node_idx = 0; node_idx < p_parser->node_count; ++node_idx) {
- Node* p_node = &(p_parser->nodes[node_idx]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[node_idx]);
if (p_node->op != SpvOpExecutionMode) {
continue;
}
@@ -3201,10 +3236,12 @@ static SpvReflectResult ParseExecutionModes(Parser* p_parser, SpvReflectShaderMo
return SPV_REFLECT_RESULT_SUCCESS;
}
-static SpvReflectResult ParsePushConstantBlocks(Parser* p_parser, SpvReflectShaderModule* p_module)
+static SpvReflectResult ParsePushConstantBlocks(
+ SpvReflectPrvParser* p_parser,
+ SpvReflectShaderModule* p_module)
{
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if ((p_node->op != SpvOpVariable) || (p_node->storage_class != SpvStorageClassPushConstant)) {
continue;
}
@@ -3223,7 +3260,7 @@ static SpvReflectResult ParsePushConstantBlocks(Parser* p_parser, SpvReflectShad
uint32_t push_constant_index = 0;
for (size_t i = 0; i < p_parser->node_count; ++i) {
- Node* p_node = &(p_parser->nodes[i]);
+ SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);
if ((p_node->op != SpvOpVariable) || (p_node->storage_class != SpvStorageClassPushConstant)) {
continue;
}
@@ -3235,7 +3272,7 @@ static SpvReflectResult ParsePushConstantBlocks(Parser* p_parser, SpvReflectShad
// If the type is a pointer, resolve it
if (p_type->op == SpvOpTypePointer) {
// Find the type's node
- Node* p_type_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);
if (IsNull(p_type_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -3246,7 +3283,7 @@ static SpvReflectResult ParsePushConstantBlocks(Parser* p_parser, SpvReflectShad
}
}
- Node* p_type_node = FindNode(p_parser, p_type->id);
+ SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);
if (IsNull(p_type_node)) {
return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;
}
@@ -3499,7 +3536,7 @@ SpvReflectResult spvReflectCreateShaderModule(
}
memcpy(p_module->_internal->spirv_code, p_code, size);
- Parser parser = { 0 };
+ SpvReflectPrvParser parser = { 0 };
SpvReflectResult result = CreateParser(p_module->_internal->spirv_size,
p_module->_internal->spirv_code,
&parser);
diff --git a/tests/glsl/input_attachment.spv.yaml b/tests/glsl/input_attachment.spv.yaml
index 8df9628..1194069 100644
--- a/tests/glsl/input_attachment.spv.yaml
+++ b/tests/glsl/input_attachment.spv.yaml
@@ -7,11 +7,11 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 6, depth: 0, arrayed: 0, ms: 0, sampled: 2, image_format: 0 } # dim=SubpassData image_format=Unknown
diff --git a/tests/glsl/texel_buffer.spv.yaml b/tests/glsl/texel_buffer.spv.yaml
index bf13000..63db59d 100644
--- a/tests/glsl/texel_buffer.spv.yaml
+++ b/tests/glsl/texel_buffer.spv.yaml
@@ -7,11 +7,11 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00050000 # EXTERNAL_SAMPLED_IMAGE EXTERNAL_IMAGE
+ type_flags: 0x00050004 # EXTERNAL_SAMPLED_IMAGE EXTERNAL_IMAGE INT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 1 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 5, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=Buffer image_format=Unknown
@@ -24,11 +24,11 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00050000 # EXTERNAL_SAMPLED_IMAGE EXTERNAL_IMAGE
+ type_flags: 0x00050008 # EXTERNAL_SAMPLED_IMAGE EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 5, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=Buffer image_format=Unknown
diff --git a/tests/hlsl/append_consume.spv.yaml b/tests/hlsl/append_consume.spv.yaml
index 4f6bba8..9c848c2 100644
--- a/tests/hlsl/append_consume.spv.yaml
+++ b/tests/hlsl/append_consume.spv.yaml
@@ -24,7 +24,7 @@ all_type_descriptions:
type_name: "Data"
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
+ type_flags: 0x30080000 # ARRAY STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -129,7 +129,7 @@ all_type_descriptions:
type_name: "Data"
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
+ type_flags: 0x30080000 # ARRAY STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000000 # NONE
traits:
numeric:
diff --git a/tests/hlsl/array_of_structured_buffer.spv.yaml b/tests/hlsl/array_of_structured_buffer.spv.yaml
index 745d855..4e90a2d 100644
--- a/tests/hlsl/array_of_structured_buffer.spv.yaml
+++ b/tests/hlsl/array_of_structured_buffer.spv.yaml
@@ -7,7 +7,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000108 # VECTOR FLOAT
+ type_flags: 0x20000108 # ARRAY VECTOR FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -42,7 +42,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000108 # VECTOR FLOAT
+ type_flags: 0x20000108 # ARRAY VECTOR FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
diff --git a/tests/hlsl/binding_array.spv.yaml b/tests/hlsl/binding_array.spv.yaml
index 13ba57d..7b1ed00 100644
--- a/tests/hlsl/binding_array.spv.yaml
+++ b/tests/hlsl/binding_array.spv.yaml
@@ -24,11 +24,11 @@ all_type_descriptions:
type_name: "type.2d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x20010000 # ARRAY EXTERNAL_IMAGE
+ type_flags: 0x20010008 # ARRAY EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
diff --git a/tests/hlsl/binding_types.spv.yaml b/tests/hlsl/binding_types.spv.yaml
index 5afa961..86d399a 100644
--- a/tests/hlsl/binding_types.spv.yaml
+++ b/tests/hlsl/binding_types.spv.yaml
@@ -77,11 +77,11 @@ all_type_descriptions:
type_name: "type.1d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 2, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=1D image_format=Unknown
@@ -94,11 +94,11 @@ all_type_descriptions:
type_name: "type.2d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
@@ -111,11 +111,11 @@ all_type_descriptions:
type_name: "type.3d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 2, depth: 2, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=3D image_format=Unknown
@@ -128,11 +128,11 @@ all_type_descriptions:
type_name: "type.1d.image.array"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 2, arrayed: 1, ms: 0, sampled: 1, image_format: 0 } # dim=1D image_format=Unknown
@@ -145,11 +145,11 @@ all_type_descriptions:
type_name: "type.2d.image.array"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 1, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
@@ -162,11 +162,11 @@ all_type_descriptions:
type_name: "type.1d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 2, arrayed: 0, ms: 0, sampled: 2, image_format: 1 } # dim=1D image_format=Rgba32f
@@ -179,11 +179,11 @@ all_type_descriptions:
type_name: "type.2d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 0, ms: 0, sampled: 2, image_format: 1 } # dim=2D image_format=Rgba32f
@@ -196,11 +196,11 @@ all_type_descriptions:
type_name: "type.3d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 2, depth: 2, arrayed: 0, ms: 0, sampled: 2, image_format: 1 } # dim=3D image_format=Rgba32f
@@ -213,11 +213,11 @@ all_type_descriptions:
type_name: "type.1d.image.array"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 2, arrayed: 1, ms: 0, sampled: 2, image_format: 1 } # dim=1D image_format=Rgba32f
@@ -230,11 +230,11 @@ all_type_descriptions:
type_name: "type.2d.image.array"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 1, ms: 0, sampled: 2, image_format: 1 } # dim=2D image_format=Rgba32f
@@ -247,11 +247,11 @@ all_type_descriptions:
type_name: "type.2d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 0, ms: 1, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
@@ -264,11 +264,11 @@ all_type_descriptions:
type_name: "type.2d.image.array"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 1, ms: 1, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
@@ -281,11 +281,11 @@ all_type_descriptions:
type_name: "type.cube.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 3, depth: 2, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=Cube image_format=Unknown
@@ -298,11 +298,11 @@ all_type_descriptions:
type_name: "type.cube.image.array"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 3, depth: 2, arrayed: 1, ms: 0, sampled: 1, image_format: 0 } # dim=Cube image_format=Unknown
@@ -385,11 +385,11 @@ all_type_descriptions:
type_name: "type.buffer.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 5, depth: 2, arrayed: 0, ms: 0, sampled: 1, image_format: 1 } # dim=Buffer image_format=Rgba32f
@@ -402,11 +402,11 @@ all_type_descriptions:
type_name: "type.buffer.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 5, depth: 2, arrayed: 0, ms: 0, sampled: 2, image_format: 1 } # dim=Buffer image_format=Rgba32f
@@ -419,7 +419,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000008 # FLOAT
+ type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -454,7 +454,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000008 # FLOAT
+ type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -524,7 +524,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000008 # FLOAT
+ type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -559,7 +559,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000008 # FLOAT
+ type_flags: 0x20000008 # ARRAY FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -594,7 +594,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000004 # INT
+ type_flags: 0x20000004 # ARRAY INT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -629,7 +629,7 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x00000004 # INT
+ type_flags: 0x20000004 # ARRAY INT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
diff --git a/tests/hlsl/counter_buffers.spv.yaml b/tests/hlsl/counter_buffers.spv.yaml
index 3f563a4..31672f7 100644
--- a/tests/hlsl/counter_buffers.spv.yaml
+++ b/tests/hlsl/counter_buffers.spv.yaml
@@ -76,7 +76,7 @@ all_type_descriptions:
type_name: "Data"
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
+ type_flags: 0x30080000 # ARRAY STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000000 # NONE
traits:
numeric:
@@ -181,7 +181,7 @@ all_type_descriptions:
type_name: "Data"
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
+ type_flags: 0x30080000 # ARRAY STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000000 # NONE
traits:
numeric:
diff --git a/tests/hlsl/structuredbuffer.spv.yaml b/tests/hlsl/structuredbuffer.spv.yaml
index 240781b..307cda4 100644
--- a/tests/hlsl/structuredbuffer.spv.yaml
+++ b/tests/hlsl/structuredbuffer.spv.yaml
@@ -253,7 +253,7 @@ all_type_descriptions:
type_name: "Data"
struct_member_name:
storage_class: 0 # UniformConstant
- type_flags: 0x10080000 # STRUCT EXTERNAL_BLOCK
+ type_flags: 0x30080000 # ARRAY STRUCT EXTERNAL_BLOCK
decoration_flags: 0x00000000 # NONE
traits:
numeric:
diff --git a/tests/multi_entrypoint/multi_entrypoint.spv.yaml b/tests/multi_entrypoint/multi_entrypoint.spv.yaml
index 49b8d21..4f83b71 100644
--- a/tests/multi_entrypoint/multi_entrypoint.spv.yaml
+++ b/tests/multi_entrypoint/multi_entrypoint.spv.yaml
@@ -7,11 +7,11 @@ all_type_descriptions:
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00050000 # EXTERNAL_SAMPLED_IMAGE EXTERNAL_IMAGE
+ type_flags: 0x00050008 # EXTERNAL_SAMPLED_IMAGE EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
diff --git a/tests/raytrace/rayquery_equal.cs.spv.yaml b/tests/raytrace/rayquery_equal.cs.spv.yaml
index a0884e6..98009fc 100644
--- a/tests/raytrace/rayquery_equal.cs.spv.yaml
+++ b/tests/raytrace/rayquery_equal.cs.spv.yaml
@@ -24,11 +24,11 @@ all_type_descriptions:
type_name: "type.2d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 0, ms: 0, sampled: 2, image_format: 1 } # dim=2D image_format=Rgba32f
diff --git a/tests/raytrace/rayquery_init_rahit.spv.yaml b/tests/raytrace/rayquery_init_rahit.spv.yaml
index 7d392e9..018ca3d 100644
--- a/tests/raytrace/rayquery_init_rahit.spv.yaml
+++ b/tests/raytrace/rayquery_init_rahit.spv.yaml
@@ -58,7 +58,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5315 # ???
+ spirv_execution_model: 5315 # AnyHitKHR
shader_stage: 0x00000200 # ANY_HIT
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/rayquery_init_rcall.spv.yaml b/tests/raytrace/rayquery_init_rcall.spv.yaml
index 59cb416..f9a5cab 100644
--- a/tests/raytrace/rayquery_init_rcall.spv.yaml
+++ b/tests/raytrace/rayquery_init_rcall.spv.yaml
@@ -58,7 +58,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5317 # ???
+ spirv_execution_model: 5317 # MissKHR
shader_stage: 0x00000800 # MISS
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/rayquery_init_rchit.spv.yaml b/tests/raytrace/rayquery_init_rchit.spv.yaml
index e30ba5f..fa71af8 100644
--- a/tests/raytrace/rayquery_init_rchit.spv.yaml
+++ b/tests/raytrace/rayquery_init_rchit.spv.yaml
@@ -58,7 +58,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5316 # ???
+ spirv_execution_model: 5316 # ClosestHitKHR
shader_stage: 0x00000400 # CLOSEST_HIT
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/rayquery_init_rgen.spv.yaml b/tests/raytrace/rayquery_init_rgen.spv.yaml
index 58d2f67..376f414 100644
--- a/tests/raytrace/rayquery_init_rgen.spv.yaml
+++ b/tests/raytrace/rayquery_init_rgen.spv.yaml
@@ -58,7 +58,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5313 # ???
+ spirv_execution_model: 5313 # RayGenerationKHR
shader_stage: 0x00000100 # RAYGEN
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/rayquery_init_rmiss.spv.yaml b/tests/raytrace/rayquery_init_rmiss.spv.yaml
index 59cb416..f9a5cab 100644
--- a/tests/raytrace/rayquery_init_rmiss.spv.yaml
+++ b/tests/raytrace/rayquery_init_rmiss.spv.yaml
@@ -58,7 +58,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5317 # ???
+ spirv_execution_model: 5317 # MissKHR
shader_stage: 0x00000800 # MISS
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.khr.closesthit.spv.yaml b/tests/raytrace/raytracing.khr.closesthit.spv.yaml
index dfeb179..792ea25 100644
--- a/tests/raytrace/raytracing.khr.closesthit.spv.yaml
+++ b/tests/raytrace/raytracing.khr.closesthit.spv.yaml
@@ -413,7 +413,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5316 # ???
+ spirv_execution_model: 5316 # ClosestHitKHR
shader_stage: 0x00000400 # CLOSEST_HIT
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.anyhit.spv.yaml b/tests/raytrace/raytracing.nv.anyhit.spv.yaml
index 0a3e85d..ba6a950 100644
--- a/tests/raytrace/raytracing.nv.anyhit.spv.yaml
+++ b/tests/raytrace/raytracing.nv.anyhit.spv.yaml
@@ -347,7 +347,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5315 # ???
+ spirv_execution_model: 5315 # AnyHitKHR
shader_stage: 0x00000200 # ANY_HIT
descriptor_binding_count: 0
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.callable.spv.yaml b/tests/raytrace/raytracing.nv.callable.spv.yaml
index 363bee2..775712a 100644
--- a/tests/raytrace/raytracing.nv.callable.spv.yaml
+++ b/tests/raytrace/raytracing.nv.callable.spv.yaml
@@ -63,7 +63,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5318 # ???
+ spirv_execution_model: 5318 # CallableKHR
shader_stage: 0x00002000 # CALLABLE
descriptor_binding_count: 0
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.closesthit.spv.yaml b/tests/raytrace/raytracing.nv.closesthit.spv.yaml
index 8f4d83b..d8950b8 100644
--- a/tests/raytrace/raytracing.nv.closesthit.spv.yaml
+++ b/tests/raytrace/raytracing.nv.closesthit.spv.yaml
@@ -395,7 +395,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5316 # ???
+ spirv_execution_model: 5316 # ClosestHitKHR
shader_stage: 0x00000400 # CLOSEST_HIT
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.enum.spv.yaml b/tests/raytrace/raytracing.nv.enum.spv.yaml
index 51b943a..5dabcb4 100644
--- a/tests/raytrace/raytracing.nv.enum.spv.yaml
+++ b/tests/raytrace/raytracing.nv.enum.spv.yaml
@@ -111,7 +111,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5313 # ???
+ spirv_execution_model: 5313 # RayGenerationKHR
shader_stage: 0x00000100 # RAYGEN
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.intersection.spv.yaml b/tests/raytrace/raytracing.nv.intersection.spv.yaml
index 7cfa2aa..b5d7ac7 100644
--- a/tests/raytrace/raytracing.nv.intersection.spv.yaml
+++ b/tests/raytrace/raytracing.nv.intersection.spv.yaml
@@ -329,7 +329,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5314 # ???
+ spirv_execution_model: 5314 # IntersectionKHR
shader_stage: 0x00001000 # INTERSECTION
descriptor_binding_count: 0
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.library.spv.yaml b/tests/raytrace/raytracing.nv.library.spv.yaml
index 311f2ec..c91940c 100644
--- a/tests/raytrace/raytracing.nv.library.spv.yaml
+++ b/tests/raytrace/raytracing.nv.library.spv.yaml
@@ -395,7 +395,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5313 # ???
+ spirv_execution_model: 5313 # RayGenerationKHR
shader_stage: 0x00000100 # RAYGEN
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.miss.spv.yaml b/tests/raytrace/raytracing.nv.miss.spv.yaml
index 7157294..18a3595 100644
--- a/tests/raytrace/raytracing.nv.miss.spv.yaml
+++ b/tests/raytrace/raytracing.nv.miss.spv.yaml
@@ -186,7 +186,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5317 # ???
+ spirv_execution_model: 5317 # MissKHR
shader_stage: 0x00000800 # MISS
descriptor_binding_count: 0
descriptor_bindings:
diff --git a/tests/raytrace/raytracing.nv.raygen.spv.yaml b/tests/raytrace/raytracing.nv.raygen.spv.yaml
index 51b943a..5dabcb4 100644
--- a/tests/raytrace/raytracing.nv.raygen.spv.yaml
+++ b/tests/raytrace/raytracing.nv.raygen.spv.yaml
@@ -111,7 +111,7 @@ module:
entry_point_id: 1
source_language: 5 # HLSL
source_language_version: 630
- spirv_execution_model: 5313 # ???
+ spirv_execution_model: 5313 # RayGenerationKHR
shader_stage: 0x00000100 # RAYGEN
descriptor_binding_count: 1
descriptor_bindings:
diff --git a/tests/spirv15/VertexShader.spv.yaml b/tests/spirv15/VertexShader.spv.yaml
index da91ec2..fea8185 100644
--- a/tests/spirv15/VertexShader.spv.yaml
+++ b/tests/spirv15/VertexShader.spv.yaml
@@ -7,11 +7,11 @@ all_type_descriptions:
type_name: "type.2d.image"
struct_member_name:
storage_class: -1 # NOT APPLICABLE
- type_flags: 0x00010000 # EXTERNAL_IMAGE
+ type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
- scalar: { width: 0, signedness: 0 }
+ scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 2, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown