From caecd81f4e9c2f8b3c7224956fc65538220b18aa Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sat, 30 Mar 2024 20:08:06 +0900 Subject: [PATCH] Revert "internal/graphicsdriver/directx: add 'tearing' for EBITENGINE_DIRECTX" This reverts commit b6252a41f2ec14c6ff4568717df2e994e909cf20. Reason: We need more investigation about tearing and vsync=off Updates #2858 --- doc.go | 1 - .../directx/graphics11_windows.go | 4 ++-- .../directx/graphics12_windows.go | 8 +++---- .../directx/graphics_windows.go | 23 ++++++++----------- 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/doc.go b/doc.go index aa3f16b9c..aebd8ad2f 100644 --- a/doc.go +++ b/doc.go @@ -81,7 +81,6 @@ // // "debug": Use a debug layer. // "warp": Use WARP (i.e. software rendering). -// "tearing": Allow tearing when vsync is off. // "version=VERSION": Specify a DirectX version (e.g. 11). // "featurelevel=FEATURE_LEVEL": Specify a feature level (e.g. 11_0). This is for DirectX 12. // diff --git a/internal/graphicsdriver/directx/graphics11_windows.go b/internal/graphicsdriver/directx/graphics11_windows.go index 8aa7047c0..807009046 100644 --- a/internal/graphicsdriver/directx/graphics11_windows.go +++ b/internal/graphicsdriver/directx/graphics11_windows.go @@ -153,7 +153,7 @@ type graphics11 struct { newScreenHeight int } -func newGraphics11(useWARP bool, useDebugLayer bool, allowTearing bool) (gr11 *graphics11, ferr error) { +func newGraphics11(useWARP bool, useDebugLayer bool) (gr11 *graphics11, ferr error) { g := &graphics11{ vsyncEnabled: true, } @@ -207,7 +207,7 @@ func newGraphics11(useWARP bool, useDebugLayer bool, allowTearing bool) (gr11 *g } dxgiFactory := (*_IDXGIFactory)(df) - gi, err := newGraphicsInfra(dxgiFactory, allowTearing) + gi, err := newGraphicsInfra(dxgiFactory) if err != nil { return nil, err } diff --git a/internal/graphicsdriver/directx/graphics12_windows.go b/internal/graphicsdriver/directx/graphics12_windows.go index 068173f2d..69740b90e 100644 --- a/internal/graphicsdriver/directx/graphics12_windows.go +++ b/internal/graphicsdriver/directx/graphics12_windows.go @@ -106,7 +106,7 @@ type graphics12 struct { pipelineStates } -func newGraphics12(useWARP bool, useDebugLayer bool, allowTearing bool, featureLevel _D3D_FEATURE_LEVEL) (*graphics12, error) { +func newGraphics12(useWARP bool, useDebugLayer bool, featureLevel _D3D_FEATURE_LEVEL) (*graphics12, error) { g := &graphics12{} // Initialize not only a device but also other members like a fence. @@ -116,7 +116,7 @@ func newGraphics12(useWARP bool, useDebugLayer bool, allowTearing bool, featureL return nil, err } } else { - if err := g.initializeDesktop(useWARP, useDebugLayer, allowTearing, featureLevel); err != nil { + if err := g.initializeDesktop(useWARP, useDebugLayer, featureLevel); err != nil { return nil, err } } @@ -124,7 +124,7 @@ func newGraphics12(useWARP bool, useDebugLayer bool, allowTearing bool, featureL return g, nil } -func (g *graphics12) initializeDesktop(useWARP bool, useDebugLayer bool, allowTearing bool, featureLevel _D3D_FEATURE_LEVEL) (ferr error) { +func (g *graphics12) initializeDesktop(useWARP bool, useDebugLayer bool, featureLevel _D3D_FEATURE_LEVEL) (ferr error) { if err := d3d12.Load(); err != nil { return err } @@ -152,7 +152,7 @@ func (g *graphics12) initializeDesktop(useWARP bool, useDebugLayer bool, allowTe if err != nil { return err } - gi, err := newGraphicsInfra(f, allowTearing) + gi, err := newGraphicsInfra(f) if err != nil { return err } diff --git a/internal/graphicsdriver/directx/graphics_windows.go b/internal/graphicsdriver/directx/graphics_windows.go index a87be91bb..87f122c92 100644 --- a/internal/graphicsdriver/directx/graphics_windows.go +++ b/internal/graphicsdriver/directx/graphics_windows.go @@ -81,7 +81,6 @@ func NewGraphics() (graphicsdriver.Graphics, error) { var useWARP bool var useDebugLayer bool - var allowTearing bool version := 11 // Specify the feature level 11 by default. @@ -109,8 +108,6 @@ func NewGraphics() (graphicsdriver.Graphics, error) { useWARP = true case t == "debug": useDebugLayer = true - case t == "tearing": - allowTearing = true case strings.HasPrefix(t, "version="): v, err := strconv.Atoi(t[len("version="):]) if err != nil { @@ -133,13 +130,13 @@ func NewGraphics() (graphicsdriver.Graphics, error) { switch version { case 11: - g, err := newGraphics11(useWARP, useDebugLayer, allowTearing) + g, err := newGraphics11(useWARP, useDebugLayer) if err != nil { return nil, err } return g, nil case 12: - g, err := newGraphics12(useWARP, useDebugLayer, allowTearing, featureLevel) + g, err := newGraphics12(useWARP, useDebugLayer, featureLevel) if err != nil { return nil, err } @@ -166,21 +163,19 @@ type graphicsInfra struct { } // newGraphicsInfra takes the ownership of the given factory. -func newGraphicsInfra(factory *_IDXGIFactory, allowTearing bool) (*graphicsInfra, error) { +func newGraphicsInfra(factory *_IDXGIFactory) (*graphicsInfra, error) { g := &graphicsInfra{ factory: factory, } runtime.SetFinalizer(g, (*graphicsInfra).release) - if allowTearing { - if f, err := g.factory.QueryInterface(&_IID_IDXGIFactory5); err == nil && f != nil { - factory := (*_IDXGIFactory5)(f) - defer factory.Release() + if f, err := g.factory.QueryInterface(&_IID_IDXGIFactory5); err == nil && f != nil { + factory := (*_IDXGIFactory5)(f) + defer factory.Release() - var allowTearing int32 - if err := factory.CheckFeatureSupport(_DXGI_FEATURE_PRESENT_ALLOW_TEARING, unsafe.Pointer(&allowTearing), uint32(unsafe.Sizeof(allowTearing))); err == nil && allowTearing != 0 { - g.allowTearing = true - } + var allowTearing int32 + if err := factory.CheckFeatureSupport(_DXGI_FEATURE_PRESENT_ALLOW_TEARING, unsafe.Pointer(&allowTearing), uint32(unsafe.Sizeof(allowTearing))); err == nil && allowTearing != 0 { + g.allowTearing = true } }