diff options
author | Leon Scroggins <scroggo@google.com> | 2016-11-11 15:50:45 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-11 15:51:01 +0000 |
commit | b0b5360ae4078560b2f5f8508471129e4dd1cee6 (patch) | |
tree | 20b240c09f4d833fbd6f80f7dbce8447b5221f42 /src/gpu | |
parent | 8af38a96475ac5ce83b20c16d9cf82bf1006b8c4 (diff) |
Revert "skslc now uses standard Skia caps"
This reverts commit 8af38a96475ac5ce83b20c16d9cf82bf1006b8c4.
Reason for revert: Breaking compile bots, e.g. from https://uberchromegw.corp.google.com/i/client.skia.compile/builders/Build-Ubuntu-GCC-x86_64-Debug-NoGPU/builds/10029/steps/compile_skia%20on%20Ubuntu/logs/stdio :
In function `sk_make_sp<GrGLSLCaps, GrContextOptions>'
undefined reference to `GrGLSLCaps::GrGLSLCaps(GrContextOptions const&)
In function `_Z10sk_make_spI10GrGLSLCapsI16GrContextOptionsEE5sk_spIT_EDpOT0_':
undefined reference to `GrGLSLCaps::GrGLSLCaps(GrContextOptions const&)
Original change's description:
> skslc now uses standard Skia caps
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4660
>
> Change-Id: Idaedae3f81426b97f5052bb872cdf0610e47a84f
> Reviewed-on: https://skia-review.googlesource.com/4660
> Reviewed-by: Ben Wagner <benjaminwagner@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
>
TBR=bsalomon@google.com,benjaminwagner@google.com,ethannicholas@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: Ic7f987f5c050ac2e333f5a0f16c8de85c1047a74
Reviewed-on: https://skia-review.googlesource.com/4697
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/gl/builders/GrGLShaderStringBuilder.cpp | 76 | ||||
-rw-r--r-- | src/gpu/gl/builders/GrGLShaderStringBuilder.h | 2 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLCaps.h | 5 |
3 files changed, 77 insertions, 6 deletions
diff --git a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp index 1e42259128..8a5b700a90 100644 --- a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp +++ b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp @@ -21,6 +21,79 @@ static const bool c_PrintShaders{false}; static void print_shader_source(const char** strings, int* lengths, int count); +SkSL::GLCaps GrGLSkSLCapsForContext(const GrGLContext& context) { + GrGLStandard standard = context.standard(); + const GrGLCaps* caps = context.caps(); + const GrGLSLCaps* glslCaps = caps->glslCaps(); + SkSL::GLCaps result; + switch (standard) { + case kGL_GrGLStandard: + result.fStandard = SkSL::GLCaps::kGL_Standard; + break; + case kGLES_GrGLStandard: + result.fStandard = SkSL::GLCaps::kGLES_Standard; + break; + default: + SkASSERT(false); + result.fStandard = SkSL::GLCaps::kGL_Standard; + } + + switch (glslCaps->generation()) { + case k110_GrGLSLGeneration: + if (kGLES_GrGLStandard == standard) { + // ES2's shader language is based on GLSL 1.20 but is version 1.00 of the ES + // language + result.fVersion = 100; + } else { + SkASSERT(kGL_GrGLStandard == standard); + result.fVersion = 110; + } + break; + case k130_GrGLSLGeneration: + SkASSERT(kGL_GrGLStandard == standard); + result.fVersion = 130; + break; + case k140_GrGLSLGeneration: + SkASSERT(kGL_GrGLStandard == standard); + result.fVersion = 140; + break; + case k150_GrGLSLGeneration: + SkASSERT(kGL_GrGLStandard == standard); + result.fVersion = 150; + break; + case k330_GrGLSLGeneration: + if (kGLES_GrGLStandard == standard) { + result.fVersion = 300; + } else { + SkASSERT(kGL_GrGLStandard == standard); + result.fVersion = 330; + } + break; + case k400_GrGLSLGeneration: + SkASSERT(kGL_GrGLStandard == standard); + result.fVersion = 400; + break; + case k310es_GrGLSLGeneration: + SkASSERT(kGLES_GrGLStandard == standard); + result.fVersion = 310; + break; + case k320es_GrGLSLGeneration: + SkASSERT(kGLES_GrGLStandard == standard); + result.fVersion = 320; + break; + } + result.fIsCoreProfile = caps->isCoreProfile(); + result.fUsesPrecisionModifiers = glslCaps->usesPrecisionModifiers(); + result.fMustDeclareFragmentShaderOutput = glslCaps->mustDeclareFragmentShaderOutput(); + result.fShaderDerivativeSupport = glslCaps->shaderDerivativeSupport(); + if (result.fShaderDerivativeSupport && glslCaps->shaderDerivativeExtensionString()) { + result.fShaderDerivativeExtensionString = glslCaps->shaderDerivativeExtensionString(); + } + result.fCanUseMinAndAbsTogether = glslCaps->canUseMinAndAbsTogether(); + result.fMustForceNegatedAtanParamToFloat = glslCaps->mustForceNegatedAtanParamToFloat(); + return result; +} + static void dump_string(std::string s) { // on Android, SkDebugf only displays the first 1K characters of output, which results in // incomplete shader source code. Print each line individually to avoid this problem. @@ -64,12 +137,13 @@ GrGLuint GrGLCompileAndAttachShader(const GrGLContext& glCtx, std::string glsl; SkSL::Compiler& compiler = *glCtx.compiler(); + SkSL::GLCaps caps = GrGLSkSLCapsForContext(glCtx); SkASSERT(type == GR_GL_VERTEX_SHADER || type == GR_GL_FRAGMENT_SHADER); SkDEBUGCODE(bool result = )compiler.toGLSL(type == GR_GL_VERTEX_SHADER ? SkSL::Program::kVertex_Kind : SkSL::Program::kFragment_Kind, std::string(sksl.c_str()), - *glCtx.caps()->glslCaps(), + caps, &glsl); #ifdef SK_DEBUG if (!result) { diff --git a/src/gpu/gl/builders/GrGLShaderStringBuilder.h b/src/gpu/gl/builders/GrGLShaderStringBuilder.h index 71fce6a95a..4365751c3a 100644 --- a/src/gpu/gl/builders/GrGLShaderStringBuilder.h +++ b/src/gpu/gl/builders/GrGLShaderStringBuilder.h @@ -14,6 +14,8 @@ #include "SkSLGLSLCodeGenerator.h" #include "SkTypes.h" +SkSL::GLCaps GrGLSkSLCapsForContext(const GrGLContext& context); + GrGLuint GrGLCompileAndAttachShader(const GrGLContext& glCtx, GrGLuint programId, GrGLenum type, diff --git a/src/gpu/glsl/GrGLSLCaps.h b/src/gpu/glsl/GrGLSLCaps.h index 1a89d1690b..ac409a36ba 100644 --- a/src/gpu/glsl/GrGLSLCaps.h +++ b/src/gpu/glsl/GrGLSLCaps.h @@ -13,10 +13,6 @@ #include "GrGLSL.h" #include "GrSwizzle.h" -namespace SkSL { - class GLSLCapsFactory; -} - class GrGLSLCaps : public GrShaderCaps { public: @@ -235,7 +231,6 @@ private: friend class GrGLCaps; // For initialization. friend class GrVkCaps; - friend class SkSL::GLSLCapsFactory; typedef GrShaderCaps INHERITED; }; |