--
v23: vkd3d-shader/dxil: Emit a specific warning for explicit wave size.
vkd3d-shader/dxil: Emit a specific warning for RT acceleration structs.
vkd3d-shader/spirv: Implement the UNPACK_4X8 instruction.
vkd3d-shader/dxil: Implement DX intrinsic Unpack4x8.
vkd3d-shader/spirv: Implement the PACK_4X8 instruction.
vkd3d-shader/dxil: Implement DX intrinsic Pack4x8.
vkd3d-shader/dxil: Add a second pre-pass for AnnotateHandle.
vkd3d-shader/dxil: Implement DX intrinsics Dot4AddI8Packed and Dot4AddU8Packed.
vkd3d-shader/spirv: Introduce DP4_I8 and DP4_U8 instructions.
vkd3d-shader/dxil: Support FCMP_ORD and FCMP_UNO for CMP2.
vkd3d-shader/spirv: Introduce ORD and UNO instructions.
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: Enable KHR_fragment_shader_barycentric.
vkd3d-shader/dxil: Support the barycentrics register type.
vkd3d: Enable EXT_shader_image_atomic_int64.
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.
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.
vkd3d-shader/dxil: Handle constexpr pointer cast.
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.
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
This applies on top of !662, the last four commits belong here.
Here we compute a topological order (plus some additional properties) of the shader blocks. Eventually the blocks will be emitted precisely in this order, after having been enriched with structured control flow information.
--
v7: vkd3d-shader/ir: Keep loops contiguous in the topological sort.
vkd3d-shader/ir: Dump the topological order of the control flow graph.
vkd3d-shader/ir: Topologically sort the control flow graph.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/672
This MR ensures that document mode isn't updated on the wrong document when a DOMContentLoaded event occurs. This is done by always using the event target dispex (instead of the dispex associated with doc associated with the event listener).
This fixes the launcher for Swords of Legends Online.
--
v6: mshtml: Don't handle special case when doc != node->doc.
mshtml: Always use the event target dispex.
mshtml/tests: Add test for document mode after InitNew and Load.
mshtml: Use generic event dispatcher for DOMContentLoaded.
mshtml: Pass DOMEvent instead of nsIDOMEvent during handle_event.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5156
This MR ensures that document mode isn't updated on the wrong document when a DOMContentLoaded event occurs. This is done by always using the event target dispex (instead of the dispex associated with doc associated with the event listener).
This fixes the launcher for Swords of Legends Online.
--
v5: mshtml: Don't handle special case when doc != node->doc.
mshtml: Always use the event target dispex.
mshtml/tests: Add test for document mode after InitNew and Load.
mshtml: Use generic event dispatcher for DOMContentLoaded.
mshtml: Pass DOMEvent instead of nsIDOMEvent during handle_event.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5156
This MR ensures that document mode isn't updated on the wrong document when a DOMContentLoaded event occurs. This is done by always using the event target dispex (instead of the dispex associated with doc associated with the event listener).
This fixes the launcher for Swords of Legends Online.
--
v4: mshtml: Don't handle special case when doc != node->doc.
mshtml: Always use the event target dispex.
mshtml/tests: Add test for document mode after InitNew and Load.
mshtml: Use generic event dispatcher for DOMContentLoaded.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5156
This MR introduces support for OpenGL in the Wayland driver.
Since the MR started to become somewhat long I have left some things for a subsequent part 13.2:
* wgl(Get)SwapIntervalEXT (which means everything is vsync-ed at the moment)
* wglShareLists
* wglCreateContextAttribsARB
* Fix for some apps appearing translucent in certain compositors (typically when fullscreen).
Missing features not planned to be part of the 13.x MRs:
* Offscreen rendering through pbuffers or pixmaps, since Wayland EGL doesn't support them (perhaps we can simulate with FBOs instead?).
* Front buffer rendering. Again Wayland EGL doesn't support this, and certainly not in the form needed (i.e., the surface should be available for additional rendering with GDI). In the experimental branch I implemented a workaround that seemed to work for many cases, but will need to revisit and reevaluate options. IIRC, the most common case I have seen for this is when using wined3d/gl for older (Direct)2D games, so perhaps we can find a better solution at that layer.
* Child window rendering (this needs infrastructure in Wayland driver core which will enable both GL and Vulkan rendering in child windows).
* Cross-process rendering.
Thanks!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5177