aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar Leon Scroggins <scroggo@google.com>2016-11-11 15:50:45 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-11 15:51:01 +0000
commitb0b5360ae4078560b2f5f8508471129e4dd1cee6 (patch)
tree20b240c09f4d833fbd6f80f7dbce8447b5221f42 /src/gpu
parent8af38a96475ac5ce83b20c16d9cf82bf1006b8c4 (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.cpp76
-rw-r--r--src/gpu/gl/builders/GrGLShaderStringBuilder.h2
-rw-r--r--src/gpu/glsl/GrGLSLCaps.h5
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;
};