Józef Kucia
0369f39a47
libs/vkd3d-shader: Generate correct SPIR-V for rcp with multiple components.
2017-10-18 12:21:24 +02:00
Józef Kucia
c5e400fa30
libs/vkd3d-shader: Document hacks introduced for Nvidia driver.
...
See 70f5b24f92
.
2017-10-12 17:47:53 +02:00
Józef Kucia
2171ba6d32
libs/vkd3d-shader: Decrement OpAtomicIDecrement result.
2017-10-12 13:10:26 +02:00
Józef Kucia
94a33020d3
libs/vkd3d-shader: Use switch statement in shader_parse_root_parameters().
2017-10-10 16:57:36 +02:00
Józef Kucia
4522a80de8
libs/vkd3d-shader: Use switch statement in shader_write_root_parameters().
2017-10-10 16:57:36 +02:00
Józef Kucia
18b285328e
libs/vkd3d-shader: Add version argument to vkd3d_shader_serialize_root_signature().
2017-10-10 16:57:36 +02:00
Józef Kucia
6b43a5fe38
libs/vkd3d-shader: Implement root signature serialization.
2017-10-10 16:02:09 +02:00
Józef Kucia
586e1cc532
libs/vkd3d-shader: Implement relative addressing for constant buffers.
2017-10-06 17:06:31 +02:00
Józef Kucia
5479ac7011
libs/vkd3d-shader: Always emit default block for OpSwitch.
...
The default block is required in SPIR-V.
2017-10-05 15:58:51 +02:00
Józef Kucia
9feb7a3956
libs/vkd3d-shader: Recognize nop instruction.
2017-10-05 15:58:51 +02:00
Józef Kucia
e7aa2a7bcf
libs/vkd3d-shader: Emit NonReadable decoration for image variables.
...
Fixes image writes for UNORM formats on Anv. Anv uses special surface
state for write-only storage image descriptors.
The SPIR-V spec doesn't state that the NonReadable decoration is
required for images used with StorageImageWriteWithoutFormat. On the
other hand, glslang requires the 'writeonly' keyword for images without
format, and it emits the NonReadable decoration.
2017-09-26 10:37:41 +02:00
Józef Kucia
5a020d6673
libs/vkd3d-shader: Implement shader visibility for descriptors.
2017-09-22 16:42:07 +02:00
Józef Kucia
602f9780f8
libs/vkd3d-shader: Implement "sample" interpolation qualifier.
2017-09-14 15:38:19 +02:00
Józef Kucia
6b757f3002
libs/vkd3d-shader: Subtract BaseInstance from InstanceIndex.
...
Depends on SPV_KHR_shader_draw_parameters extension.
2017-09-12 17:42:42 +02:00
Józef Kucia
b19fe74284
libs/vkd3d-shader: Export shader signature parsing.
2017-09-11 22:35:16 +02:00
Józef Kucia
b61c785bd0
libs/vkd3d-shader: Implement SV_InstanceID.
2017-09-11 22:35:16 +02:00
Józef Kucia
30cd4cc59f
libs/vkd3d-shader: Always declare format for raw/structured image variables.
2017-09-07 17:48:43 +02:00
Józef Kucia
6dfb4ad520
libs/vkd3d-shader: Mark imm_atomic_alloc as UAV read instruction.
2017-09-07 17:48:43 +02:00
Józef Kucia
4af15035df
libs/vkd3d-shader: Improve some debug messages.
2017-09-07 17:48:43 +02:00
Józef Kucia
3191e1eaa9
libs/vkd3d-shader: Implement UAV counters instructions.
2017-09-07 17:15:54 +02:00
Józef Kucia
5ef6f71996
libs/vkd3d-shader: Emit declarations for UAV counters.
2017-09-07 17:15:54 +02:00
Józef Kucia
7416c83ae2
libs/vkd3d-shader: Rename vkd3d_descriptor_type to vkd3d_shader_descriptor_type.
2017-09-07 17:15:54 +02:00
Józef Kucia
efdf2ec691
libs/vkd3d-shader: Rename vkd3d_shader_push_constant to vkd3d_shader_push_constant_buffer.
...
This should be clearer. Multiple constant buffers can be assigned to
a single push constant range.
2017-09-07 17:15:54 +02:00
Józef Kucia
ea8e5eaaba
libs/vkd3d-shader: Introduce vkd3d_dxbc_compiler_emit_store_dst_swizzled() helper function.
2017-09-04 18:33:09 +02:00
Józef Kucia
3a4a71905e
libs/vkd3d-shader: Implement texel offset for gather4.
2017-09-04 12:46:52 +02:00
Józef Kucia
293ce313ac
libs/vkd3d-shader: Translate gather4 instructions.
2017-09-04 12:46:52 +02:00
Józef Kucia
5bdc928908
libs/vkd3d-shader: Export shader scan function.
...
For UAV counters support in libvkd3d.
2017-09-01 11:27:58 +02:00
Józef Kucia
e11b5fd566
libs/vkd3d-shader: Implement scanning for UAV counters.
2017-09-01 11:27:58 +02:00
Józef Kucia
72b109d380
libs/vkd3d-shader: Factor out vkd3d_spirv_build_image_instruction() function.
2017-08-31 09:29:02 +02:00
Józef Kucia
7c67665032
libs/vkd3d-shader: Implement ld_{raw, structured} for UAVs.
2017-08-30 16:41:41 +02:00
Józef Kucia
87a2fec426
libs/vkd3d-shader: Translate discard instructions.
2017-08-30 16:41:41 +02:00
Józef Kucia
99b72d4db1
libs/vkd3d-shader: Implement sample_l.
2017-08-30 16:41:41 +02:00
Józef Kucia
5b8d1fbdd5
libs/vkd3d-shader: Implement sample_c_lz.
2017-08-30 16:41:41 +02:00
Józef Kucia
9b8260a246
libs/vkd3d-shader: Translate ld_uav_typed instructions.
2017-08-28 19:10:23 +02:00
Józef Kucia
b5c89fa89f
libs/vkd3d-shader: Implement atomic compare exchange instructions.
2017-08-28 11:01:23 +02:00
Józef Kucia
482af89416
libs/vkd3d-shader: Implement remaining binary atomic instructions.
2017-08-28 11:01:23 +02:00
Józef Kucia
4e300ab1d4
libs/vkd3d-shader: Translate imm_atomic_iadd instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
cb166fbd5a
libs/vkd3d-shader: Translate atomic_umax instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
d464c9033f
libs/vkd3d-shader: Translate atomic_umin instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
a836cc2fe3
libs/vkd3d-shader: Translate atomic_or instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
1c4b9be079
libs/vkd3d-shader: Implement store_{raw,structured} for TGSM.
2017-08-24 15:13:38 +02:00
Józef Kucia
f7f7c6d889
libs/vkd3d-shader: Implement ld_raw.
2017-08-24 15:13:38 +02:00
Józef Kucia
a94751398b
libs/vkd3d-shader: Add support for atomic instructions on TGSM.
2017-08-24 15:13:38 +02:00
Józef Kucia
61dd701284
libs/vkd3d-shader: Translate imm_atomic_exch instructions.
2017-08-24 15:13:38 +02:00
Józef Kucia
eba87fa55b
libs/vkd3d-shader: Implement ld_structured for TGSM.
2017-08-24 15:13:38 +02:00
Józef Kucia
cf5fb3fbc2
libs/vkd3d-shader: Fix swizzle for raw/structured instructions.
2017-08-24 15:13:38 +02:00
Józef Kucia
4bfd0456e5
libs/vkd3d-shader: Refactor raw/structured buffer addressing.
...
In prep for TGSM support.
2017-08-24 15:13:38 +02:00
Józef Kucia
4d0b4f4f71
libs/vkd3d-shader: Add vkd3d_spirv_build_op_composite_extract1() function.
2017-08-24 11:11:16 +02:00
Józef Kucia
cef35c7c76
libs/vkd3d-shader: Translate dcl_tgsm_structured instructions.
2017-08-24 11:11:16 +02:00
Józef Kucia
9ed0feed12
libs/vkd3d-shader: Translate dcl_tgsm_raw instructions.
2017-08-24 11:11:16 +02:00
Józef Kucia
19c1b81a71
libs/vkd3d-shader: Translate sync instructions.
2017-08-24 11:11:16 +02:00
Józef Kucia
6c5d8da24d
libs/vkd3d-shader: Store structure stride in symbol table.
2017-08-22 14:53:33 +02:00
Józef Kucia
eb5e7a4412
libs/vkd3d-shader: Implement ld_structured for SRVs.
2017-08-22 12:39:56 +02:00
Józef Kucia
d5697448eb
libs/vkd3d-shader: Translate dcl_resource_structured instructions.
2017-08-22 12:39:56 +02:00
Józef Kucia
77e47eddb9
libs/vkd3d-shader: Translate dcl_resource_raw instructions.
2017-08-22 12:39:56 +02:00
Józef Kucia
6ffe54b9ec
libs/vkd3d-shader: Translate round_z instructions.
2017-08-22 12:39:56 +02:00
Józef Kucia
0f7c86e2bd
libs/vkd3d-shader: Translate store_structured instructions.
2017-08-21 16:30:33 +02:00
Józef Kucia
03e189386a
libs/vkd3d-shader: Translate atomic_iadd instructions.
2017-08-21 12:41:07 +02:00
Józef Kucia
d287591889
libs/vkd3d-shader: Set image format for UAV typed reads and atomic instructions.
2017-08-21 12:41:07 +02:00
Józef Kucia
a90c7c5f12
libs/vkd3d-shader: Add basic shader scan functionality.
2017-08-21 12:41:07 +02:00
Józef Kucia
41b7c46c3e
libs/vkd3d-shader: Translate dcl_uav_structured instructions.
2017-08-18 14:52:40 +02:00
Józef Kucia
8f631c8b0c
libs/vkd3d-shader: Make bytecode parser responsible for setting scalar register write masks.
2017-08-18 14:52:40 +02:00
Józef Kucia
ca9cc355b4
libs/vkd3d-shader: Recognize oDepth register.
2017-08-18 14:52:40 +02:00
Józef Kucia
dc7f65122d
libs/vkd3d-shader: Silence push constant size mismatch FIXMEs().
...
This generally doesn't mean anything. It may only be an issue
for out of bounds accesses.
2017-08-17 12:13:50 +02:00
Józef Kucia
ef2f490b20
libs/vkd3d-shader: Do not try to find matching signature element for system-value inputs.
...
Silences false-positive FIXME() messages.
2017-08-17 12:13:50 +02:00
Józef Kucia
242ef52d8b
libs/vkd3d-shader: Translate sample_c instructions.
...
Nvidia expects that the D_ref is packed together with texture
coordinates. The D_ref parameter is ignored.
This isn't a problem for glslang because in GLSL D_ref is generally
passed together with texture coordinates.
2017-08-16 17:38:33 +02:00
Józef Kucia
2527f820cd
libs/vkd3d-shader: Cleanup vkd3d_dxbc_compiler_prepare[_sampled]_image() functions.
2017-08-16 17:38:33 +02:00
Józef Kucia
1857fdc1bc
libs/vkd3d-shader: Translate ld instructions.
2017-08-16 13:11:52 +02:00
Józef Kucia
e3d6bac31b
libs/vkd3d-shader: Introduce vkd3d_shader_interface structure.
2017-08-16 13:11:52 +02:00
Józef Kucia
e6f6d01489
libs/vkd3d-shader: Implement resinfo for SRVs.
2017-08-16 13:11:52 +02:00
Józef Kucia
f82a90ff78
libs/vkd3d-shader: Fix write mask for vPrim register.
2017-08-15 11:25:10 +02:00
Józef Kucia
17e49dc6c6
libs/vkd3d-shader: Translate store_raw instructions.
2017-08-11 13:58:04 +02:00
Józef Kucia
5aefd2c9e4
libs/vkd3d-shader: Translate dcl_uav_raw instructions.
2017-08-11 13:58:04 +02:00
Józef Kucia
2665cbe522
libs/vkd3d: Duplicate Vulkan descriptors for SRVs and UAVs.
...
Vulkan has different descriptor types for buffers and textures.
Therefore, we do not know the exact Vulkan descriptor type for D3D12 SRV
and UAV descriptors up front. This information can be extracted from
shaders when creating PSOs but creating incompatible Vulkan descriptor
set layouts for PSOs with the same root signature would introduce a lot
of complexity.
In order to preserve compatibility between resource bindings for PSOs
with the same root signature we duplicate Vulkan descriptors for SRVs
and UAVs (a buffer view and an image view descriptor). This strategy may
be reasonable for small root signatures.
2017-08-08 17:09:35 +02:00
Józef Kucia
cb86c9c8d0
libs/vkd3d-shader: Implement resinfo for UAVs.
2017-08-08 17:09:35 +02:00
Józef Kucia
eb4c98db17
libs/vkd3d-shader: Add support for switch breaks nested in conditional branches.
2017-08-01 13:55:49 +02:00
Józef Kucia
6b93e6ce99
libs/vkd3d-shader: Add support for switch fall-through blocks.
2017-08-01 13:55:49 +02:00
Józef Kucia
fbeaf0ba95
libs/vkd3d-shader: Make sure that inserted chunks are sorted.
...
The list is expected to be empty or very small so insertion sort should
be fine.
2017-08-01 13:55:49 +02:00
Józef Kucia
3effb4b18c
libs/vkd3d-shader: Get rid of artificial limit for switch case blocks.
2017-08-01 11:38:10 +02:00
Józef Kucia
ae8d8036c6
libs/vkd3d-shader: Implement switch control flow instructions.
2017-08-01 10:51:45 +02:00
Józef Kucia
5061dbaf0c
libs/vkd3d-shader: Add mechanism for inserting words into SPIR-V streams.
...
Allows inserting SPIR-V instructions at arbitrary locations in SPIR-V
streams.
2017-08-01 10:51:45 +02:00
Józef Kucia
c1c94e248c
libs/vkd3d-shader: Allow multiple push constant buffers.
2017-08-01 10:51:45 +02:00
Józef Kucia
d75966ab9e
libs/vkd3d: Assign non-overlapping push constant ranges for root constants.
2017-08-01 10:51:45 +02:00
Józef Kucia
fec337a03c
libs/vkd3d-shader: Fix memory leak in vkd3d_dxbc_compiler_destroy().
2017-07-28 12:56:18 +02:00
Józef Kucia
9725eb3763
libs/vkd3d-shader: Remove double semicolons.
2017-07-28 12:56:18 +02:00
Józef Kucia
92fcb9ffa2
libs/vkd3d-shader: Add support for push constants.
2017-07-27 15:24:38 +02:00
Józef Kucia
edd1e9602d
libs/vkd3d-shader: Implement arbitrary mappings from D3D shader register to Vulkan descriptors.
...
An arbitrary mapping can be passed to vkd3d_shader_compile_dxbc().
2017-07-26 13:45:25 +02:00
Józef Kucia
6c174beb4b
libs/vkd3d-shader: Use component types from input signatures for shader inputs.
...
Fixes Vulkan validation layers errors.
2017-07-25 14:23:27 +02:00
Józef Kucia
5a2ebc62f6
libs/vkd3d-shader: Use component types from output signatures for shader outputs.
...
Fixes Vulkan validation layers errors.
2017-07-25 14:23:27 +02:00
Józef Kucia
a0e82064dc
libs/vkd3d-shader: Mask coordinates for OpImageWrite instructions.
2017-07-24 19:43:50 +02:00
Józef Kucia
046afde8db
libs/vkd3d-shader: Store resource type info in table.
2017-07-24 19:43:50 +02:00
Józef Kucia
aa3465ac83
libs/vkd3d-shader: Fix bitcasts for shader inputs.
2017-07-24 19:43:50 +02:00
Józef Kucia
c71d609fb6
libs/vkd3d-shader: Fix write mask for vThreadIDInGroupFlattened.
2017-07-24 19:43:50 +02:00
Józef Kucia
6bbd6c948a
libs/vkd3d-shader: Translate store_uav_typed instructions.
2017-07-24 19:43:50 +02:00
Józef Kucia
4746833a6f
libs/vkd3d-shader: Translate dcl_uav_typed instructions.
2017-07-24 19:43:50 +02:00
Józef Kucia
ea6b35ef58
libs/vkd3d-shader: Translate udiv instructions.
2017-07-21 14:14:42 +02:00
Józef Kucia
c73b201110
libs/vkd3d-shader: Do not print FIXMEs for known global flags.
2017-07-21 14:14:42 +02:00
Józef Kucia
95b6b7b91b
libs/vkd3d-shader: Clean up vkd3d_dxbc_compiler_emit_control_flow_instruction().
2017-07-21 14:14:42 +02:00
Józef Kucia
18c06c8022
libs/vk3d-shader: Translate break instructions for loops.
2017-07-20 13:32:40 +02:00
Józef Kucia
1cbf6ebddf
libs/vk3d-shader: Fix return instructions in if/else blocks.
2017-07-20 13:32:40 +02:00