aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2016-11-22 15:06:46 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-22 20:49:02 +0000
commit60397689631d74ea51892487456849c57b5364f3 (patch)
treef902ca7339f67ae0c5246f360afaa6a027aeca60
parentcb5338cadcc7852026a5225f8cf825530f265fa2 (diff)
Move GrShaderVar to an appending model for layout qualifiers
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5144 Change-Id: I05e88961e50bd679cfe5863f413f3ec65bc9fd95 Reviewed-on: https://skia-review.googlesource.com/5144 Reviewed-by: Greg Daniel <egdaniel@google.com> Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
-rw-r--r--include/gpu/GrShaderVar.h13
-rw-r--r--src/gpu/vk/GrVkPipelineStateBuilder.cpp4
-rw-r--r--src/gpu/vk/GrVkUniformHandler.cpp2
-rw-r--r--src/gpu/vk/GrVkVaryingHandler.cpp2
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);