-- v19: vkd3d-shader/spirv: Support bool comparisons. vkd3d-shader/dxil: Support scalar ALLOCA. vkd3d-shader/dxil: Handle resource handle creation in a pre-pass. vkd3d-shader/dxil: Bitcast the result of image atomic ops if necessary. vkd3d-shader/dxil: Emit an error for mesh, amplification and library shaders. vkd3d-shader/dxil: Support SV_ShadingRate. vkd3d-shader/dxil: Support the barycentrics register type. vkd3d-shader/spirv: Support 64-bit UAV atomics. vkd3d-shader/dxil: Implement DX intrinsic WaveQuadReadLaneAt. vkd3d-shader/dxil: Implement DX intrinsic WavePrefixOp. vkd3d-shader/dxil: Ignore "llvm.lifetime.*" intrinsics. vkd3d-shader/dxil: Implement DX intrinsic AnnotateHandle. vkd3d-shader/dxil: Implement DX intrinsic CreateHandleFromBinding. vkd3d-shader/dxil: Also set the result type for cast to minimum-precision. vkd3d-shader/dxil: Emit a minimum 4-byte stride for minimum-precision TGSMs. Force 64-bit support. vkd3d-shader/spirv: Do not convert 64-bit write mask to 32-bit if register info is 64-bit. vkd3d-shader/dxil: Handle forward-referenced GEP. vkd3d-shader/ir: Do not validate SSA with a zero write mask. vkd3d-shader/dxil: Ignore the auto binding space property. Force Vulkan 1.1 vkd3d-shader/dxil: Handle constexpr pointer cast. Force wave op support. vkd3d-shader/dxil: Set the correct swizzle and mask in sm6_parser_emit_dx_calculate_lod(). tests/shader-runner: Add a clip distance array test. vkd3d-shader/ir: Transform clip/cull inputs/outputs for DXIL shaders also. tests/d3d12: Test multiple clip distance inputs in test_clip_distance(). tests/d3d12: Use five clip distances for the multiple test in test_clip_distance(). vkd3d-shader/ir: Transform clip/cull outputs and patch constants into arrays. vkd3d-shader/ir: Transform clip/cull inputs into an array. vkd3d-shader/spirv: Support no-op signature elements. vkd3d: Implement GetCopyableFootprints1(). vkd3d: Implement CreatePlacedResource1(). vkd3d: Implement CreateCommittedResource2(). vkd3d: Implement GetResourceAllocationInfo2(). tests/d3d12: Add tests for GetCopyableFootprints1(). tests/d3d12: Add tests for CreatePlacedResource1(). tests/d3d12: Add tests for CreateCommittedResource2(). tests/d3d12: Add tests for GetResourceAllocationInfo2(). vkd3d: Add ID3D12Device8 interface stubs. vkd3d: Return DXGI_ERROR_NOT_FOUND from GetProtectedResourceSession(). vkd3d: Add ID3D12CommandList6 interface stubs. vkd3d: Replace the descriptor object cache with a thread-local implementation. vkd3d-shader/spirv: Apply the sequentially consistent ordering flag to atomic instructions. vkd3d-shader/spirv: Handle in-bounds register indices. vkd3d-shader/spirv: Trace instead of warn for alignment of indexable temps. vkd3d-shader/spirv: Emit aligned register copies. vkd3d-shader/spirv: Emit aligned register loads. vkd3d-shader/dxil: Use a bool for tracking loop merge targets. vkd3d-shader/dxil: Use a bool for tracking reachability. vkd3d-shader/dxil: Use node visit flag in cfg_structuriser_insert_phi(). vkd3d-shader/dxil: Use node visit flag in cfg_structuriser_find_break_target_for_selection_construct(). vkd3d-shader/dxil: Use node visit flag in cfg_structuriser_traverse_dominated_blocks_and_rewrite_branch(). vkd3d-shader/dxil: Use node visit flag in cfg_structuriser_can_backtrace_to(). vkd3d-shader/dxil: Use node visit flag in sm6_block_post_dominates_any_work(). vkd3d-shader/dxil: Use node visit flag in sm6_block_reaches_backward_visited_node(). vkd3d-shader/dxil: Use node visit flag in the loop tracer. vkd3d-shader/dxil: Use node visit flag in sm6_block_dominates_all_reachable_exits(). vkd3d-shader/dxil: Introduce helpers for allocating flags to track node visits. vkd3d-shader/spirv: Emit interpolation mode for outputs. vkd3d-shader/dxil: Fix eliminate_node_links_preds_to_succ for multiple uses of inner PHI. vkd3d-shader/dxil: Don't add fake_succ if we already have a normal succ. vkd3d-shader/dxil: Invent a ladder block if we have to in loops. vkd3d-shader/dxil: Refactor ladder creation in find_loops. vkd3d-shader/dxil: Never duplicate back-edges. vkd3d-shader/dxil: Reconsider continue breaks if they can reach more normal break nodes. vkd3d-shader/dxil: Handle breaking return constructs better. vkd3d-shader/dxil: Consider switch blocks that branch to continue block. vkd3d-shader/dxil: Consider duplicate branches when eliminating degenerates. vkd3d-shader/dxil: Handle scenario where switch breaks out unexpectedly. vkd3d-shader/dxil: Reduce switch merge scope when appropriate. vkd3d-shader/dxil: Refactor traverse_dominated_blocks to always filter multi-access. vkd3d-shader/dxil: Try harder to tie-break merge fixups with early return. vkd3d-shader/dxil: Don't consider vestigal breaks to be break candidates. vkd3d-shader/dxil: Fix backwards traversal of nested loops that are not reachable. vkd3d-shader/dxil: Rewrite multiple back edges if needed. vkd3d-shader/dxil: Consider that split merge blocks can be hidden in pred blocks. vkd3d-shader/dxil: Fix CFG validation error after last SPIRV-Tools. vkd3d-shader/dxil: Consider more scenarios where we need to introduce dummy case labels. vkd3d-shader/dxil: Consider multiple impossible switch merge candidates. vkd3d-shader/dxil: Fix a scenario where we need loop merge rather than selection merge. vkd3d-shader/dxil: Fix bug in find_common_post_dominator_with_ignored_break. vkd3d-shader/dxil: Avoid catastrophic cancellation of PHI nodes when merging PHI nodes. vkd3d-shader/dxil: Fix compiler warnings. vkd3d-shader/dxil: Emit non-sysval bool inputs/outputs as uint. vkd3d-shader/dxil: Emit register minimum precision. vkd3d-shader/spirv: Emit minimum precision decoration. vkd3d: Use FIXME_ONCE in d3d12_command_list_WriteBufferImmediate(). vkd3d-shader/dxil: Implement DX instruction CBufferLoad. vkd3d-shader/spirv: Support scalar constant buffer load. tests/shader_runner: Test wave ops. vkd3d-shader/dxil: Implement DX instruction WaveActiveAllEqual. vkd3d-shader/spirv: Introduce a WAVE_ACTIVE_ALL_EQUAL instruction. vkd3d-shader/spirv: Enable capability GroupNonUniform for wave inputs. vkd3d-shader/dxil: Implement DX instruction WaveActiveBallot. vkd3d-shader/spirv: Introduce a WAVE_ACTIVE_BALLOT instruction. vkd3d-shader/main: Deduplicate dumped shaders. vkd3d-shader/dxil: Implement DX instruction WaveQuadOp. vkd3d-shader/dxil: Implement DX instructions WaveAllTrue and WaveAnyTrue. vkd3d-shader/dxil: Implement DX instruction WaveGetLaneCount. vkd3d-shader/spirv: Introduce WAVE_QUAD_OP_D/H/V instructions. vkd3d-shader/spirv: Introduce WAVE_ALL_TRUE and WAVE_ANY_TRUE instructions. vkd3d-shader/spirv: Introduce a WAVELANECOUNT register. vkd3d: Use FIXME_ONCE for BeginEvent() and EndEvent(). tests: Introduce test compilation with dxc. tests/d3d12: Introduce DXC compiled shader buffers and a dxc_compiler header. vkd3d: Report highest shader model as 6.0. vkd3d-shader/spirv: Do not warn if unhandled global flags are zero. vkd3d-shader/spirv: Silence more global flag fixmes. vkd3d-shader/dxil: Implement DX instruction WaveReadLaneAt. vkd3d-shader/dxil: Implement DX instruction WaveIsFirstLane. vkd3d-shader/dxil: Implement DX instruction WaveGetLaneIndex. vkd3d-shader/dxil: Implement DX instruction WaveActiveBit. vkd3d-shader/dxil: Implement DX instruction WaveActiveOp. vkd3d-shader/dxil: Implement DX instructions WaveAllBitCount, WavePrefixBitCount and WaveReadLaneFirst. vkd3d-shader/spirv: Introduce a WAVELANEINDEX register type. vkd3d-shader/spirv: Introduce a WAVE_READ_LANE_AT instruction. vkd3d-shader/spirv: Introduce a WAVE_IS_FIRST_LANE instruction. vkd3d-shader/spirv: Introduce WAVE_ACTIVE_BIT_* and WAVE_ACTIVE_OP_* instructions. vkd3d-shader/spirv: Introduce a WAVE_READ_LANE_FIRST instruction. vkd3d-shader/spirv: Introduce WAVE_ALL_BIT_COUNT and WAVE_PREFIX_BIT_COUNT instructions. vkd3d: Initialise wave ops feature options. vkd3d-shader: Introduce a wave ops feature flag. vkd3d: Use Vulkan 1.1 and SPIR-V 1.3. vkd3d-shader/dxil: Implement DX instruction OutputControlPointID. vkd3d-shader/dxil: Implement DX instruction DomainLocation. vkd3d-shader/dxil: Implement DX instruction StorePatchConstant. vkd3d-shader/dxil: Implement DX instructions LoadOutputControlPoint and LoadPatchConstant. vkd3d-shader/dxil: Support constexpr GEP. vkd3d-shader/dxil: Support patch constant functions and signatures. vkd3d-shader/dxil: Implement DX instruction Discard. vkd3d-shader/dxil: Implement DX instructions EmitStream, CutStream and EmitThenCutStream. vkd3d-shader/dxil: Implement DX instruction SampleIndex. vkd3d-shader/dxil: Implement DX instructions EvalSampleIndex and EvalCentroid. vkd3d-shader/dxil: Implement DX instruction PrimitiveID. vkd3d-shader/dxil: Implement DX instructions ThreadId, GroupId, ThreadIdInGroup and FlattenedThreadIdInGroup. vkd3d-shader/dxil: Implement DX instruction Coverage. vkd3d-shader/dxil: Implement DX instruction RenderTargetGetSampleCount. vkd3d-shader/dxil: Implement DX instructions Texture2DMSGetSamplePosition and RenderTargetGetSamplePosition. vkd3d-shader/dxil: Implement DX instruction CalculateLOD. vkd3d-shader/dxil: Implement DX instructions Dot2, Dot3 and Dot4. vkd3d-shader/dxil: Implement DX instruction MakeDouble. vkd3d-shader/dxil: Implement DX instruction Saturate. vkd3d-shader/dxil: Implement DX instruction FAbs. vkd3d-shader/dxil: Implement DX instructions FMa, FMad, IMad and UMad. vkd3d-shader/spirv: Use source data type in spirv_compiler_emit_imad(). vkd3d-shader/spirv: Support VKD3DSI_PRECISE_XYZW for SINCOS. vkd3d-shader/spirv: Support VKD3DSI_PRECISE_XYZW for GLSL extension instructions. vkd3d-shader/dxil: Implement DX instruction BufferUpdateCounter. vkd3d-shader/dxil: Implement DX instruction Barrier. vkd3d-shader/spirv: Do not assert data type is uint in spirv_compiler_emit_store_uav_raw_structured(). vkd3d-shader/dxil: Support I/O registers. vkd3d-shader/dxil: Load hull shader properties. vkd3d-shader/dxil: Load domain shader properties. vkd3d-shader/dxil: Load geometry shader properties. vkd3d-shader/dxil: Implement a CFG structuriser. vkd3d-shader/dxil: Implement the DXIL CMPXCHG instruction. vkd3d-shader/dxil: Implement the DXIL ATOMICRMW instruction. vkd3d-shader/spirv: Support signed int in spirv_compiler_emit_store_tgsm(). vkd3d-shader/spirv: Support signed int in spirv_compiler_emit_ld_tgsm(). vkd3d-shader/spirv: Support forward-referenced value ids. tests: Add SM 6 shader runner tests. vkd3d: Implement aliasing barriers. vkd3d: Support formats DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM and DXGI_FORMAT_B4G4R4A4_UNORM. vkd3d: Support depth stencil formats for resources without ALLOW_DEPTH_STENCIL. vkd3d-shader/dxil: Implement groupshared address space global variables. vkd3d-shader/spirv: Support zero-initialisation for workgroup memory. vkd3d-shader/spirv: Use the register data type in spirv_compiler_emit_workgroup_memory(). vkd3d-shader/spirv: Handle the PHI instruction. vkd3d-shader/spirv: Introduce an UNREACHABLE instruction. vkd3d-shader/spirv: Support 64-bit switch. vkd3d-shader/dxil: Support 16-bit types. vkd3d-shader/spirv: Introduce HALF and UINT16 types for minimum precision. vkd3d-shader/spirv: Introduce a data_type_is_floating_point() helper function. tests/shader-runner: Add tests for minimum-precision constants. tests/shader-runner: Run Shader Model 6 tests in the crossbuild. vkd3d-shader/spirv: Handle UINT64 source in FIRSTBIT_HI and FIRSTBIT_SHI. vkd3d-shader/dxil: Implement DX intrinsic TextureGatherCmp. vkd3d-shader/dxil: Implement DX intrinsic TextureGather. tests/shader-runner: Add a Gather test with non-constant offset.
This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/648