aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2016-11-11 15:16:46 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-11 21:15:29 +0000
commit7ef4b74e57a143e4e586e577e9b7c11c3aab472d (patch)
tree5ca0e9f4e9fc44806f0ef45eb70c0ff350cf13a0 /src/gpu
parentdca4f6530013cf43a2557ccb07f5cb4fd916b8e8 (diff)
re-re-land of skslc now uses standard Skia caps
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4732 Change-Id: I144110bf66f67a28da7ad333173db43bddf9e8d0 Reviewed-on: https://skia-review.googlesource.com/4732 Reviewed-by: Ethan Nicholas <ethannicholas@google.com> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src/gpu')
-rw-r--r--src/gpu/gl/builders/GrGLShaderStringBuilder.cpp76
-rw-r--r--src/gpu/gl/builders/GrGLShaderStringBuilder.h2
-rw-r--r--src/gpu/glsl/GrGLSLCaps.h5
3 files changed, 6 insertions, 77 deletions
diff --git a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp
index 8a5b700a90..1e42259128 100644
--- a/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp
+++ b/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp
@@ -21,79 +21,6 @@ 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.
@@ -137,13 +64,12 @@ 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()),
- caps,
+ *glCtx.caps()->glslCaps(),
&glsl);
#ifdef SK_DEBUG
if (!result) {
diff --git a/src/gpu/gl/builders/GrGLShaderStringBuilder.h b/src/gpu/gl/builders/GrGLShaderStringBuilder.h
index 4365751c3a..71fce6a95a 100644
--- a/src/gpu/gl/builders/GrGLShaderStringBuilder.h
+++ b/src/gpu/gl/builders/GrGLShaderStringBuilder.h
@@ -14,8 +14,6 @@
#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 ac409a36ba..1a89d1690b 100644
--- a/src/gpu/glsl/GrGLSLCaps.h
+++ b/src/gpu/glsl/GrGLSLCaps.h
@@ -13,6 +13,10 @@
#include "GrGLSL.h"
#include "GrSwizzle.h"
+namespace SkSL {
+ class GLSLCapsFactory;
+}
+
class GrGLSLCaps : public GrShaderCaps {
public:
@@ -231,6 +235,7 @@ private:
friend class GrGLCaps; // For initialization.
friend class GrVkCaps;
+ friend class SkSL::GLSLCapsFactory;
typedef GrShaderCaps INHERITED;
};