Stefan Dösinger (@stefan) commented about dlls/d3drm/tests/d3drm.c:
>
> IDirect3DRM_Release(d3drm1);
> }
> +
> +struct update_rect_context
> +{
> + int rect_count;
> + D3DRECT rect;
> +};
> +
> +static void CDECL update_cb_modify_rect(IDirect3DRMDevice *device, void *arg, int rect_count, D3DRECT *update_rects)
> +{
> + if (rect_count > 0)
> + update_rects[0].x1 = 999999;
> +}
> +static void CDECL update_cb_get_rect(IDirect3DRMDevice *device, void *arg, int rect_count, D3DRECT *update_rects)
Suggestion: Check if *device is indeed the IDirect3DRMDevice (QI IID_IDirect3DRMDevice from it and compare pointers). We have cases in plain ddraw where callbacks and getters return the interface passed in instead of what the header says and applications depend on it.
IOW, if you register the callback with IDirect3DRMDevice3::AddUpdateCallback you may or may not get an IDirect3DRMDevice3 * here.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5161#note_62908
Stefan Dösinger (@stefan) commented about dlls/d3drm/device.c:
> }
>
> object->primary_surface = primary_surface;
> - object->clipper = clipper;
> - IDirectDrawClipper_AddRef(clipper);
I am wondering if this breaks the tests (test_create_device_from_clipper1 checks the refcount), but the IDirectDrawSurface::SetClipper holds a reference itself. So we're probably fine with not holding a ref ourselves, especially if we don't use the clipper object anywhere.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5161#note_62907
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.
--
v4: 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.
vkd3d-shader/ir: Allow adding to a block list without checking for duplicates.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/672
--
v22: 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.
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
I _am_ wondering if there is any real value in the repeated tests for d3drm 1/2/3 on this MR.
I could potentially see some interest at some point in expanding tests around the flags argument of Clear, which only appears in 3. But I really find nothing of particular interest about 2.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5161#note_62880
--
v21: vkd3d-shader/dxil: Implement DX intrinsic Unpack4x8.
vkd3d-shader/dxil: Implement DX intrinsic Pack4x8.
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 reverts commit 6f9d20806e821ab07c8adf81ae6630fae94b00ef.
6f9d208 was committed to work around a Nvidia driver bug that can cause vkGetRandROutputDisplayEXT()
to generate an X exception and crash applications. The bug is later fixed in Nvidia driver 450.56.11
and newer. Thus 6f9d208 is no longer necessary on the newer Nvidia drivers.
Then after 18ae96e, another bug in the Nvidia driver can cause vkGetRandROutputDisplayEXT() to hang
forever when XLockDisplay() is called before vkGetRandROutputDisplayEXT() and this bug is still not
fixed and affects multiple applications. Reverting 6f9d208 allows us to work around the
vkGetRandROutputDisplayEXT() hang bug because then it no longer calls XLockDisplay() before
vkGetRandROutputDisplayEXT().
Nvidia driver 455 was released on September 9th 2020 so hopefully the fix is already widespread. We
could theoretically still keep 6f9d208 on older Nvidia drivers by doing version checks. But it's
more straightforward to remove the workaround since it's not a bug of Wine.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53428
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5179
First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v20: win32u: Use the desktop shared data for GetCursorPos.
server: Move the last cursor time to the desktop session object.
server: Move the cursor position to the desktop session object.
win32u: Open desktop shared objects from session mapping.
server: Allocate shared session object for desktops.
win32u: Open the global session shared mapping.
include: Add ReadNoFence64 inline helpers.
server: Create a global session shared mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3103
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.
--
v2: mshtml: Add FIXME for 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
Create a bandtrack for MIDI files by picking out the MIDI 0xCn events, and creating matching DMUS_PATCH_PMSG.
* * *
This also has a commit adding a stub chordtrack, which is small so I think a separate MR is unwarranted. Can be split out if necessary.
--
v4: dmime: Add a stub chordtrack for MIDI segments.
dmime: Parse MIDI program change events and generate a bandtrack.
dmime: Better MIDI parsing interface.
dmband: Move band.c to dmusic
https://gitlab.winehq.org/wine/wine/-/merge_requests/5141
With the new extension, we may implement wow64 correctly, without `VK_EXT_external_memory_host` hacks. This is both more correct and more performant (essentially eliminating Vulkan wow64 performance penalty).
--
v3: winevulkan: Use VK_EXT_map_memory_placed for memory mapping on wow64.
winevulkan: Add support for VK_EXT_map_memory_placed.
winevulkan: Refactor extra extensions handling in wine_vk_device_convert_create_info.
winevulkan: Use handle map for memory objects.
winevulkan: Rename wine_device_memory mapping to vm_map.
winevulkan: Remove no longer needed spec workarounds.
winevulkan: Update to VK spec version 1.3.278.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5128
--
v6: win32u: Don't move an owned window on top of its owner if it's not activated ever.
user32/tests: Test the z-order for an owned window that's not activated ever.
win32u: Skip windows that are not activated even once in activate_other_window().
user32/tests: Add window activation tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4066
--
v5: win32u: Don't move an owned window on top of its owner if it's not activated ever.
user32/tests: Test the z-order for an owned window that's not activated ever.
win32u: Skip windows that are not activated even once in activate_other_window().
user32/tests: Add window activation tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4066
--
v20: 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.
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
--
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
Just using the servers to test for now because this test seems to pass on Windows.
This test seems to be passing for me on Windows 10.
Signed-off-by: David Kahurani k.kahurani(a)gmail.com
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3558
--
v4: win32u, explorer: Restore display settings on process exit.
winex11.drv: Process events in X11DRV_GetCurrentDisplaySettings.
winex11.drv: Call X11DRV_DisplayDevices_RegisterEventHandlers in x11drv_init.
user32/tests: Test that display settings are restored on process exit.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5060
Freetype's FT_Load_Glyph may return different glyph metrics (in particular, horiAdvance) depending on load target flags (FT_LOAD_TARGET_MONO, FT_LOAD_TARGET_NORMAL ...). Among the consequences of that are:
- the size of, e. g, GetTextExtentPoint() doesn't match the size of actually rendered text;
- DrawTextW() with DT_CALCRECT flag returns wrong bounding rectangle.
In the core of that is GetGlyphOutline() returning different values for GGO_METRICS format (used in various glyph metrics query functions) and the actual format used during rendering.
It probably make sense to use effective fonts rendering option for GGO_METRICS so that matches. I did some ad-hoc testing on Windows with currently problematic Tahoma font and quite expectedly GetGlyphOutline(GGO_METRICS) always returns the same metrics as other output format options. While all the options also have the same metrics between each other (which is still not the case with Wine). I guess it is not easily possible to make all the face load options match each other with freetype (nor I am sure that is always the case on Windows for all the possible fonts), but making GGO_METRICS return the metrics matching actual gdi device context setup looks more important.
Fixes Idle Spiral being unable to render typed text in save / load dialogs (which is using Winforms from Unity's Mono).
--
v3: win32u: Use font AA flags when querying glyph outline with GGO_METRICS.
d3dx9/tests: Make test_ID3DXFont() less dependent on GetGlyphOutlineW(GGO_METRICS) behaviour.
win32u: Set all glyph load flags in get_load_flags().
win32u: Store effective AA flags in font_physdev.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4406
I'm not completely sure what the expectations are regarding these registry key paths, but @afrantzis said Wayland reports adapters in an arbitrary order and this would let us find the right adapter config and their current settings based on their unique name instead.
Other drivers simply format the numeric ID themselves, though might not be 0-based index anymore.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5137
While reviewing !671 I wrote a few tests that are probably not too fundamental, but since now they exist it makes sense to keep them. !671 doesn't fix nor break any of them, anyway.
--
v2: tests: Test how constant folding works on SM1.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/674
This is a half-witted attempt at avoiding GdipGetRegionHrgn.
in GdipFillPath. The use of GdipGetRegionHrgn happens as
consequence of the use of regions in internal code. From the look
of it, as per the development plans, it should be possible to
remove it by avoiding internal use of regions.
This could be done, for instance, by reducing a region to a path
before computing on it or rendering it. However, this is going to
be fairly if not very complicated and, just like with the other MR,
will not guarantee optimization.
This patch, for instance, might not have observable optimization
impact. This is because 'trace_path' and 'PathToRegion' are still
being used and are probably the most computation heavy sections of
GdipGetRegionHrgn. Still, it should be possible to compute the exactly
what data to render without these two methods. This could however get
a bit complicated.
Signed-off-by: David Kahurani <k.kahurani(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5152
Create a bandtrack for MIDI files by picking out the MIDI 0xCn events, and creating matching DMUS_PATCH_PMSG.
* * *
This also has a commit adding a stub chordtrack, which is small so I think a separate MR is unwarranted. Can be split out if necessary.
--
v3: dmime: Add a stub chordtrack for MIDI segments.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5141
While reviewing !671 I wrote a few tests that are probably not too fundamental, but since now they exist it makes sense to keep them. !671 doesn't fix nor break any of them, anyway.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/674
Regarding dirty rectangles:<br>
Documentation for `ForceUpdate` states that "The system might update any region that is larger than the specified rectangle, including possibly the entire window". While native seems to use a sort of dirty-rectangle approach, for this MR, I am simply dirtying the entire surface. If someday someone did want to more-closely match the behavior of native, much can be learned from the rectangles passed to the update callbacks.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5161
With the new extension, we may implement wow64 correctly, without `VK_EXT_external_memory_host` hacks. This is both more correct and more performant (essentially eliminating Vulkan wow64 performance penalty).
--
v2: winevulkan: Use VK_EXT_map_memory_placed for memory mapping on wow64.
winevulkan: Add support for VK_EXT_map_memory_placed.
winevulkan: Refactor extra extensions handling in wine_vk_device_convert_create_info.
winevulkan: Use handle map for memory objects.
winevulkan: Rename wine_device_memory mapping to vm_map.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5128
~~This applies on top of !656, the last three commits belong here.~~
--
v10: vkd3d-shader/ir: Sort each loop by block label.
vkd3d-shader/ir: Dump the loops in the control flow graph.
vkd3d-shader/ir: Keep track of loops by header block.
vkd3d-shader/ir: Keep a reference to the message context inside struct vsir_cfg.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/662
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.
--
v3: 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.
vkd3d-shader/ir: Allow adding to a block list without checking for duplicates.
vkd3d-shader/ir: Sort each loop by block label.
vkd3d-shader/ir: Dump the loops in the control flow graph.
vkd3d-shader/ir: Keep track of loops by header block.
vkd3d-shader/ir: Keep a reference to the message context inside struct vsir_cfg.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/672
This PR 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.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5156
--
v3: vkd3d-shader/dxil: Convert SplitDouble IMMCONST64 src params to IMMCONST.
vkd3d-shader/spirv: Support 64-bit data types for 32-bit IMMCONST registers.
tests/shader-runner: Add raw UAV tests.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/675
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.
--
v2: 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.
vkd3d-shader/ir: Allow adding to a block list without checking for duplicates.
vkd3d-shader/ir: Sort each loop by block label.
vkd3d-shader/ir: Dump the loops in the control flow graph.
vkd3d-shader/ir: Keep track of loops by header block.
vkd3d-shader/ir: Keep a reference to the parser inside struct vsir_cfg.
vkd3d-shader/ir: Compute the loops in the control flow graph.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/672
~~This applies on top of !656, the last three commits belong here.~~
--
v9: vkd3d-shader/ir: Sort each loop by block label.
vkd3d-shader/ir: Dump the loops in the control flow graph.
vkd3d-shader/ir: Keep track of loops by header block.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/662
Part 1 of a set of changes for making the recording of highlights and "Play of the Game"s to mp4 in Overwatch work.
This MR contains most of the required IMFMediaSink changes.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5159
--
v6: server: Dispatch rawinput messages using the rawinput process list.
server: Keep a list of processes that can receive rawinput messages.
server: Keep a list of threads connected to each desktop.
server: Send hardware input to the visible input desktop.
server: Keep track of the winstation input desktop.
win32u: Introduce new NtUserSwitchDesktop syscall stub.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5066
Here is a preview of my shader cache work for early comments. It isn't complete, but does successfully cache things.
What's there:
* A new vkd3d API that is used internally for caching, can be used to implement the ID3D12ShaderCacheSession interface and hopefully be used by wined3d as well
* Simple saving and loading of the cached objects
* It is used to cache render passes, root signatures and pipeline states
What is not yet there
* Partial cache loading and eviction
* ID3D12ShaderCacheSession - largely because it needs bumping ID3D12Device up to version 9, which may bring unrelated regressions. For this and tests see my "cache-rework" branch (which
* Cache file compression
* Incremental updates of cache files - right now they are rewritten from scratch on exit
* Loading the cache in an extra thread. The pipeline state creation code will need some refactor for that
I am not quite happy yet with the two patches that write and reload actual graphics pipelines. The way I am storing the d3d settings aren't quite consistent yet either - in some cases I use the d3d input data as key directly, in others I store them as values attached to a hash value. The latter is usually the case if I need to cross-reference something, e.g. have a link from the pipeline state to the root signature. This kind of setup shows how wined3d can build a chain of linked state though.
There are also known issues with locking, explained in comments in the patches.
--
v2: vkd3d: Try to find a read-only cache in C:\windows\scache
vkd3d: Cache and preload compute pipelines.
DEBUG: Make cache profiling more visible
vkd3d: Add some cache efficiency debug code.
vkd3d: Add EXT_pipeline_creation_feedback.
vkd3d: Catch and release graphics pipelines.
Store graphics pipelines in the cache.
vkd3d: Precreate root signatures from cache
vkd3d: Keep root signatures around.
Store render passes in the on-disk cache and recreate them on startup.
vkd3d: Store the VK pipeline cache in an on-disk vkd3d cache.
vkd3d: Keep the application name around.
Add a win32 version of vkd3d_get_program_name.
vkd3d: Basic shader cache writing and reading.
vkd3d: Replace the custom render pass cache with vkd3d_shader_cache.
vkd3d: Implement vkd3d_shader_cache_enumerate.
Add cache locking.
vkd3d: Implement vkd3d_shader_cache_get.
vkd3d: Implement vkd3d_shader_cache_put.
Create and destroy the shader cache tree.
vkd3d: Implement shader_cache_open/close.
vkd3d: Define and stub the shader cache API.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/541
--
v2: vkd3d-shader/dxil: Convert SplitDouble IMMCONST64 src params to IMMCONST.
vkd3d-shader/spirv: Support 64-bit data types for 32-bit IMMCONST registers.
tests/shader-runner: Add raw UAV tests.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/675
--
v19: 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.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/564