diff options
author | ethannicholas <ethannicholas@google.com> | 2016-09-26 13:43:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-26 13:43:47 -0700 |
commit | 29111a3e71f59b26c1feebf6b30db5c68a27d5a9 (patch) | |
tree | f0adeb3061610aed50cff350f528d0a952f63c0a /src/gpu/gl/builders | |
parent | 2cc7f8d196793a8a7f8d50b104f733f9a476788c (diff) |
Revert of Turned on SkSL->GLSL compiler (patchset #37 id:800001 of https://codereview.chromium.org/2288033003/ )
Reason for revert:
Gold image breakage
Original issue's description:
> Turned on SkSL->GLSL compiler
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2288033003
>
> Committed: https://skia.googlesource.com/skia/+/9b0fe3d125f237d9884732a48414fa85fc71b4e3
> Committed: https://skia.googlesource.com/skia/+/b12b3c6908c62c908b3680be01e3b5bfd30de310
TBR=benjaminwagner@google.com,bsalomon@google.com,egdaniel@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review-Url: https://codereview.chromium.org/2372773002
Diffstat (limited to 'src/gpu/gl/builders')
-rw-r--r-- | src/gpu/gl/builders/GrGLShaderStringBuilder.cpp | 128 |
1 files changed, 7 insertions, 121 deletions
diff --git a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp index 04d90ee343..d2e49a5cfb 100644 --- a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp +++ b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp @@ -9,8 +9,6 @@ #include "gl/GrGLGpu.h" #include "gl/GrGLSLPrettyPrint.h" #include "SkTraceEvent.h" -#include "SkSLCompiler.h" -#include "ir/SkSLProgram.h" #define GL_CALL(X) GR_GL_CALL(gpu->glInterface(), X) #define GL_CALL_RET(R, X) GR_GL_CALL_RET(gpu->glInterface(), R, X) @@ -20,90 +18,6 @@ static const bool c_PrintShaders{false}; static void print_shader_source(const char** strings, int* lengths, int count); -static SkSL::GLCaps skslcaps_for_context(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.fCanUseMinAndAbsTogether = glslCaps->canUseMinAndAbsTogether(); - 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. - size_t index = 0; - for (;;) { - size_t next = s.find("\n", index); - if (next == std::string::npos) { - SkDebugf("%s", s.substr(index).c_str()); - break; - } else { - SkDebugf("%s", s.substr(index, next - index + 1).c_str()); - index = next + 1; - } - } -} - GrGLuint GrGLCompileAndAttachShader(const GrGLContext& glCtx, GrGLuint programId, GrGLenum type, @@ -119,38 +33,14 @@ GrGLuint GrGLCompileAndAttachShader(const GrGLContext& glCtx, return 0; } - std::string sksl; #ifdef SK_DEBUG SkString prettySource = GrGLSLPrettyPrint::PrettyPrintGLSL(strings, lengths, count, false); - sksl = std::string(prettySource.c_str()); + const GrGLchar* sourceStr = prettySource.c_str(); + GrGLint sourceLength = static_cast<GrGLint>(prettySource.size()); + GR_GL_CALL(gli, ShaderSource(shaderId, 1, &sourceStr, &sourceLength)); #else - for (int i = 0; i < count; i++) { - sksl.append(strings[i], lengths[i]); - } -#endif - - std::string glsl; - SkSL::Compiler& compiler = *glCtx.compiler(); - SkSL::GLCaps caps = skslcaps_for_context(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()), - caps, - &glsl); -#ifdef SK_DEBUG - if (!result) { - SkDebugf("SKSL compilation error\n----------------------\n"); - SkDebugf("SKSL:\n"); - dump_string(sksl); - SkDebugf("\nErrors:\n%s\n", compiler.errorText().c_str()); - SkDEBUGFAIL("SKSL compilation failed!\n"); - } + GR_GL_CALL(gli, ShaderSource(shaderId, count, strings, lengths)); #endif - const char* glslChars = glsl.c_str(); - GrGLint glslLength = (GrGLint) glsl.length(); - GR_GL_CALL(gli, ShaderSource(shaderId, 1, &glslChars, &glslLength)); // If tracing is enabled in chrome then we pretty print bool traceShader; @@ -182,14 +72,10 @@ GrGLuint GrGLCompileAndAttachShader(const GrGLContext& glCtx, // buffer param validation. GrGLsizei length = GR_GL_INIT_ZERO; GR_GL_CALL(gli, GetShaderInfoLog(shaderId, infoLen+1, &length, (char*)log.get())); - SkDebugf("GLSL compilation error\n----------------------\n"); - SkDebugf("SKSL:\n"); - dump_string(sksl); - SkDebugf("GLSL:\n"); - dump_string(glsl); - SkDebugf("Errors:\n%s\n", (const char*) log.get()); + print_shader_source(strings, lengths, count); + SkDebugf("\n%s", (const char*)log.get()); } - SkDEBUGFAIL("GLSL compilation failed!"); + SkDEBUGFAIL("Shader compilation failed!"); GR_GL_CALL(gli, DeleteShader(shaderId)); return 0; } |