diff options
author | Brian Salomon <bsalomon@google.com> | 2016-11-18 11:58:54 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-21 18:01:43 +0000 |
commit | 101b844d6ba031de5c4e95b43f9292f266799237 (patch) | |
tree | 138593a7d161695e26b691db6557fd1b22914b4d /src/gpu/gl/GrGLUniformHandler.cpp | |
parent | 3502c5cc736f131674147ed19f1942f83f5fb9a4 (diff) |
Remove GrGLSLSampler type and subclasses
GrGLSLUniformManager and GrGLSLProgramDataManager subclasses handle sampler variation across GPU backends.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5002
Change-Id: I968b006bab978c2fa209d1f7eda710c298d1212f
Reviewed-on: https://skia-review.googlesource.com/5002
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/gl/GrGLUniformHandler.cpp')
-rw-r--r-- | src/gpu/gl/GrGLUniformHandler.cpp | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/gpu/gl/GrGLUniformHandler.cpp b/src/gpu/gl/GrGLUniformHandler.cpp index c388e4621b..37f241838f 100644 --- a/src/gpu/gl/GrGLUniformHandler.cpp +++ b/src/gpu/gl/GrGLUniformHandler.cpp @@ -45,6 +45,7 @@ GrGLSLUniformHandler::UniformHandle GrGLUniformHandler::internalAddUniformArray( uni.fVariable.setArrayCount(arrayCount); uni.fVisibility = visibility; uni.fVariable.setPrecision(precision); + uni.fLocation = -1; if (outName) { *outName = uni.fVariable.c_str(); @@ -52,19 +53,30 @@ GrGLSLUniformHandler::UniformHandle GrGLUniformHandler::internalAddUniformArray( return GrGLSLUniformHandler::UniformHandle(fUniforms.count() - 1); } -GrGLSLUniformHandler::SamplerHandle GrGLUniformHandler::internalAddSampler(uint32_t visibility, - GrPixelConfig config, - GrSLType type, - GrSLPrecision precision, - const char* name) { +GrGLSLUniformHandler::SamplerHandle GrGLUniformHandler::addSampler(uint32_t visibility, + GrSwizzle swizzle, + GrSLType type, + GrSLPrecision precision, + const char* name) { SkASSERT(name && strlen(name)); SkDEBUGCODE(static const uint32_t kVisMask = kVertex_GrShaderFlag | kFragment_GrShaderFlag); SkASSERT(0 == (~kVisMask & visibility)); SkASSERT(0 != visibility); + SkString mangleName; char prefix = 'u'; fProgramBuilder->nameVariable(&mangleName, prefix, name, true); - fSamplers.emplace_back(visibility, config, type, precision, mangleName.c_str()); + + UniformInfo& sampler = fSamplers.push_back(); + SkASSERT(GrSLTypeIsCombinedSamplerType(type)); + sampler.fVariable.setType(type); + sampler.fVariable.setTypeModifier(GrGLSLShaderVar::kUniform_TypeModifier); + sampler.fVariable.setPrecision(precision); + sampler.fVariable.setName(mangleName); + sampler.fLocation = -1; + sampler.fVisibility = visibility; + fSamplerSwizzles.push_back(swizzle); + SkASSERT(fSamplers.count() == fSamplerSwizzles.count()); return GrGLSLUniformHandler::SamplerHandle(fSamplers.count() - 1); } @@ -76,8 +88,8 @@ void GrGLUniformHandler::appendUniformDecls(GrShaderFlags visibility, SkString* } } for (int i = 0; i < fSamplers.count(); ++i) { - if (fSamplers[i].visibility() & visibility) { - fSamplers[i].fShaderVar.appendDecl(fProgramBuilder->glslCaps(), out); + if (fSamplers[i].fVisibility & visibility) { + fSamplers[i].fVariable.appendDecl(fProgramBuilder->glslCaps(), out); out->append(";\n"); } } @@ -92,7 +104,7 @@ void GrGLUniformHandler::bindUniformLocations(GrGLuint programID, const GrGLCaps } for (int i = 0; i < fSamplers.count(); ++i) { GrGLint location = i + uniformCnt; - GL_CALL(BindUniformLocation(programID, location, fSamplers[i].fShaderVar.c_str())); + GL_CALL(BindUniformLocation(programID, location, fSamplers[i].fVariable.c_str())); fSamplers[i].fLocation = location; } } @@ -108,7 +120,7 @@ void GrGLUniformHandler::getUniformLocations(GrGLuint programID, const GrGLCaps& } for (int i = 0; i < fSamplers.count(); ++i) { GrGLint location; - GL_CALL_RET(location, GetUniformLocation(programID, fSamplers[i].fShaderVar.c_str())); + GL_CALL_RET(location, GetUniformLocation(programID, fSamplers[i].fVariable.c_str())); fSamplers[i].fLocation = location; } } |