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 {