Commit Graph

204 Commits

Author SHA1 Message Date
Józef Kucia
3340cafdc4 libs/vkd3d-shader: Avoid potential stack smashing. 2017-10-25 22:55:39 +02:00
Józef Kucia
f04389d90b libs/vkd3d-shader: Use more sensible default descriptor binding assignment. 2017-10-25 14:34:44 +02:00
Józef Kucia
e959686f12 libs/vkd3d-shader: Make sure that OpVariables are first instructions in main function.
The SPIR-V spec says:

  "All OpVariable instructions in a function must be in the first block
  in the function. These instructions, together with any immediately
  preceding OpLine instructions, must be the first instructions in that
  block."
2017-10-25 09:58:14 +02:00
Józef Kucia
b65c42e6f9 libs/vkd3d-shader: Avoid OpVectorShuffle on scalars.
The SPIR-V spec states:

  "Vector 1 and Vector 2 must both have vector types, with the same
  Component Type as Result Type."
2017-10-24 21:26:48 +02:00
Józef Kucia
310335f748 libs/vkd3d-shader: Branch directly to merge block when switch default block is absent. 2017-10-20 18:27:17 +02:00
Józef Kucia
137b5d694b libs/vkd3d-shader: Move inside_block field to vkd3d_control_flow_info. 2017-10-18 19:02:46 +02:00
Józef Kucia
c112f2ed46 libs/vkd3d-shader: Get rid of VKD3D_BLOCK_ELSE. 2017-10-18 19:02:46 +02:00
Józef Kucia
9f831b938a libs/vkd3d-shader: Avoid emitting empty else branches.
We have to patch SpvOpBranchConditional instruction when emitting the
else block because we do not know if an else block is present in
advance.
2017-10-18 19:02:46 +02:00
Józef Kucia
646385e871 libs/vkd3d-shader: Get rid of VKD3D_BLOCK_MAIN. 2017-10-18 19:02:46 +02:00
Józef Kucia
8a047a8eb7 libs/vkd3d-shader: Rename control flow union member for if instructions. 2017-10-18 19:02:46 +02:00
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
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
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
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