diff options
-rw-r--r-- | include/gpu/GrShaderVar.h | 13 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipelineStateBuilder.cpp | 4 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUniformHandler.cpp | 2 | ||||
-rw-r--r-- | src/gpu/vk/GrVkVaryingHandler.cpp | 2 |
4 files changed, 14 insertions, 7 deletions
diff --git a/include/gpu/GrShaderVar.h b/include/gpu/GrShaderVar.h index 81a7566a9d..aaae107c19 100644 --- a/include/gpu/GrShaderVar.h +++ b/include/gpu/GrShaderVar.h @@ -271,10 +271,17 @@ public: void setPrecision(GrSLPrecision p) { fPrecision = p; } /** - * Set the layout qualifier + * Appends to the layout qualifier */ - void setLayoutQualifier(const char* layoutQualifier) { - fLayoutQualifier = layoutQualifier; + void addLayoutQualifier(const char* layoutQualifier) { + if (!layoutQualifier || !strlen(layoutQualifier)) { + return; + } + if (fLayoutQualifier.isEmpty()) { + fLayoutQualifier = layoutQualifier; + } else { + fLayoutQualifier.appendf(", %s", layoutQualifier); + } } void addModifier(const char* modifier) { diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.cpp b/src/gpu/vk/GrVkPipelineStateBuilder.cpp index 725bc24641..01701b6653 100644 --- a/src/gpu/vk/GrVkPipelineStateBuilder.cpp +++ b/src/gpu/vk/GrVkPipelineStateBuilder.cpp @@ -54,11 +54,11 @@ const GrGLSLCaps* GrVkPipelineStateBuilder::glslCaps() const { } void GrVkPipelineStateBuilder::finalizeFragmentOutputColor(GrShaderVar& outputColor) { - outputColor.setLayoutQualifier("location = 0, index = 0"); + outputColor.addLayoutQualifier("location = 0, index = 0"); } void GrVkPipelineStateBuilder::finalizeFragmentSecondaryColor(GrShaderVar& outputColor) { - outputColor.setLayoutQualifier("location = 0, index = 1"); + outputColor.addLayoutQualifier("location = 0, index = 1"); } bool GrVkPipelineStateBuilder::CreateVkShaderModule(const GrVkGpu* gpu, diff --git a/src/gpu/vk/GrVkUniformHandler.cpp b/src/gpu/vk/GrVkUniformHandler.cpp index 85b6955177..3998c0fd23 100644 --- a/src/gpu/vk/GrVkUniformHandler.cpp +++ b/src/gpu/vk/GrVkUniformHandler.cpp @@ -189,7 +189,7 @@ GrGLSLUniformHandler::SamplerHandle GrVkUniformHandler::addSampler(uint32_t visi info.fVariable.setName(mangleName); SkString layoutQualifier; layoutQualifier.appendf("set=%d, binding=%d", kSamplerDescSet, fSamplers.count() - 1); - info.fVariable.setLayoutQualifier(layoutQualifier.c_str()); + info.fVariable.addLayoutQualifier(layoutQualifier.c_str()); info.fVisibility = visibility; info.fUBOffset = 0; fSamplerSwizzles.push_back(swizzle); diff --git a/src/gpu/vk/GrVkVaryingHandler.cpp b/src/gpu/vk/GrVkVaryingHandler.cpp index 2b3e97571e..9bab292af8 100644 --- a/src/gpu/vk/GrVkVaryingHandler.cpp +++ b/src/gpu/vk/GrVkVaryingHandler.cpp @@ -58,7 +58,7 @@ void finalize_helper(GrVkVaryingHandler::VarArray& vars) { GrShaderVar& var = vars[i]; SkString location; location.appendf("location = %d", locationIndex); - var.setLayoutQualifier(location.c_str()); + var.addLayoutQualifier(location.c_str()); int elementSize = grsltype_to_location_size(var.getType()); SkASSERT(elementSize); |