app/internal/d3d11,gpu/gl: simplify BeginFrame implementations

BeginFrame returns the output framebuffer, and need not be as general
as the newly unexported currentFramebuffer methods.

No functional change.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-03-04 14:01:41 +01:00
parent be04dfae83
commit 3627df7efa
2 changed files with 10 additions and 21 deletions
+7 -14
View File
@@ -279,7 +279,12 @@ func NewBackend(d *Device) (*Backend, error) {
}
func (b *Backend) BeginFrame() backend.Framebuffer {
return b.currentFramebuffer()
renderTarget := b.dev.ctx.OMGetRenderTargets()
if renderTarget != nil {
// Assume someone else is holding on to it.
_IUnknownRelease(unsafe.Pointer(renderTarget), renderTarget.vtbl.Release)
}
return &Framebuffer{dev: b.dev, renderTarget: renderTarget, foreign: true}
}
func (b *Backend) EndFrame() {
@@ -373,18 +378,6 @@ 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 {
renderTarget := b.dev.ctx.OMGetRenderTargets()
if renderTarget != nil {
// Assume someone else is holding on to it.
_IUnknownRelease(unsafe.Pointer(renderTarget), renderTarget.vtbl.Release)
}
if b.fbo != nil && renderTarget == b.fbo.renderTarget {
return b.fbo
}
return &Framebuffer{dev: b.dev, renderTarget: renderTarget, foreign: true}
}
func (b *Backend) NewFramebuffer(tex backend.Texture, depthBits int) (backend.Framebuffer, error) {
d3dtex := tex.(*Texture)
if d3dtex.bindings&backend.BufferBindingFramebuffer == 0 {
@@ -828,7 +821,7 @@ func (f *Framebuffer) Invalidate() {
func (f *Framebuffer) Release() {
if f.foreign {
panic("framebuffer not created by NewBuffer")
panic("framebuffer not created by NewFramebuffer")
}
if f.renderTarget != nil {
_IUnknownRelease(unsafe.Pointer(f.renderTarget), f.renderTarget.vtbl.Release)
+3 -7
View File
@@ -170,7 +170,8 @@ func NewBackend(ctx Context) (*Backend, error) {
func (b *Backend) BeginFrame() backend.Framebuffer {
// Assume GL state is reset between frames.
b.state = glstate{}
return b.currentFramebuffer()
fboID := glimpl.Framebuffer(b.funcs.GetBinding(glimpl.FRAMEBUFFER_BINDING))
return &gpuFramebuffer{backend: b, obj: fboID, foreign: true}
}
func (b *Backend) EndFrame() {
@@ -229,11 +230,6 @@ func (b *Backend) NewFramebuffer(tex backend.Texture, depthBits int) (backend.Fr
return fbo, nil
}
func (b *Backend) currentFramebuffer() backend.Framebuffer {
fboID := glimpl.Framebuffer(b.funcs.GetBinding(glimpl.FRAMEBUFFER_BINDING))
return &gpuFramebuffer{backend: b, obj: fboID, foreign: true}
}
func (b *Backend) NewTexture(format backend.TextureFormat, width, height int, minFilter, magFilter backend.TextureFilter, binding backend.BufferBinding) (backend.Texture, error) {
glErr(b.funcs)
tex := &gpuTexture{backend: b, obj: b.funcs.CreateTexture(), width: width, height: height}
@@ -803,7 +799,7 @@ func (f *gpuFramebuffer) Invalidate() {
func (f *gpuFramebuffer) Release() {
if f.foreign {
panic("framebuffer not created by NewBuffer")
panic("framebuffer not created by NewFramebuffer")
}
f.backend.funcs.DeleteFramebuffer(f.obj)
if f.hasDepth {