Revert "OpenGL: delete shaders and pipelines when they are not used any longer"

This reverts commit a57c1db878.

It produces a GL_INVALID_VALUE in ColorStateTest.ColorWriteMask

BUG=dawn:529

Change-Id: I3511057daf24baaf895b86cbda2a3a21e58d77fb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/65384
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Corentin Wallez 2021-09-29 09:15:02 +00:00 committed by Dawn LUCI CQ
parent bc207f7193
commit cac3e7e110
5 changed files with 3 additions and 20 deletions

View File

@ -27,10 +27,6 @@ namespace dawn_native { namespace opengl {
return pipeline; return pipeline;
} }
ComputePipeline::~ComputePipeline() {
DeleteProgram(ToBackend(GetDevice())->gl);
}
MaybeError ComputePipeline::Initialize() { MaybeError ComputePipeline::Initialize() {
DAWN_TRY( DAWN_TRY(
InitializeBase(ToBackend(GetDevice())->gl, ToBackend(GetLayout()), GetAllStages())); InitializeBase(ToBackend(GetDevice())->gl, ToBackend(GetLayout()), GetAllStages()));

View File

@ -35,7 +35,7 @@ namespace dawn_native { namespace opengl {
private: private:
using ComputePipelineBase::ComputePipelineBase; using ComputePipelineBase::ComputePipelineBase;
~ComputePipeline() override; ~ComputePipeline() override = default;
MaybeError Initialize() override; MaybeError Initialize() override;
}; };

View File

@ -87,7 +87,6 @@ namespace dawn_native { namespace opengl {
// Create an OpenGL shader for each stage and gather the list of combined samplers. // Create an OpenGL shader for each stage and gather the list of combined samplers.
PerStage<CombinedSamplerInfo> combinedSamplers; PerStage<CombinedSamplerInfo> combinedSamplers;
bool needsDummySampler = false; bool needsDummySampler = false;
std::vector<GLuint> glShaders;
for (SingleShaderStage stage : IterateStages(activeStages)) { for (SingleShaderStage stage : IterateStages(activeStages)) {
const ShaderModule* module = ToBackend(stages[stage].module.Get()); const ShaderModule* module = ToBackend(stages[stage].module.Get());
std::string glsl; std::string glsl;
@ -97,7 +96,6 @@ namespace dawn_native { namespace opengl {
GLuint shader; GLuint shader;
DAWN_TRY_ASSIGN(shader, CreateShader(gl, GLShaderType(stage), glsl.c_str())); DAWN_TRY_ASSIGN(shader, CreateShader(gl, GLShaderType(stage), glsl.c_str()));
gl.AttachShader(mProgram, shader); gl.AttachShader(mProgram, shader);
glShaders.push_back(shader);
} }
if (needsDummySampler) { if (needsDummySampler) {
@ -180,19 +178,9 @@ namespace dawn_native { namespace opengl {
textureUnit++; textureUnit++;
} }
for (GLuint glShader : glShaders) {
gl.DetachShader(mProgram, glShader);
gl.DeleteShader(glShader);
}
return {}; return {};
} }
void PipelineGL::DeleteProgram(const OpenGLFunctions& gl) {
gl.DeleteProgram(mProgram);
}
const std::vector<PipelineGL::SamplerUnit>& PipelineGL::GetTextureUnitsForSampler( const std::vector<PipelineGL::SamplerUnit>& PipelineGL::GetTextureUnitsForSampler(
GLuint index) const { GLuint index) const {
ASSERT(index < mUnitsForSamplers.size()); ASSERT(index < mUnitsForSamplers.size());

View File

@ -47,12 +47,12 @@ namespace dawn_native { namespace opengl {
const std::vector<GLuint>& GetTextureUnitsForTextureView(GLuint index) const; const std::vector<GLuint>& GetTextureUnitsForTextureView(GLuint index) const;
GLuint GetProgramHandle() const; GLuint GetProgramHandle() const;
protected:
void ApplyNow(const OpenGLFunctions& gl); void ApplyNow(const OpenGLFunctions& gl);
protected:
MaybeError InitializeBase(const OpenGLFunctions& gl, MaybeError InitializeBase(const OpenGLFunctions& gl,
const PipelineLayout* layout, const PipelineLayout* layout,
const PerStage<ProgrammableStage>& stages); const PerStage<ProgrammableStage>& stages);
void DeleteProgram(const OpenGLFunctions& gl);
private: private:
GLuint mProgram; GLuint mProgram;

View File

@ -238,7 +238,6 @@ namespace dawn_native { namespace opengl {
const OpenGLFunctions& gl = ToBackend(GetDevice())->gl; const OpenGLFunctions& gl = ToBackend(GetDevice())->gl;
gl.DeleteVertexArrays(1, &mVertexArrayObject); gl.DeleteVertexArrays(1, &mVertexArrayObject);
gl.BindVertexArray(0); gl.BindVertexArray(0);
DeleteProgram(gl);
} }
GLenum RenderPipeline::GetGLPrimitiveTopology() const { GLenum RenderPipeline::GetGLPrimitiveTopology() const {