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:
parent
bc207f7193
commit
cac3e7e110
|
@ -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()));
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue