diff --git a/glsl2spv.cpp b/glsl2spv.cpp index 4a4703c..6db0bb8 100644 --- a/glsl2spv.cpp +++ b/glsl2spv.cpp @@ -251,7 +251,7 @@ struct ShaderAttribute uint8_t vec_size; };// -struct ShaderAttributeData +struct ShaderAttributeArray { uint32_t count; ShaderAttribute *items; @@ -342,10 +342,14 @@ public: } };//struct SPVData +struct ShaderStageIO +{ + ShaderAttributeArray input,output; +};//struct ShaderStageIO + struct SPVParseData { - ShaderAttributeData input, - output; + ShaderStageIO stage_io; ShaderDescriptorResource resource; ShaderResourceData push_constant; ShaderResourceData subpass_input; @@ -365,12 +369,12 @@ public: delete[] push_constant.items; delete[] subpass_input.items; - delete[] input.items; - delete[] output.items; + delete[] stage_io.input.items; + delete[] stage_io.output.items; } }; -void OutputShaderAttributes(ShaderAttributeData *ssd,ShaderParse *sp,const SPVResVector &stages) +void OutputShaderAttributes(ShaderAttributeArray *ssd,ShaderParse *sp,const SPVResVector &stages) { size_t attr_count=stages.size(); @@ -575,8 +579,8 @@ extern "C" SPVParseData *spv=new SPVParseData; - OutputShaderAttributes(&(spv->input),&sp,sp.GetStageInputs()); - OutputShaderAttributes(&(spv->output),&sp,sp.GetStageOutputs()); + OutputShaderAttributes(&(spv->stage_io.input),&sp,sp.GetStageInputs()); + OutputShaderAttributes(&(spv->stage_io.output),&sp,sp.GetStageOutputs()); OutputShaderResource(spv->resource+VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, &sp,sp.GetUBO()); OutputShaderResource(spv->resource+VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, &sp,sp.GetSSBO());