[Bug 42738] New: Annoying flickering in Renegade Ops ( needs StrictDrawOrdering=enabled to remove it)

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Mar 30 00:33:49 CDT 2017


https://bugs.winehq.org/show_bug.cgi?id=42738

            Bug ID: 42738
           Summary: Annoying flickering in Renegade Ops (needs
                    StrictDrawOrdering=enabled to remove it)
           Product: Wine
           Version: 2.1
          Hardware: x86
               URL: http://store.steampowered.com/app/99300/
                OS: Linux
            Status: NEW
          Keywords: regression
          Severity: normal
          Priority: P2
         Component: directx-d3d
          Assignee: wine-bugs at winehq.org
          Reporter: gyebro69 at gmail.com
                CC: hverbeet at gmail.com
   Regression SHA1: 602a23a60aaab164acb8a2767094d545172ab4cf
      Distribution: ---

Created attachment 57732
  --> https://bugs.winehq.org/attachment.cgi?id=57732
terminal output

This is a DX10 game and needs native d3dcompiler_43 and d3dx10_42 to start.
>From the opening videos throughout the menus and in the main game the screen is
flickering heavily.
Changing in-game options e.g. screen resolution, MSAA, Vsync doesn't remove
this annoyance.

The problem doesn't occur in Wine Staging when CSMT is enabled or when
StrictDrawOrdering is enabled in pure Wine.

What makes this bug different from other similar issues reported here is that
that the problem is fairly new, there was no need to enable the
StrictDrawOrdering in the registry to avoid the screen flickering until

commit 602a23a60aaab164acb8a2767094d545172ab4cf
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Fri Jan 27 11:36:31 2017 +0100

    wined3d: Just use glBufferSubData() in buffer_direct_upload().

    It might seem like a good idea to try to use glMapBufferRange() in
    buffer_direct_upload(), but it really isn't. The interesting cases for
    glMapBufferRange() are GL_MAP_INVALIDATE_BUFFER_BIT or
    GL_MAP_UNSYNCHRONIZED_BIT, but the only way for those to be set here
    would be for the buffer to be mapped with WINED3D_MAP_DISCARD or
    WINED3D_MAP_NOOVERWRITE before the buffer object was created. In that
    case the GPU is obviously not using the buffer object, so
    glMapBufferRange() doesn't help. On the other hand, if the buffer is
    currently in use by the application and neither WINED3D_MAP_DISCARD nor
    WINED3D_MAP_NOOVERWRITE is set, glMapBufferRange() would need to wait
    for the GPU to finish using the buffer object, while glBufferSubData()
    may decide not to.

With the previous commit there is no flickering at all.

No demo version available, let me know if you need debug logs.

wine-2.4-256-g4bfa0d829f
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 730/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 378.13
OpenGL core profile shading language version string: 4.50 NVIDIA

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list