diff --git a/app/internal/d3d11/backend_windows.go b/app/internal/d3d11/backend_windows.go index c8375ccb..66e32989 100644 --- a/app/internal/d3d11/backend_windows.go +++ b/app/internal/d3d11/backend_windows.go @@ -258,19 +258,19 @@ func NewBackend(d *Device) (*Backend, error) { caps.MaxTextureSize = 4096 } b := &Backend{dev: d, caps: caps} + // Enable depth mask to match OpenGL. + b.depthState.mask = true // Disable backface culling to match OpenGL. state, err := b.dev.dev.CreateRasterizerState(&_D3D11_RASTERIZER_DESC{ CullMode: _D3D11_CULL_NONE, FillMode: _D3D11_FILL_SOLID, DepthClipEnable: 1, }) - // Enable depth mask to match OpenGL. - b.depthState.mask = true if err != nil { return nil, err } + defer _IUnknownRelease(unsafe.Pointer(state), state.vtbl.Release) b.dev.ctx.RSSetState(state) - _IUnknownRelease(unsafe.Pointer(state), state.vtbl.Release) return b, nil } diff --git a/app/internal/window/d3d11_windows.go b/app/internal/window/d3d11_windows.go index 137505cd..6ce7a497 100644 --- a/app/internal/window/d3d11_windows.go +++ b/app/internal/window/d3d11_windows.go @@ -46,18 +46,20 @@ func (c *d3d11Context) Backend() (backend.Device, error) { } func (c *d3d11Context) Present() error { - if err := c.swchain.Present(); err != nil { - if err, ok := err.(d3d11.ErrorCode); ok { - switch err.Code { - case d3d11.DXGI_STATUS_OCCLUDED: - // Ignore - return nil - case d3d11.DXGI_ERROR_DEVICE_RESET, d3d11.DXGI_ERROR_DEVICE_REMOVED, d3d11.D3DDDIERR_DEVICEREMOVED: - return ErrDeviceLost - } + err := c.swchain.Present() + if err == nil { + return nil + } + if err, ok := err.(d3d11.ErrorCode); ok { + switch err.Code { + case d3d11.DXGI_STATUS_OCCLUDED: + // Ignore + return nil + case d3d11.DXGI_ERROR_DEVICE_RESET, d3d11.DXGI_ERROR_DEVICE_REMOVED, d3d11.D3DDDIERR_DEVICEREMOVED: + return ErrDeviceLost } } - return nil + return err } func (c *d3d11Context) MakeCurrent() error {