From cac3e7e110bf00b84e0a029464fff6e1b30ba661 Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Wed, 29 Sep 2021 09:15:02 +0000 Subject: [PATCH] Revert "OpenGL: delete shaders and pipelines when they are not used any longer" This reverts commit a57c1db878e2f8a7eb352c8f253db5488cdca6f6. 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 Reviewed-by: Ben Clayton Commit-Queue: Corentin Wallez --- src/dawn_native/opengl/ComputePipelineGL.cpp | 4 ---- src/dawn_native/opengl/ComputePipelineGL.h | 2 +- src/dawn_native/opengl/PipelineGL.cpp | 12 ------------ src/dawn_native/opengl/PipelineGL.h | 4 ++-- src/dawn_native/opengl/RenderPipelineGL.cpp | 1 - 5 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/dawn_native/opengl/ComputePipelineGL.cpp b/src/dawn_native/opengl/ComputePipelineGL.cpp index e51e217a8f..fb333444b3 100644 --- a/src/dawn_native/opengl/ComputePipelineGL.cpp +++ b/src/dawn_native/opengl/ComputePipelineGL.cpp @@ -27,10 +27,6 @@ namespace dawn_native { namespace opengl { return pipeline; } - ComputePipeline::~ComputePipeline() { - DeleteProgram(ToBackend(GetDevice())->gl); - } - MaybeError ComputePipeline::Initialize() { DAWN_TRY( InitializeBase(ToBackend(GetDevice())->gl, ToBackend(GetLayout()), GetAllStages())); diff --git a/src/dawn_native/opengl/ComputePipelineGL.h b/src/dawn_native/opengl/ComputePipelineGL.h index dd5c0b3f36..8e7744060b 100644 --- a/src/dawn_native/opengl/ComputePipelineGL.h +++ b/src/dawn_native/opengl/ComputePipelineGL.h @@ -35,7 +35,7 @@ namespace dawn_native { namespace opengl { private: using ComputePipelineBase::ComputePipelineBase; - ~ComputePipeline() override; + ~ComputePipeline() override = default; MaybeError Initialize() override; }; diff --git a/src/dawn_native/opengl/PipelineGL.cpp b/src/dawn_native/opengl/PipelineGL.cpp index 83b0e81147..8ec9d61c82 100644 --- a/src/dawn_native/opengl/PipelineGL.cpp +++ b/src/dawn_native/opengl/PipelineGL.cpp @@ -87,7 +87,6 @@ namespace dawn_native { namespace opengl { // Create an OpenGL shader for each stage and gather the list of combined samplers. PerStage combinedSamplers; bool needsDummySampler = false; - std::vector glShaders; for (SingleShaderStage stage : IterateStages(activeStages)) { const ShaderModule* module = ToBackend(stages[stage].module.Get()); std::string glsl; @@ -97,7 +96,6 @@ namespace dawn_native { namespace opengl { GLuint shader; DAWN_TRY_ASSIGN(shader, CreateShader(gl, GLShaderType(stage), glsl.c_str())); gl.AttachShader(mProgram, shader); - glShaders.push_back(shader); } if (needsDummySampler) { @@ -180,19 +178,9 @@ namespace dawn_native { namespace opengl { textureUnit++; } - - for (GLuint glShader : glShaders) { - gl.DetachShader(mProgram, glShader); - gl.DeleteShader(glShader); - } - return {}; } - void PipelineGL::DeleteProgram(const OpenGLFunctions& gl) { - gl.DeleteProgram(mProgram); - } - const std::vector& PipelineGL::GetTextureUnitsForSampler( GLuint index) const { ASSERT(index < mUnitsForSamplers.size()); diff --git a/src/dawn_native/opengl/PipelineGL.h b/src/dawn_native/opengl/PipelineGL.h index be6c1dd553..e21060696a 100644 --- a/src/dawn_native/opengl/PipelineGL.h +++ b/src/dawn_native/opengl/PipelineGL.h @@ -47,12 +47,12 @@ namespace dawn_native { namespace opengl { const std::vector& GetTextureUnitsForTextureView(GLuint index) const; GLuint GetProgramHandle() const; - protected: void ApplyNow(const OpenGLFunctions& gl); + + protected: MaybeError InitializeBase(const OpenGLFunctions& gl, const PipelineLayout* layout, const PerStage& stages); - void DeleteProgram(const OpenGLFunctions& gl); private: GLuint mProgram; diff --git a/src/dawn_native/opengl/RenderPipelineGL.cpp b/src/dawn_native/opengl/RenderPipelineGL.cpp index 1b4b5cee74..b6a5a4fb6f 100644 --- a/src/dawn_native/opengl/RenderPipelineGL.cpp +++ b/src/dawn_native/opengl/RenderPipelineGL.cpp @@ -238,7 +238,6 @@ namespace dawn_native { namespace opengl { const OpenGLFunctions& gl = ToBackend(GetDevice())->gl; gl.DeleteVertexArrays(1, &mVertexArrayObject); gl.BindVertexArray(0); - DeleteProgram(gl); } GLenum RenderPipeline::GetGLPrimitiveTopology() const {