aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gpu/gl/builders/GrGLProgramBuilder.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
index 4ffc1ecf22..071a091388 100644
--- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp
+++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
@@ -195,6 +195,10 @@ GrGLProgram* GrGLProgramBuilder::finalize() {
fFS.fCompilerStrings.count(),
settings,
&glsl);
+ if (!fs) {
+ this->cleanupProgram(programID, shadersToDelete);
+ return nullptr;
+ }
inputs = fs->fInputs;
if (inputs.fRTHeight) {
this->addRTHeightUniform(SKSL_RTHEIGHT_NAME);
@@ -213,9 +217,9 @@ GrGLProgram* GrGLProgramBuilder::finalize() {
fVS.fCompilerStrings.count(),
settings,
&glsl);
- if (!this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID,
- GR_GL_VERTEX_SHADER, &shadersToDelete, settings,
- inputs)) {
+ if (!vs || !this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID,
+ GR_GL_VERTEX_SHADER, &shadersToDelete, settings,
+ inputs)) {
this->cleanupProgram(programID, shadersToDelete);
return nullptr;
}
@@ -238,13 +242,12 @@ GrGLProgram* GrGLProgramBuilder::finalize() {
fGS.fCompilerStrings.count(),
settings,
&glsl);
- if (!this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID,
- GR_GL_GEOMETRY_SHADER, &shadersToDelete, settings,
- inputs)) {
+ if (!gs || !this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID,
+ GR_GL_GEOMETRY_SHADER, &shadersToDelete,
+ settings, inputs)) {
this->cleanupProgram(programID, shadersToDelete);
return nullptr;
}
-
}
this->bindProgramResourceLocations(programID);