Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Narbacular Drop: Oversized Flames #2387

Closed
Sterophonick opened this issue Dec 6, 2021 · 0 comments · Fixed by #2432
Closed

Narbacular Drop: Oversized Flames #2387

Sterophonick opened this issue Dec 6, 2021 · 0 comments · Fixed by #2432
Labels

Comments

@Sterophonick
Copy link

Software information

Game name: Narbacular Drop
Settings: Default
Game Download: https://www.digipen.edu/showcase/student-games/narbacular-drop

System information

  • GPU: Mesa Intel CometLake-U GT2 (UHD Graphics)
  • Driver: Mesa 21.2.5
  • Wine version: 6.3 (Running through Proton-6.3, issue still occurs in 6.21)
  • DXVK version: v1.9.2

Apitrace file(s)

Game uses Direct3D 9
Narbacular Drop.trace.zip

Log files

Narbacular Drop_d3d9.log

Screenshots

image
image

Correct behavior

image

@K0bin K0bin added the d3d9 label Jan 10, 2022
CME42 added a commit to CME42/dxvk that referenced this issue Jan 10, 2022
misyltoad pushed a commit that referenced this issue Jan 10, 2022
TheIronWolfModding added a commit to TheIronWolfModding/dxvk that referenced this issue Jan 22, 2022
* Enabled strict float emulation for BlazBlue Centralfiction

* [dxvk] Explicitly intiialize framebuffer info

* [d3d11] Lock context before EmitCs for annotations

* [build] Update arch-mingw-github-action to v6

* Added config for James Cameron's Avatar (DX9)

* [dxgi] Fix refresh rate filtering in FindClosestMatchingMode

We need to operate on the pre-filtered list, or otherwise we may run into
problems where not all refresh rates are supported for all display modes.

* [d3d9] Always upload all managed texture mips after AddDirtyBox call

Co-authored-by: Paul Gofman <[email protected]>

* [d3d9] Update FFVS when D3DFVF_PSIZE is specified.

This fixes doitsujin#2387

* [d3d9] Dirty FF vertex shader if any  D3D9VertexDeclFlags change.

The vertex shader depends on all of these in some way.

* [meta] Release 1.9.3

* WIP

Co-authored-by: Supreeeme <[email protected]>
Co-authored-by: Philip Rebohle <[email protected]>
Co-authored-by: Joshua Ashton <[email protected]>
Co-authored-by: dosse91 <[email protected]>
Co-authored-by: Robin Kertels <[email protected]>
Co-authored-by: Paul Gofman <[email protected]>
Co-authored-by: Christopher Egert <[email protected]>
Co-authored-by: Georg Lehmann <[email protected]>
TheIronWolfModding added a commit to TheIronWolfModding/dxvk that referenced this issue Feb 19, 2022
* Enabled strict float emulation for BlazBlue Centralfiction

* [dxvk] Explicitly intiialize framebuffer info

* [d3d11] Lock context before EmitCs for annotations

* [build] Update arch-mingw-github-action to v6

* Added config for James Cameron's Avatar (DX9)

* [dxgi] Fix refresh rate filtering in FindClosestMatchingMode

We need to operate on the pre-filtered list, or otherwise we may run into
problems where not all refresh rates are supported for all display modes.

* [d3d9] Always upload all managed texture mips after AddDirtyBox call

Co-authored-by: Paul Gofman <[email protected]>

* [d3d9] Update FFVS when D3DFVF_PSIZE is specified.

This fixes doitsujin#2387

* [d3d9] Dirty FF vertex shader if any  D3D9VertexDeclFlags change.

The vertex shader depends on all of these in some way.

* [meta] Release 1.9.3

* WIP

* [dxvk] Display allocated memory in HUD again

* [dxvk] Free empty memory chunks

* [dxvk] Replace allocation priority with allocation flags

* [dxvk] Be smarter about which chunks to free

Freeing all empty chunks immediately may cause issues if an app constantly
allocates and frees a small number of resources that don't fit into any
existing chunk, so try to keep one around. Aggressively free everything
under memory pressure if necessary.

* [dxvk] Reduce size up to which device-local buffers can be invalidated

* [dxvk] Reduce maximum size of multi-slice buffers

* [util] Enable performance options for God of War

* [util] Disable NVAPI hack for God of War

Needed for DLSS support.

* [dxvk] Don't shrink HVV heap if it's the main video memory heap

May fix issues on RBAR-enabled Nvidia systems.

* [d3d9] Enable strict float emulation by default for new radv.

* [d3d9] Fix float emulation detection.

ffs

* WIP

* [dxvk] Remove options to disable OpenVR/XR support

No longer needed since we no longer load vrclient.so into the game's
process just to query extensions.

* [meta] Release 1.9.4

* [d3d11] Add FL12+ enum names

* [d3d9] Only enable FETCH4 for single channel formats

* [build] MSVC CI

* [dxvk] Fix MSVC build.

* [dxvk] Rework driver version fixup to use driver ID instead of vendor ID

* [dxvk] Add version fixup for proprietary Intel drivers

* [d3d11] Add D3D11On12CreateDevice stub

* [d3d11] Remove unused parameters from deferred context Map functions

* [d3d11] Fix confusing code in deferred context Map

This did work, but we shouldn't use an object that was already moved.

* [d3d11] Implement suballocation from staging buffer for small updates

* [d3d11] Optimize UpdateSubresource for small buffer updates

Some games use UpdateSubresource to upload constant buffers in
between draws, so this path should be as fast as possible.

Also fixes a potential issue when using D3D11_COPY_NO_OVERWRITE
on deferred contexts, since the Map requirements don't hold here.

* [build] Use MSBuild backend on Windows CI

Also merge Prepare and Build steps to prevent environment variable leaks and apply some minor formatting changes.

* [build] Avoid meson warning.

WARNING: You should add the boolean check kwarg to the run_command call.
         It currently defaults to false,
         but it will default to true in future releases of meson.

Stupid change, stupid warning, stupid fix.

* [util] Enable apitrace mode for AoE2 Definitive Edition

Fixes doitsujin#2491.

* [dxvk] Introduce sequence numbers for CS submissions

* [dxvk] Reorganize DxvkBuffer data structure

Should hopefully reduce CPU cache conflicts.

* [d3d11] Add ResourceAddRef/ReleasePrivate with known resource type

* [d3d11] Add D3D11ResourceRef

Implements private ref counting for arbitrary resource types.

* [d3d11] Store buffer map mode in D3D11Buffer

Matches what we do for textures, and makes it so that we don't
have to dereference the resource pointer to figure this out.

* [d3d11] Store ID3D11Resource interface in D3D11CommonTexture

Going full circle here, but it's actually useful now.

* [d3d11] Add method to query D3D11 resource dimension from texture

* [d3d11] Track last staging resource usage with a sequence number

* [d3d11] Increment sequence number when submitting command lists

This does not do any tracking on deferred contexts just yet.

* [d3d11] Implement sequence number tracking on deferred contexts

* [d3d11] Track resources when dispatching Cubin shaders as well

* [d3d11] Synchronize only to given sequence number in WaitForResources

Avoids costly thread synchronization when mapping staging resources
for reading, as well as some other scenarios.

* [d3d11] Optimize Unmap on immediate contexts

* [d3d11] Change D3D11ResourceRef constructor to be more useful

* [d3d11] Further simplify D3D11DeferredContextMapEntry

And no longer create a strong reference to the given resource.

* [d3d11] Avoid GPU synchronization on mapping buffers when possible

* [d3d11] Avoid GPU synchronization on mapping images when possible

* [dxvk] Expose a way to increment stat counters

In case the counters come from external sources.

* [dxvk] Store DXVK device inside DxvkCsThread object

* [dxvk] Add CS thread stat counters

* [hud] Add HUD item to show CS thread stats

* [d3d11] Only use updateBuffer for very small buffer updates

Otherwise we may end up with significant copy overhead on the CS thread.

* [d3d9] Exit early in ProcessVertices if the vertex count is 0

We don't want to pass a zero-sized copy to the backend.

* [dxvk] Repurpose updateBuffer

Only allow it for very small updates where scheduling a copy command would
likely be slower. Some drivers have special paths for tiny updates.

* [dxvk] Introduce tryInvalidateDeviceLocalBuffer

* [dxvk] Discard buffer slice in copyBuffer if possible

* [dxvk] Introduce DxvkStagingBuffer

* [d3d11] Use DxvkStagingBuffer in D3D11DeviceContext

* [dxvk] Use staging buffer for gamma ramp uploads

* [dxvk] Remove unused updateImage function

* [dxvk] Use DxvkStagingBuffer in DxvkContext

* [dxvk] Remove DxvkStagingDataAlloc

Unused and overly clunky.

* [dxvk] Allow large sysmem allocations on 64-bit platforms again

Since we frequently discard staging buffers now, having larger chunks
is actually beneficial again.

* [dxvk] Introduce transient memory flag for staging buffers

Potentially reduces fragmentation by putting short-lived staging buffers
and sysmem resources created by the application into different memory pools.

* [dxvk] Rework HUD font texture initialization

We really shouldn't need a separate context for this.

* [dxvk] Remove unused trimStagingBuffers method

* [dxvk] Don't suballocate large staging buffer allocations

Otherwise we'll risk wasting almost half the staging buffer memory.
Creating a temporary buffer is cheap enough, so just do that.

* [dxvk] Reduce context staging buffer size to 4 MiB

Same idea as before, just create a temporary buffer for larger resources.

This can avoid frequent Vulkan memory allocations and deallocations since
many small buffers are more likely to fit into a single memory chunk than
a small number of large buffers, thus reducing the overall memory footprint.

* [dxvk] Add stat counter for pipeline barriers

* [dxvk] Display barrier count in draw call HUD item

* [dxvk] Introduce DxvkDevice::waitForResource

Blocks on the queue thread's condition variable instead of busy-waiting,
and tracks synchronization with new stat counters. Cleanup is rearranged
to minimize delays before signals and resources are notified.

* [d3d11] Use new waitForResource method

* [d3d9] Use new waitForResource method

* [hud] Display GPU synchronization in HUD

* [d3d11] Add d3d11.maxImplicitDiscardSize option

* [util] Bump maxImplicitDiscardSize for Quantum Break

Otherwise we're synchronizing and frame times are garbage.

* [util] Enable apitrace mode for Nier Replicant

Game is broken and reads back dynamic vertex/index buffers over PCI-E.

* [d3d11] Handle subresource field in copy/move operations

Derp.

* [d3d11] Enable stall tracking for timestamp queries

Because games are dumb and don't understand that the GPU doesn't
work synchronously with the render thread.

* [d3d11] Add implicit flush after tracking sequence numbers

Flushing early when using a tracked resource may reduce stalls.

* [dxvk] Repurpose initImage method

This is now supposed to clear images of any type, and only to be
used for resource initialization after creation.

* [d3d11] Use initImage to clear uninitialized image resources

* [d3d9] Use initImage to clear uninitialized image resources

* [dxvk] Remove unused clear methods

* [dxvk] Add command buffer parameter to cmdFillBuffer

* [dxvk] Add initBuffer method

* [d3d11] Use initBuffer method

* [d3d9] Use initBuffer method

* [dxvk] Track buffer as used in initBuffer

Git ate my commit when I was testing something...

* [d3d11] Consider empty CS chunks when tracking resources

Avoids deadlocks if we track multiple resources and flush in between.

* [dxvk] Free existing staging buffer before creating a new one

* WIP

* WIP

Co-authored-by: Supreeeme <[email protected]>
Co-authored-by: Philip Rebohle <[email protected]>
Co-authored-by: Joshua Ashton <[email protected]>
Co-authored-by: dosse91 <[email protected]>
Co-authored-by: Robin Kertels <[email protected]>
Co-authored-by: Paul Gofman <[email protected]>
Co-authored-by: Christopher Egert <[email protected]>
Co-authored-by: Georg Lehmann <[email protected]>
Co-authored-by: Krzysztof Bogacki <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants