Philip Rebohle
a567f6a5a5
[dxbc] Do not emit depth type for non-sampled resources
...
Fixes a crash in the Nvidia driver. These type
declarations were never used in the first place.
2018-02-02 21:42:04 +01:00
Philip Rebohle
14d5054893
[dxvk] Initial work on instance data fetch rates
...
Adds a pipeline flag to indicate that instanced
draw calls need to be emulated.
2018-02-01 20:15:25 +01:00
Philip Rebohle
0154d0856d
[dxbc] Added push constant definition block
...
This will be used to fake a draw's instance ID when
per-instance data fetch rates other than 1 are used.
2018-02-01 18:07:24 +01:00
Philip Rebohle
fb4663fcc8
[dxbc] Remove duplicate image type declaration
2018-01-31 11:25:49 +01:00
Philip Rebohle
173e46e2bd
[dxbc] Added Hull/Domain shader specific structures
2018-01-29 14:37:06 +01:00
Philip Rebohle
8c4d94b570
[dxbc] Implemented OutputCoverageMask
2018-01-29 10:54:36 +01:00
Philip Rebohle
4ac38af8a7
[dxbc] Declare SV variables on first use
2018-01-29 10:41:41 +01:00
Philip Rebohle
8a3dcf7c99
[dxbc] Added support for SV_SampleIndex
2018-01-28 15:32:35 +01:00
Philip Rebohle
6f51c136d2
[dxbc] Remove obsolete error message when resinfo is used with UAVs
2018-01-27 22:15:53 +01:00
Philip Rebohle
2e1e8d56a5
[dxbc] Removed branches around texture sample/gather ops
...
Not needed anymore thanks to dummy resources serving the same purpose.
2018-01-27 19:31:08 +01:00
Philip Rebohle
d522e19bab
[dxbc] Implemented SampleB instruction
2018-01-20 10:21:27 +01:00
Philip Rebohle
aa02612b9e
[dxbc] Do not set ImageOperandsLodMask for multisample loads
...
This should fix invalid SPIR-V being generated in The Witness.
2018-01-19 09:09:38 +01:00
Philip Rebohle
8b27dee0e5
[dxbc] Implemented swapc
2018-01-17 21:47:18 +01:00
Philip Rebohle
0f049edde6
[dxbc] Fixed shift operations
2018-01-17 05:35:41 +01:00
Philip Rebohle
596541ed02
[dxbc] Implemented gather instructions and pixel shader SVs
2018-01-17 02:12:29 +01:00
Philip Rebohle
b3cd126d0f
[dxbc] Implemented ld2dms
2018-01-16 22:39:30 +01:00
Philip Rebohle
5dd9fea011
[dxvk] Implemented input layout validation
...
Checks whether all input slots consumed by the vertex shader
are provided by the input layout, and disables rendering in
case the state validation fails. This should hopefully fix
GPU lockups in Nier:Automata.
2018-01-12 14:25:26 +01:00
Philip Rebohle
5f5bb69fa7
[dxbc] Image queries now support UAV images
2018-01-11 21:39:17 +01:00
Philip Rebohle
69c5af4455
[dxbc] Implemented append/consume functionality
...
Nier will now render the bullets properly.
2018-01-11 17:11:51 +01:00
Philip Rebohle
f5bfaac4b3
[d3d11] Use cube array views for non-array cube maps
...
This is actually necessary in order to properly render the map mode in
Nier:Automata, which binds non-array cube maps to a cube array slot.
2018-01-11 12:33:38 +01:00
Philip Rebohle
c1d6c20066
[d3d11] Implemented D3D11 parts of append/consume buffers
2018-01-11 12:23:55 +01:00
Philip Rebohle
74722fa693
[dxvk] Implementing unbound resource handling (4/4)
...
The shader compiler now queries whether a constant buffer or texture is
bound before trying to access it for reading. This is not yet implemented
for image fetch operations, atomic operations, or buffer load/store ops.
2018-01-10 18:58:17 +01:00
Philip Rebohle
fe02c5d6b9
[dxvk] Implementing unbound resource handling (3/4)
...
The shader compiler will now generate specialization constants
for shader resources, uniform access views, and constant buffers.
2018-01-10 13:44:04 +01:00
Philip Rebohle
bde8ba9400
[dxbc] Simplified f16tof32 implementation
2018-01-10 09:16:42 +01:00
Philip Rebohle
da867d4bca
[dxvk] Replaced DxvkResourceType by VkImageViewType
2018-01-09 20:35:29 +01:00
Philip Rebohle
c7d0729e06
[dxbc] Fixed bit field instructions
2018-01-09 15:39:41 +01:00
Philip Rebohle
180cc35c84
[d3d11] Use VK_IMAGE_VIEW_TYPE_CUBE_ARRAY for non-array cube maps
...
Games may bind simple cube map views to a resource slot that requires
a cube map array view. Fixes GPU lockups in Nier: Automata.
2018-01-09 00:51:10 +01:00
Philip Rebohle
7fd1f57902
[dxbc] Fixed invalid types and IDs in generated SPIR-V
2018-01-08 22:26:45 +01:00
Philip Rebohle
7912f6c604
[dxbc] Track dimension of resource slots
...
This shall help binding dummy resources in case an application
binds none or an incompatible resource to a slot.
2018-01-08 13:39:37 +01:00
Philip Rebohle
7cc65be16b
[dxbc] Fixed redundant bitcasts
2018-01-07 21:04:23 +01:00
Philip Rebohle
f4cd90d6fa
[dxbc] Implemented vendor-specific workarounds in an attemt to fix Nvidia
2018-01-07 20:05:27 +01:00
Philip Rebohle
f7e1efbaaf
[dxbc] Fixed AtomicUmax emitting the wrong instruction
2018-01-05 19:48:45 +01:00
Philip Rebohle
1dfd62a118
[dxbc] Added debug name to x# registers
2018-01-05 16:46:17 +01:00
Philip Rebohle
c816078f13
[dxbc] Disabled clip and cull planes for now
...
We would have to write these values, but the feature
is currently not supported in the D3D11 implementation.
2018-01-03 12:46:04 +01:00
Philip Rebohle
6dfe09da7b
[dxbc,d3d11] Minor fixes
2018-01-03 12:26:27 +01:00
Philip Rebohle
da751a46f7
[dxbc] Removed in-shader bounds checking
...
It looks like this is not needed at the moment, and it needs more work.
2018-01-03 02:37:44 +01:00
Philip Rebohle
98bcfec0f3
[dxbc] More debug info for constant buffers
2018-01-02 20:20:52 +01:00
Philip Rebohle
bfac9eb737
[dxbc] Added bound checking for some texel fetch operations
2018-01-02 16:57:37 +01:00
Philip Rebohle
043330132f
[dxbc] Added experimental support for atomic operations
2018-01-02 12:07:49 +01:00
Philip Rebohle
8c0e797f37
[dxbc] Vertex inputs now respect attribute type
...
Fixes issues with integer attributes which were encountered in Nier: Automata.
2018-01-01 23:31:01 +01:00
Philip Rebohle
4fc2ea25b8
[dxbc] Implemented typed UAV load/store
2018-01-01 17:14:06 +01:00
Philip Rebohle
5332891748
[dxbc] Implemented switch-case instructions
2017-12-30 17:22:36 +01:00
Philip Rebohle
006e1b25e6
[d3d11] Fixed shader semantic name comparison
2017-12-30 15:30:31 +01:00
Philip Rebohle
e740adfcb7
[dxbc] Implemented f16 pack/unpack instructions
2017-12-30 13:18:31 +01:00
Philip Rebohle
f93745adcf
[dxbc] Implemented bfi and bfe instructions
2017-12-30 03:44:19 +01:00
Philip Rebohle
1373fe5fcc
[dxbc] Implemented bufinfo instruction
2017-12-30 01:26:37 +01:00
Philip Rebohle
b968aa0472
[dxbc] Implemented continue instructions
2017-12-29 22:54:25 +01:00
Philip Rebohle
298eeedcc4
[dxbc] Implemented round instructions
...
Also fixed potential numerical stability issues in with min/max
instructions and saturation when an operand is NaN.
2017-12-29 19:26:59 +01:00
Philip Rebohle
5df89fb657
[dxbc] Fixed OpImageRead and OpImageWrite operand types
2017-12-29 12:11:19 +01:00
Philip Rebohle
a51439fb29
[dxbc] Implemented thread group shared memory and barriers
2017-12-29 00:51:31 +01:00
Philip Rebohle
847bfdd8ae
[dxbc] Implemented raw and structured UAV stores
2017-12-28 18:37:02 +01:00
Philip Rebohle
a72727a173
[dxbc] Added support for structured and raw buffers
2017-12-28 16:03:17 +01:00
Philip Rebohle
7f5fa18d0b
[dxbc] Enabled SPV_KHR_shader_draw_parameters for vertex shaders
2017-12-27 14:31:38 +01:00
Philip Rebohle
5ce975eed9
[dxbc] Fixed SV_VERTEXID and SV_INSTANCEID
...
Apparently, these two system values ignore the base vertex
and base instance from the draw call. This is not documented,
but in line with what the AMD driver does on Windows.
2017-12-27 12:49:25 +01:00
Philip Rebohle
24b9d9d99a
[dxbc] Experimental support for ld,resinfo
2017-12-27 01:37:15 +01:00
Philip Rebohle
3762df6cb6
[d3d11] Added proper support for 1D and 3D shader resources
2017-12-24 13:33:22 +01:00
Philip Rebohle
89290e9eab
[dxbc] Minor fixes
2017-12-22 20:15:44 +01:00
Philip Rebohle
f301633516
[dxbc] Compute shader prep work
2017-12-21 17:27:40 +01:00
Philip Rebohle
46717529fa
[dxbc] Implemented unsigned comparators and sample_l
2017-12-21 17:14:11 +01:00
Philip Rebohle
3e4e5191a8
[dxbc] Increased number of clip/cull distances
...
Clip and cull distances can be defined as multi-component
vectors in D3D11. We still need to figure out how to map
them to the actuall cull distance array.
2017-12-21 16:28:42 +01:00
Philip Rebohle
f947fb5d44
[dxbc] Refactored system value mapping
...
Restores geometry shader support.
2017-12-21 16:00:36 +01:00
Philip Rebohle
2e4275649e
[dxbc] Implemented input mapping + sample controls
...
Input variables are now copied into a temporary array, which allows
dynamic indexing and which also allows us to use system values that
are mapped to input registers in DXBC. This breaks geometry shaders
for now, however.
2017-12-21 12:37:20 +01:00
Philip Rebohle
109ce0a695
[dxbc] Implemented sample_d and vector shift instructions
2017-12-20 23:50:39 +01:00
Philip Rebohle
6ff709513c
[dxbc] Added indexable temps
2017-12-20 22:50:05 +01:00
Philip Rebohle
41d660f220
[spirv] Added image operand structure for more flexible sample ops
2017-12-20 20:21:44 +01:00
Philip Rebohle
659ec7b59d
[d3d11] Added DXGI format properties
2017-12-20 14:54:24 +01:00
Philip Rebohle
b4e10b7f06
[dxbc] Fixed sampler types for depth-compare operations
2017-12-20 13:41:04 +01:00
Philip Rebohle
2ed2d892d6
[dxvk] Optimized resource binding
...
Fixes a few bottlenecks that were encountered in the Cascading Shadow
Maps demo from the Microsoft SDK. Performance is now slightly better
than wined3d with CSMT, MESA_NO_ERROR and mesa_glthread enabled.
2017-12-20 12:13:08 +01:00
Philip Rebohle
9865474bb4
[dxbc] Initial shadow sampler support
2017-12-20 00:16:49 +01:00
Philip Rebohle
d1720c0c52
[dxbc] Implemented derivatives
2017-12-19 20:26:05 +01:00
Philip Rebohle
5415b685de
[dxbc] Implemented type conversion instructions
2017-12-19 18:12:18 +01:00
Philip Rebohle
95bc4b5826
[dxbc] Added immediate constant buffer support
2017-12-19 17:41:23 +01:00
Philip Rebohle
64a74735f8
[dxbc] oDepth no longer treated as standard output register
...
Fixes a crash in the shader compiler when starting up Tomb Raider.
2017-12-19 12:58:40 +01:00
Philip Rebohle
6df9fc75d2
[dxbc] Implemented some new bit-wise logical instructions
2017-12-19 00:45:31 +01:00
Philip Rebohle
13d4a3d87d
[dxbc] Fixed bug with constant vector operands
2017-12-18 18:02:15 +01:00
Philip Rebohle
6cc3ff4ad8
[dxbc] Basic geometry shader (sm4) support
2017-12-18 16:41:05 +01:00
Philip Rebohle
1e08c0744f
[dxbc] Implemented basic control flow instuctions
2017-12-18 11:53:28 +01:00
Philip Rebohle
858913ec0c
[dxbc] Shader decoder and compiler overhaul (2/2)
...
Removed the old decoder and the old shader compiler
and added documentation to the new structures.
2017-12-18 00:46:44 +01:00
Philip Rebohle
47347e38da
[dxbc] Shader decoder and compiler overhaul (1/2)
...
Major rewrite of the entire shader decoder to generate easy
to parse data structures for the compiler, which ultimately
allows new instructions to be implemented more easily.
2017-12-18 00:28:54 +01:00
Philip Rebohle
2f99be9546
[dxbc] Implemented conditional move and comparison instructions
2017-12-17 01:36:41 +01:00
Philip Rebohle
2ad5f49f3e
[dxbc] Shader compiler rewrite (2/2)
2017-12-14 12:53:53 +01:00
Philip Rebohle
a4eb807215
[dxbc] Implemented SinCos, Min and Max instructions
2017-12-13 16:35:01 +01:00
Philip Rebohle
464a3e7d4e
[dxbc] Shader compiler rewrite (1/2)
...
Rewrote most parts of the shader compiler and removed the old one. The next
step is to improve documentation and remove the remaining traces of the old
shader compiler.
2017-12-13 15:32:54 +01:00
Philip Rebohle
0f26d1c627
[dxbc] Removed <optional> dependency
2017-12-12 13:00:37 +01:00
Philip Rebohle
22c3cd80a1
[dxbc] Implemented mad instruction
2017-12-11 14:36:35 +01:00
Philip Rebohle
93f79742e9
[dxbc] Scalar values can be expanded to multiple vector components during a store operation
2017-12-10 22:35:55 +01:00
Philip Rebohle
d941446ca0
[dxbc] Fixed bug in decoder that would return wrong component masks
2017-12-10 21:13:22 +01:00
Philip Rebohle
9acc9bf3e0
[dxbc] Implemented Rsq instruction
2017-12-10 20:01:38 +01:00
Philip Rebohle
b4493d90d8
[dxbc] Initial support for sample instruction
2017-12-10 12:08:20 +01:00
Philip Rebohle
7c03495d74
[dxbc] Implemented shader resource declaration for images
2017-12-10 10:34:18 +01:00
Philip Rebohle
939faeaf27
[dxbc] Implemented sampler declaration
2017-12-10 03:39:35 +01:00
Philip Rebohle
bfb05f24b8
[dxbc] Implemented support for MUL instruction
2017-12-09 01:49:30 +01:00
Philip Rebohle
c90bc3e946
[dxbc] Implemented proper resource slot mapping
2017-12-08 22:30:41 +01:00
Philip Rebohle
feab720ddb
[spirv] Added methods to force type declaration for arrays and structs
2017-12-08 19:50:36 +01:00
Philip Rebohle
0610296248
[d3d11] Implemented constant buffer binding
2017-12-08 19:39:33 +01:00
Philip Rebohle
e872448ca3
[dxbc] Refactored shader compiler to return a DxvkShader
2017-12-08 18:14:05 +01:00
Philip Rebohle
a2f66025f8
[dxbc] Implemented constant buffers
2017-12-08 17:08:26 +01:00
Philip Rebohle
9f4cc6b77d
[dxbc] Minor cleanups
2017-12-08 15:30:12 +01:00
Philip Rebohle
8887e8b2fa
[dxbc] Implemented interpolation modes for pixel shader inputs
2017-12-08 14:56:34 +01:00
Philip Rebohle
bd8dc20fa2
[dxbc] User-defined shader interface cannot be an array due to interpolation modes
2017-12-08 14:18:30 +01:00