X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fmodule.cpp;h=2326a5e7fd3dcf73c8a9f4e73ba191cd2a0acda3;hb=271760e6099bf5f4ad90894697dab911c236a0a3;hp=601aae99c8952e355016562d4589e333cfbd2798;hpb=e9a898f315b5d1396f196d785913a283c30940f2;p=libs%2Fgl.git diff --git a/source/core/module.cpp b/source/core/module.cpp index 601aae99..2326a5e7 100644 --- a/source/core/module.cpp +++ b/source/core/module.cpp @@ -37,6 +37,7 @@ enum SpirVConstants DECO_SPEC_ID = 1, DECO_ARRAY_STRIDE = 6, DECO_MATRIX_STRIDE = 7, + DECO_BUILTIN = 11, DECO_LOCATION = 30, DECO_BINDING = 33, DECO_DESCRIPTOR_SET = 34, @@ -117,7 +118,7 @@ void SpirVModule::remap_pointers_from(const SpirVModule &other) void SpirVModule::load_code(IO::Base &io) { - UInt32 buffer[1024]; + uint32_t buffer[1024]; while(1) { unsigned len = io.read(reinterpret_cast(buffer), sizeof(buffer)); @@ -145,7 +146,7 @@ void SpirVModule::reflect() if(code[0]==SPIRV_MAGIC_REVERSED) { - for(UInt32 &c: code) + for(uint32_t &c: code) c = ((c&0xFF)<<24) || ((c&0xFF00)<<8) | ((c>>8)&0xFF00) | ((c>>24)&0xFF); } else if(code[0]!=SPIRV_MAGIC) @@ -245,30 +246,6 @@ void SpirVModule::reflect() } -SpirVModule::EntryPoint::EntryPoint(): - stage(VERTEX) -{ } - - -SpirVModule::StructMember::StructMember(): - type(VOID), - struct_type(0), - offset(0), - array_size(0), - array_size_spec(0), - array_stride(0), - matrix_stride(0) -{ } - - -SpirVModule::Variable::Variable(): - type(VOID), - struct_type(0), - location(-1), - descriptor_set(-1), - binding(-1) -{ } - bool SpirVModule::Variable::operator==(const Variable &other) const { if(storage!=UNIFORM_CONSTANT && storage!=UNIFORM) @@ -281,17 +258,7 @@ bool SpirVModule::Variable::operator==(const Variable &other) const } -SpirVModule::TypeInfo::TypeInfo(): - type(VOID), - struct_type(0), - array_size_spec(0), - array_size(0), - array_stride(0), - storage(static_cast(-1)) -{ } - - -UInt32 SpirVModule::Reflection::get_opcode(UInt32 op) +uint32_t SpirVModule::Reflection::get_opcode(uint32_t op) { return op&0xFFFF; } @@ -323,7 +290,7 @@ string SpirVModule::Reflection::read_string(CodeIterator &op, const CodeIterator throw invalid_module("Unterminated SPIR-V string literal"); } -void SpirVModule::Reflection::reflect_code(const vector &code) +void SpirVModule::Reflection::reflect_code(const vector &code) { for(CodeIterator op=code.begin()+5; op!=code.end(); ) { @@ -538,6 +505,9 @@ void SpirVModule::Reflection::reflect_decorate(CodeIterator op) case DECO_ARRAY_STRIDE: types[id].array_stride = *op; break; + case DECO_BUILTIN: + variables[id].builtin = static_cast(*op); + break; case DECO_LOCATION: variables[id].location = *op; break; @@ -565,6 +535,9 @@ void SpirVModule::Reflection::reflect_member_decorate(CodeIterator op) case DECO_MATRIX_STRIDE: member.matrix_stride = *op; break; + case DECO_BUILTIN: + member.builtin = static_cast(*op); + break; case DECO_OFFSET: member.offset = *op; break;