gpu,gpu/backend: don't assume constant output framebuffer

Return the output framebuffer from BeginFrame, to make it clear that
it may change between frames. Delete CurrentFramebuffer which is no
longer needed.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-03-02 20:43:59 +01:00
parent 3d3ff575e3
commit 25a19481e3
5 changed files with 17 additions and 21 deletions
+5 -4
View File
@@ -274,7 +274,8 @@ func NewBackend(d *Device) (*Backend, error) {
return b, nil
}
func (b *Backend) BeginFrame() {
func (b *Backend) BeginFrame() backend.Framebuffer {
return b.currentFramebuffer()
}
func (b *Backend) EndFrame() {
@@ -368,13 +369,13 @@ func (b *Backend) NewTexture(format backend.TextureFormat, width, height int, mi
return &Texture{backend: b, format: d3dfmt, tex: tex, sampler: sampler, resView: resView, bindings: bindings, width: width, height: height}, nil
}
func (b *Backend) CurrentFramebuffer() backend.Framebuffer {
func (b *Backend) currentFramebuffer() backend.Framebuffer {
renderTarget := b.dev.ctx.OMGetRenderTargets()
if renderTarget != nil {
// Assume someone else is holding on to it.
_IUnknownRelease(unsafe.Pointer(renderTarget), renderTarget.vtbl.Release)
}
if renderTarget == b.fbo.renderTarget {
if b.fbo != nil && renderTarget == b.fbo.renderTarget {
return b.fbo
}
return &Framebuffer{dev: b.dev, renderTarget: renderTarget, foreign: true}
@@ -823,7 +824,7 @@ func (f *Framebuffer) Invalidate() {
func (f *Framebuffer) Release() {
if f.foreign {
panic("cannot release Framebuffer from CurrentFramebuffer")
panic("framebuffer not created by NewBuffer")
}
if f.renderTarget != nil {
_IUnknownRelease(unsafe.Pointer(f.renderTarget), f.renderTarget.vtbl.Release)