Commit Graph

171 Commits

Author SHA1 Message Date
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