Based on mingw-w64.
System modules on Windows have load config available. In fact, all applications using the default MSVC for crt have it. mingw-w64 provides the load config, but it also requires linker to use it and currently only LLD supports it. This MR does the same in winecrt0. We will need it on both ARM64 and ARM64EC targets to support ARM64X (which requires LLD for other reasons anyway).
--
v4: winebuild: Output load config on PE targets.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5184
Add support for NV12 to ``evr_render()``, as otherwise no video is rendered
at all in games like Age of Empires II DE (see: https://github.com/ValveSoftware/Proton/issues/3189#issuecomment-1962984985)
Interestingly, this doesn't result in NV12 data being passed to ``evr_copy_sample_buffer()`` as I suspected, so the RGB32 copying code seems to work fine.
Nevertheless, add a warning if we get an unknown format in ``evr_copy_sample_buffer()``, as that could potentially lead to nasty memory
issues (e.g., if we get the width/lines/stride wrong).
I confess, I don't really understand what's going on here: the format of the video is definitely ``MFVideoFormat_NV12`` in ``evr_render()``, but I never see any attempt to use NV12 in ``evr_copy_sample_buffer()`` — it's always ``MFVideoFormat_RGB32``. For that reason, I've also not tried to write any tests here — I don't know the MF API well enough to plumb this all the way through. On the bright side, though, the fact that everything mysteriously ends up as RGB32 means I haven't had to write an NV12 codepath for ``evr_copy_sample_buffer()`` — I'm not sure exactly how to handle the multi-plane formats there.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5157
--
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