1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-14 18:23:52 +01:00
Commit Graph

69 Commits

Author SHA1 Message Date
Philip Rebohle
9fee253d09
[d3d11] Add more implicit flush points
All these methods will implicitly spill the active render pass and
are typically not called very often, so we can try to keep the GPU
busy.
2018-06-27 18:34:17 +02:00
Philip Rebohle
7fa26f1c87
[d3d11] Implement render pass spilling for UAV rendering
Spilling the render pass should make shader storage buffer/image writes
visible due to how external subpass dependencies are defined. For UAV
rendering, we need to do this when changing the UAVs, even if the render
targets themselves do not change.
2018-06-15 20:49:24 +02:00
Philip Rebohle
dce2f844c0
[d3d11] Add ID3DUserDefinedAnnotation stub
We can implement this properly in the future using VK_EXT_debug_utils.
2018-06-11 14:29:47 +02:00
Philip Rebohle
c716372941
[d3d11] Move GetData implementation to D3D11ImmediateContext
It is illegal to call this method on a deferred context, so we should
filter out those calls. This allows the implementation to make use of
features specific to the immediate context.
2018-06-08 12:29:24 +02:00
Philip Rebohle
4a0c81276f
[d3d11] Implement new auto-flush heuristic 2018-06-04 23:31:49 +02:00
Philip Rebohle
a55bee9554
[d3d11] Validate render targets before setting them up
Mimicks what native D3D11 does. Fixes validation errors in
Nier:Automata with multisampling enabled in some situations.
2018-05-05 09:12:36 +02:00
Philip Rebohle
99813a7778 [d3d11] Use const ref pointer for device parameter
Closes #323.
2018-04-28 14:17:52 +02:00
Philip Rebohle
62b0e34a73
[d3d11] Implement IDXGIVkInteropDevice for D3D11Device 2018-04-20 00:19:03 +02:00
Philip Rebohle
7de27d4fd8 [d3d11] Flush immediate context on command list execution
This optimization may help keep the GPU busy in case there's
a large number of draw calls pending at the time a command
list from a deferred context is submitted for execution.
2018-04-03 19:53:37 +02:00
Philip Rebohle
17e981f360
[dxvk] Increase UAV slot count to 64 for the graphics pipeline
D3D11 raised this limit from 8 UAVs in the fragment shader to
64 UAVs in all graphics stages combined.
2018-03-21 04:56:33 +01:00
Philip Rebohle
c43702e445
[d3d11] Implement GetConstantBuffers1 methods 2018-03-18 12:45:27 +01:00
Philip Rebohle
3133e4ba35
[d3d11] Add constant buffer offsets and counts to context state 2018-03-18 12:36:45 +01:00
Mikhail Paulyshka
a3e7139c1e [d3d11] stub implementation of ID3DDeviceContext1 (#174) 2018-03-17 18:54:09 +01:00
Philip Rebohle
1af52abb67
[d3d11] Move OMSetRenderTargets optimization to D3D11ImmediateContext
We cannot call Flush() on deferred contexts anyway, so the command
submission optimization should only be applied to immediate contexts.
2018-03-17 14:09:16 +01:00
Philip Rebohle
5cb6c968b5
[d3d11] Fix RestoreUnorderedAccessViews for pixel shaders 2018-03-10 12:47:45 +01:00
Philip Rebohle
969b35c80c
[d3d11] RestoreState: Restore DS/OM/RS state objects 2018-03-10 11:56:58 +01:00
Philip Rebohle
5befa3b745
[d3d11] RestoreState: Restore IA state 2018-03-10 11:44:27 +01:00
Philip Rebohle
f15feef47f
[d3d11] RestoreState: Restore shader resource bindings 2018-03-10 11:30:32 +01:00
Philip Rebohle
5ef0f31c66
[dxvk/d3d11] Refactored resource binding
Slightly reduces overhead of D3D11 *SetShaderResources methods.
2018-03-10 11:16:52 +01:00
Philip Rebohle
b72f11a0bf
[d3d11] RestoreState: Restore vertex and index buffer bindings 2018-03-10 10:39:07 +01:00
Philip Rebohle
d1a2cff9ac
[d3d11] RestoreState: Restore framebuffer and shader bindings 2018-03-10 10:19:07 +01:00
Mikhail Paulyshka
9deb73a2a7 Add support for MSVC, attempt 3 (#130)
* [dxvk] fixes for MSVC

* nullptr -> int is illegal conversion for MSVC. nullptr was replaced with VK_NULL_HANDLE
* MSVC does not support source code strings longer than 65535 chars. String was replaced with array of chars.

* [utils] fixes for MSVC

* __mingw_uuidof() does not exists in MSVC
* apply GCC pragma only for GCC
* added missing header

* [dxbc] fixes for MSVC

*added missing header

* [dxgi] fixes for MSVC

* user __declspec(uuid()) instead of _mingw_uuidof()
* do not use DLLEXPORT macro for MSVC

* [d3d11] fixes for MSVC

* replace WINBOOL with BOOL
* do not declare D3D11 structs for MSVC
* do not use DLLEXPORT macro for MSVC

* [meson] fix build scripts for MSVC

* change cpp version from c++1z to c++latest for MSVC
* set -DOMINMAX definition for MSVC
* disable test and wine_utils for MSVC
* use .def files instead of __declspec(dllexport) for MSVC (bypass 'C2375: redefinition; different linkage' error)
* fix .def files for MinGW
* add --enable-stdcall-fixup linker flag for MinGW
2018-03-06 18:34:34 +01:00
Philip Rebohle
1cbe6829eb
Revert "Add MSVC support (#123)"
This reverts commit c63d4361a0.
2018-03-05 14:32:28 +01:00
Mikhail Paulyshka
c63d4361a0 Add MSVC support (#123)
* [utils] fixes for MSVC

* __mingw_uuidof() does not exists in MSVC
* apply GCC pragma only for GCC
* added missing header

* [dxvk] fixes for MSVC

* nullptr -> int is illegal conversion for MSVC. nullptr was replaced with VK_NULL_HANDLE
* MSVC does not support source code strings longer than 65535 chars. String was replaced with array of chars.

* [dxbc] fixes for MSVC

*added missing header

* [dxgi] fixes for MSVC

* user __declspec(uuid()) instead of _mingw_uuidof()

* [d3d11] fixes for MSVC

* replace WINBOOL with BOOL
* do not declare D3D11 structs

* [meson] fix build scripts for MSVC

* change cpp version from 1z to 17 for MSVC
* set -DOMINMAX definition for MSVC
* disable test and wine_utils for MSVC
* use .def files instead of __declspec(dllexport) (bypass 'C2375: redefinition; different linkage' error)
2018-03-05 14:28:51 +01:00
Philip Rebohle
82ac381919
[d3d11] Move framebuffer creation out of OMSetRenderTargets
This might be useful when restoring context state.
2018-03-03 22:15:41 +01:00
Philip Rebohle
b469cfac0b
[d3d11] Implemented FinishCommandList/ExecuteCommandList 2018-03-03 20:59:17 +01:00
Philip Rebohle
83458c4467
[dxvk] Separated resource view classes
Since we are doing this for UAVs already, we should be
doing this for all view classes in order to account for
the minor differences between all of them.
2018-02-05 22:35:23 +01:00
Philip Rebohle
52e8918b57
[d3d11] Added support for tessellation patch primitives 2018-01-29 11:31:00 +01:00
Philip Rebohle
6d75178870
[d3d11] Remove default sampler
This is handled in the backend now.
2018-01-28 22:05:08 +01:00
Philip Rebohle
363a0f8a6b
[d3d11] Implemented IAGetIndexBuffer an IAGetVertexBuffers
TressFX needs this.
2018-01-23 19:10:48 +01:00
Philip Rebohle
e198bd2d55
[d3d11] Sub-allocate from larger update buffers for UpdateSubresources
Reduces the allocation overhead when applications frequently
call UpdateSubresources to update small buffers and textures.
2018-01-23 16:43:55 +01:00
Philip Rebohle
3148155c35
[d3d11] Implemented CS chunk submission for deferred contexts
Changes were necessary due to the fact that chunks in deferred
contexts are not directly submitted to the CS thread.
2018-01-23 12:03:26 +01:00
Philip Rebohle
5b1311b71e
[d3d11] Added stubs for deferred contexts and command lists 2018-01-23 09:23:31 +01:00
Philip Rebohle
6ab7897127
[d3d11] Enabled command stream thread 2018-01-20 23:12:03 +01:00
Philip Rebohle
7d7cc1ceda
[d3d11] Record commands into a CS chunk 2018-01-20 22:52:18 +01:00
Philip Rebohle
4d17b1752f
[d3d11] Use EmitCs for general setup and synchronization methods 2018-01-20 18:01:43 +01:00
Philip Rebohle
62a43cbdbe
[d3d11] Add EmitCs method to D3D11DeviceContext
Subsequently, all calls into the DXVK context will be
replaced by calls to the EmitCs method with a lambda.
2018-01-20 15:29:10 +01:00
Philip Rebohle
0b426a0942
[d3d11] Added new D3D11ImmediateContext class
Initial prep work for both CSMT and Deferred Contexts.
2018-01-20 13:22:44 +01:00
Philip Rebohle
c7a9763f6d [d3d11] Re-implemented draw call-based context flush
After doing more testing, it became apparent that this
optimization is beneficial most of the time and may also
improve stability by limiting the number of commands
recorded into a single command buffer.
2018-01-13 23:09:03 +01:00
Philip Rebohle
65d84dabfe [d3d11] Removed draw-call based context flush
Combined with the recent command submission optimization,
this actually had a negative impact on performance.
2018-01-13 05:27:26 +01:00
Philip Rebohle
c1d6c20066 [d3d11] Implemented D3D11 parts of append/consume buffers 2018-01-11 12:23:55 +01:00
Philip Rebohle
1b67ffaed2 [d3d11] Added default sampler state 2018-01-10 19:07:55 +01:00
Philip Rebohle
3925675b89 [d3d11] Optimized command submission
The context will now be flushed after a render pass that consisted of
several hundreds of draw calls. This way the GPU should be kept busy.
2018-01-08 17:45:21 +01:00
Philip Rebohle
ad10ab07f8 Revert "[d3d11] Added dummy resoruce binding for buffers"
This approach will not work if the d3d11 context binds an
incompatible resouce in case the pipeline itself changes.
2018-01-08 13:01:31 +01:00
Philip Rebohle
24ad9e730c [d3d11] Added dummy resoruce binding for buffers
Fixes crashes when a D3D11 application uses unbound resources
in shaders. Allows Nier:Automata to play back cutscenes.
2018-01-08 10:17:52 +01:00
Philip Rebohle
a3fe40051f [d3d11] Initial support for unordered access views
Currently restricted to buffers on the API side. Typed UAVs
are not yet supported by the shader compiler. This is enough
to run very simple compute shaders.
2017-12-28 19:05:53 +01:00
Philip Rebohle
518b469742 [dxvk] Added command stream classes
While these are not being used as of yet, these classes can be
used to implement command stream multithreading in the future.
They are also useful to implement command lists for deferred
contexts, which are a core feature of D3D11.
2017-12-20 22:17:14 +01:00
Philip Rebohle
84190369ab [d3d11] Optimized resource binding methods 2017-12-20 17:37:46 +01:00
Philip Rebohle
d9f38a7f42 [d3d11] Minor restructuring 2017-12-15 19:11:10 +01:00
Philip Rebohle
4172b99952 [d3d11] Implemented naive Map() optimization when used with D3D11_MAP_WRITE_DISCARD 2017-12-13 17:49:08 +01:00