Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Unified Diff: src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp

Issue 1541903002: added support for PLS path rendering (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
index 54e0b7f9561eded3ab6a2c20cf1fe0e54b004bc8..e2003e4142360fc2a9afc3b56fff1e197e030568 100644
--- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
@@ -7,6 +7,7 @@
#include "GrGLSLFragmentShaderBuilder.h"
#include "GrRenderTarget.h"
+#include "gl/GrGLGpu.h"
#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLProgramBuilder.h"
@@ -87,6 +88,14 @@ bool GrGLSLFragmentShaderBuilder::enableFeature(GLSLFeature feature) {
}
return true;
}
+ case kPixelLocalStorage_GLSLFeature: {
+ if (fProgramBuilder->glslCaps()->pixelLocalStorageSize() <= 0) {
+ return false;
+ }
+ this->addFeature(1 << kPixelLocalStorage_GLSLFeature,
+ "GL_EXT_shader_pixel_local_storage");
+ return true;
+ }
default:
SkFAIL("Unexpected GLSLFeature requested.");
return false;
@@ -160,6 +169,11 @@ const char* GrGLSLFragmentShaderBuilder::fragmentPosition() {
const char* GrGLSLFragmentShaderBuilder::dstColor() {
fHasReadDstColor = true;
+ GrPixelLocalStorageState pls = fProgramBuilder->primitiveProcessor().getPixelLocalStorageState();
+ if (pls == GrPixelLocalStorageState::kFinish_State) {
+ return "pls.dstColor";
bsalomon 2016/01/04 15:33:47 Should we make it possible for the GP to provide t
+ }
+
const GrGLSLCaps* glslCaps = fProgramBuilder->glslCaps();
if (glslCaps->fbFetchSupport()) {
this->addFeature(1 << (GrGLSLFragmentShaderBuilder::kLastGLSLPrivateFeature + 1),
@@ -227,6 +241,13 @@ const char* GrGLSLFragmentShaderBuilder::getPrimaryColorOutputName() const {
return fHasCustomColorOutput ? DeclaredColorOutputName() : "gl_FragColor";
}
+void GrGLSLFragmentBuilder::declAppendf(const char* fmt, ...) {
+ va_list argp;
+ va_start(argp, fmt);
+ inputs().appendVAList(fmt, argp);
+ va_end(argp);
+}
+
const char* GrGLSLFragmentShaderBuilder::getSecondaryColorOutputName() const {
const GrGLSLCaps& caps = *fProgramBuilder->glslCaps();
return caps.mustDeclareFragmentShaderOutput() ? DeclaredSecondaryColorOutputName()

Powered by Google App Engine
This is Rietveld 408576698