X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fspirv.cpp;h=7b3e104e372c65a7d845bfd0a77c93358762aee3;hb=5ced451549e2238bb1195d03419437a395b9afec;hp=1f7d6a1b722c98289446f95a40aacd0c8101a09b;hpb=89f26eba675defb38542faacacde6b9d4a2248c5;p=libs%2Fgl.git diff --git a/source/glsl/spirv.cpp b/source/glsl/spirv.cpp index 1f7d6a1b..7b3e104e 100644 --- a/source/glsl/spirv.cpp +++ b/source/glsl/spirv.cpp @@ -1512,7 +1512,7 @@ void SpirVGenerator::visit(StructDeclaration &strct) return; Id type_id = allocate_id(strct, 0); - writer.write_op_name(type_id, strct.name); + writer.write_op_name(type_id, (strct.block_name.empty() ? strct.name : strct.block_name)); if(!strct.block_name.empty()) writer.write_op_decorate(type_id, DECO_BLOCK); @@ -1670,7 +1670,8 @@ void SpirVGenerator::visit(VariableDeclaration &var) } } - writer.write_op_name(var_id, var.name); + if(var.name.find(' ')==string::npos) + writer.write_op_name(var_id, var.name); } void SpirVGenerator::visit_entry_point(FunctionDeclaration &func, Id func_id) @@ -1700,7 +1701,10 @@ void SpirVGenerator::visit_entry_point(FunctionDeclaration &func, Id func_id) writer.write_op(content.exec_modes, OP_EXECUTION_MODE, func_id, origin); } else if(stage->type==Stage::GEOMETRY) + { use_capability(CAP_GEOMETRY); + writer.write_op(content.exec_modes, OP_EXECUTION_MODE, func_id, EXEC_INVOCATIONS, 1); + } for(const InterfaceLayout *i: interface_layouts) { @@ -1776,6 +1780,7 @@ void SpirVGenerator::visit(FunctionDeclaration &func) { Id param_id = allocate_id(*func.parameters[i], param_type_ids[i]); writer.write_op(content.functions, OP_FUNCTION_PARAMETER, param_type_ids[i], param_id); + writer.write_op_name(param_id, func.parameters[i]->name); // TODO This is probably incorrect if the parameter is assigned to. variable_load_ids[func.parameters[i].get()] = param_id; }