From 89ab5ebf4f6b661305ac631be4a0223c6480d6b1 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Wed, 21 Apr 2021 12:53:26 +0200 Subject: [PATCH] gpu: [compute] unify resource cleanup Rename all resource release methods to "Release", and release all resources with a slice and loop. Signed-off-by: Elias Naur --- gpu/compute.go | 63 ++++++++++++++++++-------------------------------- gpu/gpu.go | 2 +- gpu/timer.go | 2 +- 3 files changed, 25 insertions(+), 42 deletions(-) diff --git a/gpu/compute.go b/gpu/compute.go index ff0b333e..0d436478 100644 --- a/gpu/compute.go +++ b/gpu/compute.go @@ -873,7 +873,10 @@ func (g *compute) resizeOutput(size image.Point) error { } func (g *compute) Release() { - progs := []driver.Program{ + type resource interface { + Release() + } + res := []resource{ g.programs.elements, g.programs.tileAlloc, g.programs.pathCoarse, @@ -881,46 +884,26 @@ func (g *compute) Release() { g.programs.binning, g.programs.coarse, g.programs.kernel4, + g.output.blitProg, + &g.buffers.scene, + &g.buffers.state, + &g.buffers.memory, + g.buffers.config, + g.output.image, + g.images.tex, + g.materials.layout, + g.materials.prog, + g.materials.fbo, + g.materials.tex, + &g.materials.buffer, + g.materials.uniBuf, + g.timers.t, } - if p := g.output.blitProg; p != nil { - p.Release() - } - for _, p := range progs { - if p != nil { - p.Release() + for _, r := range res { + if r != nil { + r.Release() } } - g.buffers.scene.release() - g.buffers.state.release() - g.buffers.memory.release() - if b := g.buffers.config; b != nil { - b.Release() - } - if g.output.image != nil { - g.output.image.Release() - } - if g.images.tex != nil { - g.images.tex.Release() - } - if g.materials.layout != nil { - g.materials.layout.Release() - } - if g.materials.prog != nil { - g.materials.prog.Release() - } - if g.materials.fbo != nil { - g.materials.fbo.Release() - } - if g.materials.tex != nil { - g.materials.tex.Release() - } - g.materials.buffer.release() - if b := g.materials.uniBuf; b != nil { - b.Release() - } - if g.timers.t != nil { - g.timers.t.release() - } *g = compute{} } @@ -935,7 +918,7 @@ func (g *compute) bindBuffers() { bindStorageBuffers(g.programs.kernel4, g.buffers.memory.buffer, g.buffers.config) } -func (b *sizedBuffer) release() { +func (b *sizedBuffer) Release() { if b.buffer == nil { return } @@ -948,7 +931,7 @@ func (b *sizedBuffer) ensureCapacity(ctx driver.Device, binding driver.BufferBin return nil } if b.buffer != nil { - b.release() + b.Release() } buf, err := ctx.NewBuffer(binding, size) if err != nil { diff --git a/gpu/gpu.go b/gpu/gpu.go index 38c8faa4..fbe9bebc 100644 --- a/gpu/gpu.go +++ b/gpu/gpu.go @@ -398,7 +398,7 @@ func (g *gpu) Release() { g.drawOps.pathCache.release() g.cache.release() if g.timers != nil { - g.timers.release() + g.timers.Release() } g.ctx.Release() } diff --git a/gpu/timer.go b/gpu/timer.go index 01367c84..c1e32276 100644 --- a/gpu/timer.go +++ b/gpu/timer.go @@ -83,7 +83,7 @@ func (t *timers) ready() bool { return t.backend.IsTimeContinuous() } -func (t *timers) release() { +func (t *timers) Release() { if t == nil { return }