Philip Rebohle
98b8d41016
[dxbc] Write shader name to the generated SPIR-V
...
Might help identifying shaders in debugging tools such as Renderdoc.
2018-04-15 21:00:08 +02:00
Philip Rebohle
adb1789571
[dxbc] Fixed incorrect result vector dimension for OpImageQuerySize
2018-04-12 13:57:15 +02:00
Philip Rebohle
021ea64103
[dxbc] Remove Nvidia driver version check
...
Apparently this causes a regression in Overwatch for some.
2018-04-11 19:44:45 +02:00
Philip Rebohle
8ea17e7a25
[dxbc] Implemented Nop instruction
...
Required for Metal Gear Solid V.
2018-04-11 01:49:39 +02:00
Philip Rebohle
f3544cc8e1
[dxbc] Fix __GL_NextGenCompiler check...
2018-04-11 01:17:07 +02:00
Philip Rebohle
3ff437ddbe
[dxbc] Re-enable Nvidia workarounds if __GL_NextGenCompiler is '0'
...
Fixes potential regressions when using the old SPIR-V compiler.
2018-04-11 00:26:42 +02:00
Philip Rebohle
1b6442b859
[dxbc] Disable Nvidia-specific workarounds for 396.18 and above
2018-04-11 00:20:24 +02:00
Philip Rebohle
1fb22a6022
[dxbc] Refactored opcode controls
2018-04-10 08:01:54 +02:00
Philip Rebohle
5cb65a6c19
[dxbc] Fix sampleinfo_uint instruction
2018-04-09 22:52:59 +02:00
Philip Rebohle
8a4e1d11b7
[dxbc] Add missing component count to gs_layer variable type
...
Fixes an incorrect geometry shader in Overwatch.
2018-04-09 00:20:27 +02:00
Philip Rebohle
797d7ec81d
[dxbc] Enable CapabilitySampleRateShading capability when needed
...
Fixes SPIR-V validation errors in the Final Fantasy XV benchmark.
2018-04-08 21:06:58 +02:00
Philip Rebohle
e38cc4a0e0
[dxbc] Implement support for SV_PrimitiveID
...
Fixes some geometry/tessellation shaders in The Witcher 3.
2018-04-08 18:25:44 +02:00
Philip Rebohle
bd17be472d
[dxbc] Reciprocate W component of SV_POSITION in pixel shaders
...
Fixes the fog effect in Nier:Automata, as well as some major
visual issues in Rise of the Tomb Raider, and potentially
other games.
2018-04-05 20:10:00 +02:00
Philip Rebohle
492c7384bc
[dxbc] Implemented ImmAtomicCmpExch and AtomicCmpStore
2018-04-04 13:59:43 +02:00
Philip Rebohle
eb85f61084
[dxbc] Serialize hull shader fork/join phase invocations
...
We cannot run these in parallel in case the hull shader's output vertex
count, and thus the invocation count, is less than the fork/join phase
invocation count.
2018-04-02 16:22:19 +02:00
Philip Rebohle
d2c6ec5c41
[dxbc] Implement ImmAtomic*Min/Max instructions
2018-04-02 10:58:26 +02:00
Philip Rebohle
99d9a5df0b
[dxbc] Respect GloballyCoherent flag for UAVs
2018-03-31 16:41:19 +02:00
Philip Rebohle
770d94f796
[dxbc] Fix explicit memory barrier semantics
...
This imitates glslang behaviour for barrier instructions and
sets AcquireRelease semantics for all explicit memory barriers.
2018-03-30 17:59:57 +02:00
Philip Rebohle
47e78d0a95
[dxbc] Fixed type of atomic pointers into typed UAVs
...
Should fix a crash in the Nvidia driver.
2018-03-30 17:31:48 +02:00
Philip Rebohle
b286b518c5
[dxbc] Fix ForkInstanceId type in EmitHsForkJoinPhase
2018-03-29 14:05:38 +02:00
Philip Rebohle
2ab4710054
[dxbc] Run HS fork/join phases in parallel
...
May reduce execution time of hull shaders on the GPU by running
the fork/join phases in parallel, as originally intended. Tested
on RADV 18.0.99 with LLVM 6.0.0.
2018-03-29 13:29:50 +02:00
Philip Rebohle
87f9bcfd75
[dxbc] Do not use locations >32 for tess control outputs
...
Fixes an assertion with latest mesa-git.
2018-03-28 11:55:29 +02:00
Philip Rebohle
a700e928ef
[dxbc] Enable MultiViewport capability if needed
...
Fixes invalid SPIR-V generated since 60d6416e5f8200d5340f75d2655a1478b1472330.
2018-03-27 01:41:06 +02:00
Philip Rebohle
60d6416e5f
[dxbc] Implemnted SV_ViewportArrayIndex for geometry shaders
...
Required by Final Fantasy XIV.
2018-03-26 23:32:30 +02:00
Philip Rebohle
ac94c42380
Revert "[dxbc] Do not emit per-vertex input block"
...
This reverts commit 4ce64bd8865bbb25baa25d622437c9258126c4d2.
Fixes a regression in Sniper: Ghost Warrior 2 and Dishonored 2.
2018-03-24 16:23:31 +01:00
Philip Rebohle
54382ae319
[dxbc] Add experimental support for mixed resource types
...
HLSL tbuffers are translated to resources with a "mixed" format.
There is no documentation about which format the buffers actually
use, so we'll default to UINT and see what happens.
2018-03-24 14:21:13 +01:00
Philip Rebohle
7f7eedac35
[dxbc] Implement SV_ClipDistance and SV_CullDistance
2018-03-24 11:29:07 +01:00
Philip Rebohle
4ce64bd886
[dxbc] Do not emit per-vertex input block
...
Instead, we can let the normal input registers do their thing.
2018-03-24 00:32:22 +01:00
Philip Rebohle
0ab27aa4e3
[dxbc] Check if the signature is nullptr before using it
...
Fixes a crash in The Witcher 3.
2018-03-23 21:38:21 +01:00
Philip Rebohle
31772af4a5
[dxbc] Count clipping and culling planes
2018-03-23 19:48:07 +01:00
Philip Rebohle
abb90086d5
[dxvk] Use analyzer to determine UAV image type
2018-03-23 01:04:04 +01:00
Philip Rebohle
16caa10697
[dxbc] Add analyzer stub
...
Will be used to gather information for the compiler.
2018-03-22 20:01:57 +01:00
Philip Rebohle
9ef94e28ac
[dxbc] Support UNorm/SNorm typed resources
2018-03-21 15:08:53 +01:00
Philip Rebohle
584ee6b6f0
[dxbc] Lift ShaderStorageImageReadWithoutFormat requirement
2018-03-21 12:47:53 +01:00
Philip Rebohle
fcff10aae7
[dxbc] Set image format for UAVs when atomic operations are used
...
Fixes a violation of the Vulkan specification where atomic operations
would be used on storage images with SpvImageFormatUnknown. Should fix
driver crashes on Nvidia.
TODO: Fix data types for atomic operation instructions.
2018-03-21 12:11:18 +01: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
Mikhail Paulyshka
fd633ea784
[dxbc] fix MSVC 64-bit build
2018-03-17 01:59:13 +03:00
Philip Rebohle
3d0aad705d
[dxbc] Implemented samplepos instruction
...
Required by Fallout 4, among other games.
2018-03-12 12:25:10 +01:00
Mikhail Paulyshka
3dad074fc4
[dxbc] implemented retc instructions ( #140 )
2018-03-10 15:04:58 +01:00
Philip Rebohle
28880d0fa8
[dxbc] Implemented DclHsMaxTessFactor
2018-03-10 15:02:27 +01:00
Philip Rebohle
3efd437310
[dxbc] Fixed TGSM size with dcl_tgsm_raw
...
https://msdn.microsoft.com/en-us/library/windows/desktop/hh446929(v=vs.85).aspx
2018-03-09 22:01:19 +01:00
Philip Rebohle
c3cf65c015
[dxbc] Use signed int for component index in OpImageGather
...
Workaround for a bug in Nvidia's shader compiler, which currently
expects the component index to be signed rather than unsigned.
2018-03-08 07:50:37 +01:00
Philip Rebohle
7ac0d413ad
[dxbc] Use correct arrays for vicp/vocp in hull shaders
...
Fixes Heaven on RADV.
2018-03-07 09:52:24 +01:00
Philip Rebohle
0fdde6a94e
[dxbc] Fix hull shader barrier issue
2018-03-07 00:22:40 +01:00
Philip Rebohle
b7a9c2c751
[dxbc] Implemented vicp for hull shaders
...
Allows Unigine Heaven to start with tessellation enabled.
2018-03-06 19:19:10 +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
88c4e363e5
[dxbc] Implemented workaround for hull shader output synchronization
2018-03-06 18:29:20 +01:00
Philip Rebohle
2271814d95
[dxbc] Implemented domain shader input variables
2018-03-06 16:47:35 +01:00
Philip Rebohle
ff0ff0c23b
[dxbc] Implemented hull shader passthrough
2018-03-06 15:52:29 +01:00
Philip Rebohle
d2ca721387
[dxbc] Reworked Hull Shader phase invocations
...
Instead of running individual phases sequentially, we can
run them in parallel if execution barriers are in place.
2018-03-06 15:05:58 +01:00