app/internal/d3d11: include depth buffer in current framebuffer query

Fixes rendering on Windows. Thanks to Egon Elbre for noticing.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-03-06 14:17:53 +01:00
parent 9793fcfcd0
commit 44991f355c
2 changed files with 13 additions and 7 deletions
+6 -3
View File
@@ -279,12 +279,15 @@ func NewBackend(d *Device) (*Backend, error) {
}
func (b *Backend) BeginFrame() backend.Framebuffer {
renderTarget := b.dev.ctx.OMGetRenderTargets()
renderTarget, depthView := b.dev.ctx.OMGetRenderTargets()
// Assume someone else is holding on to the render targets.
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}
if depthView != nil {
_IUnknownRelease(unsafe.Pointer(depthView), depthView.vtbl.Release)
}
return &Framebuffer{dev: b.dev, renderTarget: renderTarget, depthView: depthView, foreign: true}
}
func (b *Backend) EndFrame() {
+7 -4
View File
@@ -1197,18 +1197,21 @@ func (c *_ID3D11DeviceContext) IASetPrimitiveTopology(mode uint32) {
)
}
func (c *_ID3D11DeviceContext) OMGetRenderTargets() *_ID3D11RenderTargetView {
var target *_ID3D11RenderTargetView
func (c *_ID3D11DeviceContext) OMGetRenderTargets() (*_ID3D11RenderTargetView, *_ID3D11DepthStencilView) {
var (
target *_ID3D11RenderTargetView
depthStencilView *_ID3D11DepthStencilView
)
syscall.Syscall6(
c.vtbl.OMGetRenderTargets,
4,
uintptr(unsafe.Pointer(c)),
1, // NumViews
uintptr(unsafe.Pointer(&target)),
0, // pDepthStencilView
uintptr(unsafe.Pointer(&depthStencilView)),
0, 0,
)
return target
return target, depthStencilView
}
func (c *_ID3D11DeviceContext) OMSetRenderTargets(target *_ID3D11RenderTargetView, depthStencil *_ID3D11DepthStencilView) {