mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-02-11 10:33:16 +01:00
internal/graphicsdriver/directx: bug fix: processtest failures
The command allocators should be reset only when the frame index was updated. Closes #2249
This commit is contained in:
parent
5459036d1c
commit
7c6466cfa0
@ -135,6 +135,7 @@ type Graphics struct {
|
|||||||
window windows.HWND
|
window windows.HWND
|
||||||
|
|
||||||
frameIndex int
|
frameIndex int
|
||||||
|
prevBeginFrameIndex int
|
||||||
|
|
||||||
// frameStarted is true since Begin until End with present
|
// frameStarted is true since Begin until End with present
|
||||||
frameStarted bool
|
frameStarted bool
|
||||||
@ -694,6 +695,8 @@ func (g *Graphics) resizeSwapChainDesktop(width, height int) error {
|
|||||||
// TODO: Reset 0 on Xbox
|
// TODO: Reset 0 on Xbox
|
||||||
g.frameIndex = int(g.swapChain.GetCurrentBackBufferIndex())
|
g.frameIndex = int(g.swapChain.GetCurrentBackBufferIndex())
|
||||||
|
|
||||||
|
// TODO: Are these resetting necessary?
|
||||||
|
|
||||||
if err := g.drawCommandAllocators[g.frameIndex].Reset(); err != nil {
|
if err := g.drawCommandAllocators[g.frameIndex].Reset(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -751,14 +754,17 @@ func (g *Graphics) Begin() error {
|
|||||||
}
|
}
|
||||||
g.frameStarted = true
|
g.frameStarted = true
|
||||||
|
|
||||||
|
if g.prevBeginFrameIndex != g.frameIndex {
|
||||||
if err := g.drawCommandAllocators[g.frameIndex].Reset(); err != nil {
|
if err := g.drawCommandAllocators[g.frameIndex].Reset(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := g.drawCommandList.Reset(g.drawCommandAllocators[g.frameIndex], nil); err != nil {
|
if err := g.copyCommandAllocators[g.frameIndex].Reset(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
g.prevBeginFrameIndex = g.frameIndex
|
||||||
|
|
||||||
if err := g.copyCommandAllocators[g.frameIndex].Reset(); err != nil {
|
if err := g.drawCommandList.Reset(g.drawCommandAllocators[g.frameIndex], nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := g.copyCommandList.Reset(g.copyCommandAllocators[g.frameIndex], nil); err != nil {
|
if err := g.copyCommandList.Reset(g.copyCommandAllocators[g.frameIndex], nil); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user