1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-13 07:08:50 +01:00
Commit Graph

56 Commits

Author SHA1 Message Date
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
Philip Rebohle
2a266eaad4 [general] Added 32-bit support 2017-12-12 12:50:52 +01:00
Philip Rebohle
037e9a643d [d3d11] Fixed yet another ref counting bug 2017-12-11 17:01:38 +01:00
Philip Rebohle
50b7293b8f [d3d11] Implemented blend state and depth-stencil state binding 2017-12-11 14:11:18 +01:00
Philip Rebohle
9c997120e1 [d3d11] Implemented shader resource binding 2017-12-10 01:56:07 +01:00
Philip Rebohle
2b86a2f1f3 [d3d11] Changed the way default pipeline state is restored 2017-12-09 21:39:56 +01:00
Philip Rebohle
1160810687 [d3d11] Implemented sampler binding 2017-12-09 21:17:26 +01:00
Philip Rebohle
c90bc3e946 [dxbc] Implemented proper resource slot mapping 2017-12-08 22:30:41 +01:00
Philip Rebohle
0610296248 [d3d11] Implemented constant buffer binding 2017-12-08 19:39:33 +01:00
Philip Rebohle
b49815657e [dxvk] Refactored blend state 2017-12-08 01:06:48 +01:00
Philip Rebohle
385c92db5a [dxvk] Refactoring of most constant state objects 2017-12-08 00:02:43 +01:00
Philip Rebohle
3cf9582187 [d3d11] Added default constant state objects 2017-12-07 14:22:23 +01:00
Philip Rebohle
dece62c70a [d3d11] Implemented basic shader creation methods 2017-12-06 18:54:01 +01:00
Philip Rebohle
f990fcaa01 [d3d11] Implemented rasterization state and viewports 2017-12-06 12:11:59 +01:00