1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-07 07:46:19 +01:00
Commit Graph

247 Commits

Author SHA1 Message Date
Philip Rebohle
aa76bae32a
[dxbc] Fix incorrect OpSelectionMerge instruction
Fixes a regression introduced in v0.53 that would cause
Witcher 3 to crash when enabling Nvidia Hairworks on RADV.
2018-05-31 14:20:12 +02:00
Philip Rebohle
621aed5fdb
[dxbc] Bound-check dynamically indexed constant buffer reads
Emulates D3D11 behaviour more closely on Nvidia hardware.
Fixes an issue in Dark Souls Remastered caused by constant
buffer access with an undefined index value (#405).
2018-05-31 10:13:32 +02:00
Philip Rebohle
001794a094
[dxbc] Implement deferred kill operation
Fixes visual issues during LOD transitions in The Witcher 3,
Rise of the Tomb Raider and other games with a similar LOD
system. UAV stores and atomics are conditionalized as well.
2018-05-26 19:25:20 +02:00
Philip Rebohle
0619842dd9
[dxbc] Make UAV stores and atomics conditional
We should only perform stores when the corresponding
UAV is bound. This may be extended with range checks
at a later time.
2018-05-26 19:01:44 +02:00
Philip Rebohle
9278221416
[dxbc] Run analyzer before creating compiler object
We may need the analysis results when initializing the compiler object.
2018-05-26 17:46:49 +02:00
Philip Rebohle
af62d423b2
[dxbc] Add per-device option for deferred kills 2018-05-26 17:08:39 +02:00
Philip Rebohle
ec5572aa69
[dxbc] Scan for discard and derivative instructions 2018-05-26 17:08:08 +02:00
Philip Rebohle
d79f39b963
[dxbc] Implement sampleinfo instruction for rasterizer 2018-05-26 14:54:05 +02:00
Philip Rebohle
a43025294a
[dxbc] Remove DxbcImageInfo::layered property 2018-05-24 12:07:03 +02:00
Philip Rebohle
12d79257be
[dxbc] Remove TexCube -> TexCubeArray workaround 2018-05-24 12:00:31 +02:00
Philip Rebohle
58e9280891
[dxbc] Remove Tex2D -> Tex2DArray workaround 2018-05-24 11:49:12 +02:00
Philip Rebohle
fb11acbc91
[dxbc] Implement geometry shader instancing
Required for Frostpunk (see #385).
2018-05-22 19:36:53 +02:00
Philip Rebohle
126c50a674
[dxbc] SampleMask does not depend on SampleRateShading
This was fixed in a later revision of the SPIR-V 1.0 specification.
2018-05-19 09:07:31 +02:00
Philip Rebohle
a6ace7908f
[dxbc] Do not emit empty 'else' blocks 2018-05-18 22:37:23 +02:00
Philip Rebohle
581e505f54
[dxbc] Fix bit scan instructions
firstbithi counts from the MSB rather than the LSB. Fixes
rendering issues in Hitman.
2018-05-12 01:39:23 +02:00
Philip Rebohle
27d3a78d79 [dxbc] Omit empty source string in OpSource instruction
This parameter is optional and confuses RenderDoc if present.
2018-05-02 13:07:26 +02:00
Philip Rebohle
5eaacf7459 [dxbc] Add gs_vertex_in to the entry point interface
Fixes invalid SPIR-V generated in the Blacksmith demo (#267).
2018-04-23 18:07:31 +02:00
Philip Rebohle
a5c43b5e59 [dxbc] Enable array texture hack for Dishonored 2
Partially fixes shadow rendering issues.
2018-04-23 11:09:48 +02:00
Philip Rebohle
01147492d5 [dxbc] Implemented Texture2D -> Texture2DArray mapping as a knob
Doing this for all applications is not necessary and degrades
performance in some cases.
2018-04-23 00:46:27 +02:00
Philip Rebohle
e53cb72e39 [dxbc] Make DxbcOptions a set of flags
This allows for game-specific workarounds and driver-specific
workarounds to be applied in an easier fashion.
2018-04-22 23:49:41 +02:00
Philip Rebohle
2f20a61342 [dxbc] Map 2D MS shader resource views to 2D MS Array views
Works around a game bug in Dragon Age: Inquisition, which binds
an MS image to a non-MS resource slot. Closes
2018-04-22 18:27:01 +02:00
Philip Rebohle
cd63ff6d76 [dxbc] Fix operand type of resinfo_rcp_float division
Fixes invalid SPIR-V generated for this instruction.
2018-04-22 16:43:16 +02:00
Philip Rebohle
f30923718f [dxbc] Fix texture component count for OpImageQueryLod
Not a bug, but we don't need the extra component when dealing with
array images.
2018-04-22 14:08:01 +02:00
Philip Rebohle
0bf97993c6 [dxbc] Fix layer count in resinfo instruction
For non-layered types, this instruction is supposed to return 0, not 1.
2018-04-22 08:34:07 +02:00
Philip Rebohle
dcb5b2a20c
[dxbc] Map 1D and 2D textures to their respective array type v2
We need to adjust the texture coordinate vectors as well, so that
some instructions continue to work properly.
2018-04-21 18:09:43 +02:00
Philip Rebohle
0318cc730a
Revert "[dxbc] Map 1D and 2D textures to their respective array type"
Broken. Requires some prep work in the shader compiler.
2018-04-21 15:38:39 +02:00
Philip Rebohle
906355b0da
[dxbc] Map 1D and 2D textures to their respective array type
As with cube textures, some games think it's a good idea to bind a
non-array view to a slot that expects an array view or vice versa.
Fixes clouds not appearing in TrackMania 2 Stadium (#191).
2018-04-21 14:15:10 +02:00
Philip Rebohle
fd1c50d8d8
[dxbc] Fixed incorrect shader resource slot computation 2018-04-21 14:01:27 +02:00
Philip Rebohle
50f1cf007d
[dxbc] Implement precise flag
May fix depth precision in Skyrim SE (issue #189).
2018-04-20 23:32:51 +02:00
Philip Rebohle
8eb78591a0
[dxbc] Scan pixel shader output register type at declaration time
Fixes invalid shaders being generated in the Blacksmith demo on
some GPUs. Works around a possible issue in the output signature
reader.

Commit #1000, yay.
2018-04-18 21:14:34 +02:00
Vesim
b82ae16f8a [dxbc] Moved all operators in dxbc_names to dxvk namespace (#296) 2018-04-17 17:33:07 +02:00
Philip Rebohle
75c928fc87
[dxbc] Remove is-bound check for constant buffer reads
We do not have to do this anymore since we'll bind a large
enough dummy buffer. Considerably reduces code size in shaders
which access a large number of shader constants.
2018-04-16 23:40:48 +02:00
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