On Fri Mar 8 17:52:04 2024 +0000, Stefan Dösinger wrote:
> The test passes on the HW device of my way newer Radeon Polaris card on
> Windows 11. As of now I am unsuccessful in getting my Radeon 9000 from
> 2002 to produce any pick results.
> On a quick test run it seems Lego Island is happy with setting *count =
> 0 in IDirect3DDevice::GetPickRecords. That prevents it from trying to
> essentially malloc a random amount of memory. But I am not entirely
> certain, the menu of this game is confusing. I was (intellectually)
> unable to start a game even on Windows...
> I am downloading FIGHTING to see if it works on my old machine and to
> see if it uses a HW device or just the RGB device. Judging by the
> screenshots it might just software render.
Ok, I got pick results out of my Radeon 9000. Let's just say, it is a bit ... picky.
What I had to do was call BeginScene(); Execute(); EndScene(); before calling Pick. But don't do it from the same stack frame, or it fails. And don't think of having some zeroes on the stack. (Same stack frame: If I move the Execute call into get_pickrecords_() picking fails again)
Lego Island works on this GPU though, with the HW device. I can select the lego plants at least, although clicking them is unreliable. Big thanks to itsmattkc for the video in bug 10729, comment 17. I would never have thought of drag and dropping the photo onto the track, or listening to the Lego dude blather forever.
Long story short? I guess this is yet another weirdo bug in my 20 years old GPU driver in a by then already outdated and rarely used feature. We should probably accept zero pick results as broken in a way that doesn't pollute the test too much.
I attached a diff that made parts of the test work:
[urk.diff](/uploads/749fcb673c6a758f7534046413d5e4c7/urk.diff)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_64049
They are substancially different from any other register type, so
it makes sense to have them stand out. Also, they help segmenting
visually the code into blocks, because labels are usually found
either at the beginning or at the end of a block.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/693
--
v3: vkd3d-shader/spirv: Handle the ORD and UNO instructions.
vkd3d-shader/dxil: Support FCMP_ORD and FCMP_UNO for CMP2.
tests/shader-runner: Add a test for FCMP_ORD (is ordered).
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/686
More commits in one MR than usual, but the implementations are quite short, and it's good to get them all in at once.
--
v2: 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.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/683
--
v4: vkd3d-shader: Refactor common code for vkd3d_shader_compile().
vkd3d-shader: Refactor common code for vkd3d_shader_scan().
vkd3d-shader: Treat the HLSL case specially in vkd3d_shader_compile().
vkd3d-shader: Treat the HLSL case specially in vkd3d_shader_scan().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/679
~~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.
--
v9: 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
Buffers could be used with 'shared' and 'single' modifiers. There is a bit more work left to do to support this - 'shared' needs a compiler flag to enable child effects to be useful, and 'single' is not a keyword.
--
v4: vkd3d-shader/hlsl: Allow modifiers on buffer declarations.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/666
Basically !427, but in the form of a custom test driver script.
If I am not mistaken, for the driver script to run properly it is necessary to run
"autoreconf" in the source directory and call the configure script again in the build directory.
The output when running tests would be the same we currently have except for tests that don't PASS,
in that case, detailed information for each failing line will appear. Make a failing test to try it!
--
v5: tests: Get detailed information on failing tests.
tests: Copy autotool's testsuite driver script.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/661
I wanted to use ._xy element access to make it shorter, but that attempt was crushed by the reality - such indexing apparently compiles but does not produce correct element access loads. I'm going to update once this is fixed.
--
v10: vkd3d-shader/hlsl: Add determinant() function.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/329
--
v6: vkd3d-dxbc: Add an option to choose the output filename.
vkd3d-dxbc: Add an option to re-emit the shader with the correct checksum.
vkd3d-dxbc: Add an option to ignore checksum.
vkd3d-shader/dxbc: Add flag to ignore the DXBC checksum.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/582
This MR adds support for some more OpenGL functionality:
* wglCreateContextAttribsARB
* wglShareLists
* wgl(Get)SwapIntervalEXT
I originally intended to also include a fix for the translucency issue seen in some compositors, by using EGL_EXT_present_opaque. However, I'll hold off for now since I am seeing some issues with certain hardware and pixel formats when using this extension. Initial investigation indicates it is a problem in Mesa. For anyone who is affected by the translucency issue and wants to try out the patch in their local build anyway, it is at: https://gitlab.winehq.org/afrantzis/wine/-/commit/0685d1d2cfc126e2bb546fe2c…
--
A question for the upcoming work:
In the next OpenGL part I would like to focus on `WGL_ARB_pixel_format`. I was thinking that if a driver implements `wglGetPixelFormatAttribivARB` then it would be possible, in theory at least, to have a default implementation of `wglChoosePixelFormatARB` (and `wglGetPixelFormatAttribfvARB`) in `opengl32`. I am tempted to do this, instead of adding one more driver specific full implementation, although I am not yet sure if there any driver specific considerations or behaviors that would pose issues with such approach. Thoughts?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5264
On Fri Mar 8 17:52:04 2024 +0000, Stefan Dösinger wrote:
> So on my Radeon 9000 (r250), Windows XP, this produces no pick results
> for the HW device:
> ```
> ddraw1.c:15913: Driver string: "ati2dvag.dll"
> ddraw1.c:15914: Description string: "Mobility Radeon 9000"
> ddraw1.c:15915: Driver version 0.0.0.0
> ddraw1.c:15638: Test failed: run {84e63de0-46aa-11cf-816f-0000c020156e}
> ddraw1.c:15689: Test failed: Got incorrect number of pick records
> (expected 1): 0.
> ddraw1.c:15696: Test failed: Got incorrect number of pick records
> (expected 3): 0.
> ddraw1.c:15728: Test failed: Got incorrect number of pick records
> (expected 1): 0.
> ddraw1.c:15737: Test failed: Got incorrect number of pick records
> (expected 1): 0.
> ddraw1.c:15765: Test failed: Got an unexpected ratio of pick
> hits/misses: 0/256.
> ddraw1.c:15805: Test failed: Got incorrect number of pick records
> (expected 1): 0.
> ddraw1.c:15817: Test failed: Got incorrect number of pick records
> (expected 3): 0.
> ddraw1.c:15829: Test failed: Got incorrect number of pick records
> (expected 1): 0.
> ddraw1.c:15838: Test failed: Got incorrect number of pick records
> (expected 1): 0.
> ddraw1.c:15866: Test failed: Got an unexpected ratio of pick
> hits/misses: 0/256.
> ddraw1.c:15638: Test failed: run {a4665c60-2673-11cf-a31a-00aa00b93356}
> 08f4:ddraw1: 204 tests executed (0 marked as todo, 0 as flaky, 12
> failures), 0 skipped.
> ```
> I'll try to figure out why and see if I can test the game that inspired
> the original author to implement this method to see if it works.
> The RGB device works as expected.
The test passes on the HW device of my way newer Radeon Polaris card on Windows 11. As of now I am unsuccessful in getting my Radeon 9000 from 2002 to produce any pick results.
On a quick test run it seems Lego Island is happy with setting *count = 0 in IDirect3DDevice::GetPickRecords. That prevents it from trying to essentially malloc a random amount of memory. But I am not entirely certain, the menu of this game is confusing. I was (intellectually) unable to start a game even on Windows...
I am downloading FIGHTING to see if it works on my old machine and to see if it uses a HW device or just the RGB device. Judging by the screenshots it might just software render.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_64027
So on my Radeon 9000 (r250), Windows XP, this produces no pick results for the HW device:
```
ddraw1.c:15913: Driver string: "ati2dvag.dll"
ddraw1.c:15914: Description string: "Mobility Radeon 9000"
ddraw1.c:15915: Driver version 0.0.0.0
ddraw1.c:15638: Test failed: run {84e63de0-46aa-11cf-816f-0000c020156e}
ddraw1.c:15689: Test failed: Got incorrect number of pick records (expected 1): 0.
ddraw1.c:15696: Test failed: Got incorrect number of pick records (expected 3): 0.
ddraw1.c:15728: Test failed: Got incorrect number of pick records (expected 1): 0.
ddraw1.c:15737: Test failed: Got incorrect number of pick records (expected 1): 0.
ddraw1.c:15765: Test failed: Got an unexpected ratio of pick hits/misses: 0/256.
ddraw1.c:15805: Test failed: Got incorrect number of pick records (expected 1): 0.
ddraw1.c:15817: Test failed: Got incorrect number of pick records (expected 3): 0.
ddraw1.c:15829: Test failed: Got incorrect number of pick records (expected 1): 0.
ddraw1.c:15838: Test failed: Got incorrect number of pick records (expected 1): 0.
ddraw1.c:15866: Test failed: Got an unexpected ratio of pick hits/misses: 0/256.
ddraw1.c:15638: Test failed: run {a4665c60-2673-11cf-a31a-00aa00b93356}
08f4:ddraw1: 204 tests executed (0 marked as todo, 0 as flaky, 12 failures), 0 skipped.
```
I'll try to figure out why and see if I can test the game that inspired the original author to implement this method to see if it works.
The RGB device works as expected.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_64021
On Fri Mar 8 15:47:14 2024 +0000, Jeffrey Smith wrote:
> I checked this, and you are correct. I will improve the test to cover
> this as well.
Looks good. I think it is awkward that it returns D3D_OK regardless of the insufficient buffer, but that's Microsoft's choice, not yours...
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_64019
Patches with tests and other miscellaneous changes required before the remaining features in my [sm1_logic](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/sm1_logic) branch. Includes some rebased spirv.c patches by Zeb.
--
v3: vkd3d-shader/spirv: Implement SLT and SGE.
vkd3d-shader/spirv: Implement CMP.
tests: Check that -0.0f is not less than 0.0f.
tests: Test comparison and logic operators on SM1 vertex shaders.
vkd3d-shader/hlsl: Cast slt before multiplying on ternary operator.
tests/shader-runner: Pass uniforms to vertex shaders in d3d9 and d3d11.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/694
Patches with tests and other miscellaneous changes required before the remaining features in my [sm1_logic](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/sm1_logic) branch. Includes some rebased spirv.c patches by Zeb.
--
v2: vkd3d-shader/spirv: Implement SLT and SGE.
vkd3d-shader/spirv: Implement CMP.
tests: Check that -0.0f is not less than 0.0f.
tests: Test comparison and logic operators on SM1 vertex shaders.
vkd3d-shader/hlsl: Cast slt before multiplying on ternary operator.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/694
On Fri Mar 8 15:33:07 2024 +0000, Jeffrey Smith wrote:
> Yes, depth-clipped.
> If I'm understanding your last statement properly, it doesn't seem
> right. Two triangles could share one or two vertices and still be
> clipped independently. Further, several of the quads in this test have
> all vertices outside of [0,1] depth range, yet the portions passing
> through that depth range do result in successful picks.
What I mean with the last statement is that clipping is not done by the actual drawing step, but by the preceding "process vertices" step. It looks like D3DPROCESSVERTICES_TRANSFORM performs clipping and presumably D3DPROCESSVERTICES_TRANSFORMLIGHT does as well, whereas D3DPROCESSVERTICES_COPY just blindly copies, as the name implies. If you then draw the blindly copied triangles they result in picks.
In d3dexecutebuffer we can't look at the vertex processing output. IDirect3DVertexBuffer7::ProcessVertices does allow you to look at the intermediary output, and I remember trying to make sense of its clipping operation as one of my first acts of Wine development back in 2005 and couldn't figure it out. I'm not asking you to try, I was merely commenting that clipping being part of vertex processing, not drawing, makes sense :-) .
A clipped vertex still ended up in the destination vertex buffer, and it has to, because otherwise the draw parameters wouldn't match up (you process 10 triangles / 30 vertices, draw 10 triangles, but 5 of those triangles got clipped? What now?). Otoh math dictates that a clipped triangle might end up as a quad, e.g.:
--------------------
| |
| 1.........A.........3
| . | ....
| . ..B..
| . .... |
| 2... |
| |
| |
--------------------
If that little ASCII art makes any sense. The triangle 1-2-3 turns into a quad 1-2-B-A. So somehow this needs to be handled, and I have no clue how. The ProcessVertices docs talk about an "internal buffer" storing "clipping codes". I don't think we really care unless we find an application that cares.
Half Life 1 uses ProcessVertices in its d3d renderer (which has been removed long ago from the Steam version of the game), and it requests clipping, but it is just happy if we don't clip in ProcessVertices and let GL figure it out during drawing.
I assume the reason why you get pick results outside the x/y limits of the framebuffer is the guard band: https://learn.microsoft.com/en-us/windows-hardware/drivers/display/guard-ba… . Long story short, actual geometry clipping is annoying, so GPUs pretend the framebuffer is much larger, don't modify geometry if possible and discard fragments outside the framebuffer later.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_64016
Test `test_hull_shader_punned_array()` currently emits this validation error:
```
VUID-RuntimeSpirv-OpEntryPoint-08743(ERROR / SPEC): msgNum: -1986897773 - Validation Error: [ VUID-RuntimeSpirv-OpEntryPoint-08743 ] Object 0: handle = 0x270000000027, type = VK_OBJECT_TYPE_SHADER_MODULE; Object 1: handle = 0x280000000028, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID = 0x89925893 | vkCreateGraphicsPipelines(): pCreateInfos[0] (SPIR-V Interface) VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT declared input at Location 2 Component 3 but it is not an Output declared in VK_SHADER_STAGE_VERTEX_BIT. The Vulkan spec states: Any user-defined variables shared between the OpEntryPoint of two shader stages, and declared with Input as its Storage Class for the subsequent shader stage, must have all Location slots and Component words declared in the preceding shader stage's OpEntryPoint with Output as the Storage Class (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.ht…)
```
It might or might not be related to this MR, I haven't debugged yet.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/537#note_64015
This applies on top of !672, the last three commits belong here.
Here we compute additional "synthetic" loops that will be used to implement non-trivial forward edges using (possibly conditional) `break` instructions.
--
v2: vkd3d-shader/ir: Sort loop intervals.
vkd3d-shader/ir: Generate synthetic intervals for forward edges.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/698
Fix a regression from "bb496ea8 - server: Always queue mouse messages delivered to another window."
Fix ETHER VAPOR Remaster (214570) launches to black screen when the cursor is in the game window.
The game calls ReleaseCapture() when handling WM_MOUSEMOVE. After bb496ea8, WM_MOUSEMOVE is always
queued because the message window is NULL. So ReleaseCapture() ends up queuing another WM_MOUSEMOVE.
So the game ends up handling infinite WM_MOUSEMOVE messages at startup and is not able to do anything.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5263
--
v3: win32u: Move D3DKMT vulkan implementation out of winex11.
win32u: Open adapters in NtGdiDdDDIEnumAdapters2 outside of the display devices lock.
win32u: Move D3DKMTSetVidPnSourceOwner / D3DKMTCheckVidPnExclusiveOwnership out of winex11.
win32u: Move D3DKMT functions to a new d3dkmt.c source.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5220
This applies on top of !672, the last three commits belong here.
Here we compute additional "synthetic" loops that will be used to implement non-trivial forward edges using (possibly conditional) `break` instructions.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/698
On Fri Mar 8 09:47:03 2024 +0000, Giovanni Mascellani wrote:
> Yeah, right. Even for SM6 the current code is likely to produce bad
> results, because AFAIU many signature elements can be merged in a single
> one using `register_count`. I think the appropriate action right now is
> to emit the signature only for SM4-5, and leave the rest to the future
> if the need will arise. I will submit a MR for that.
Mmh, I'm probably confused about SM6. At least for the moment these metadata are meant to represent whatever is stored in the DXBC container, so it shouldn't change anything with SM6. I'll just disable for SM1-3.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/553#note_63977
On Fri Mar 8 09:47:03 2024 +0000, Henri Verbeet wrote:
> Should we output input/output signatures for d3dbc shaders? Currently we
> do, and there's something to be said for that, but it does complicate
> things in a couple of ways:
> - We wouldn't be able to assemble such signatures in any meaningful
> way for d3dbc targets. I.e., the assembler would largely just have to
> ignore them.
> - The register names are slightly different. E.g. ps_2_0 has t#
> texture coordinate inputs and oC# colour outputs.
Yeah, right. Even for SM6 the current code is likely to produce bad results, because AFAIU many signature elements can be merged in a single one using `register_count`. I think the appropriate action right now is to emit the signature only for SM4-5, and leave the rest to the future if the need will arise. I will submit a MR for that.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/553#note_63974
This MR fixes a few issues in the printdlg and adds the printer name to stc1.
This fixes some of the issues in the Quicken Print Dialog from the tax summary.
--
v4: comdlg32: Change WMCommandW to match WMCommandA
comdlg32: Use ANSI functions in ANSI WMCommandA
comdlg32: Populate printer name on the print dialogs
comdlg32: Add resolutions to PRINTDLG_ChangePrinterW
comdlg32: Use values from DeviceCapabilities in combobox.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4971
Second half of <https://gitlab.winehq.org/wine/wine/-/merge_requests/5118>.
This uses a different approach, setting the process token from within the
process after it is created. This avoids the need to always relay through
start.exe.
--
v3: server: Create processes using a limited administrator token by default.
ntdll: Elevate processes if requested in the manifest.
ntdll: Implement NtSetInformationProcess(ProcessAccessToken).
https://gitlab.winehq.org/wine/wine/-/merge_requests/5228
It's too late to mention this. But at "788ba754 - win32u: Lookup adapter gpus from their device paths." wine fails to start any GUI apps because gpu->path is not initialized. It's good at the next commit "c67726b3 - win32u: Enumerate devices with a dedicated helper." though.
```
00ec:err:system:find_gpu_from_path Failed to find gpu with path "PCI\\VEN_1002&DEV_73FF&SUBSYS_00000000&REV_00\\00000000"
00ec:err:system:update_display_cache Failed to read display config.
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5253#note_63947
--
v2: vkd3d-shader/fx: Add support for writing shared object descriptions for fx_4_x.
vkd3d-shader: Add an option to enable child effects compilation.
vkd3d-shader/fx: Add initial support for writing uninitialized vertex/pixel shader objects.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/692
As per discussion in 606, plumbing constant buffer reflection through
vkd3d-shader requires interface design and API documentation for an interface
which is inherently quite specific to one format. Instead of wasting time on
this interface, just implement RDEF parsing in vkd3d-utils itself. If we change
our mind about this, we can always move the implementation to vkd3d-shader
anyway.
This does not copy the existing implementation from Wine, because:
* Wine does not validate offsets; adding this changes the parsing code
significantly;
* Wine incorrectly handles types, deduplicating them into an rbtree;
* Wine skips several fields which I have been able to find the purpose of.
The implementation is not that complex to begin with, so reimplementing it from
scratch is not much work.
--
v6: tests: Add more tests for resource and struct RDEF contents.
tests: Test constant and resource reflection via D3DReflect().
vkd3d-shader/tpf: Set the user-packed flag for sm5.0 resources as well.
vkd3d-shader/tpf: Write the component count as the column count for structs.
vkd3d-shader/tpf: Explicitly write the class and base type for non-numeric types.
vkd3d-shader/tpf: Do not write structs with no numeric fields into the RDEF.
vkd3d-shader/hlsl: Allocate register reservations for structs as well.
vkd3d-shader/tpf: Do not write non-numeric struct fields into the RDEF.
vkd3d-utils: Implement ID3D12ShaderReflectionType::GetMemberTypeByIndex().
vkd3d-utils: Implement ID3D12ShaderReflectionVariable::GetType().
vkd3d-utils: Implement ID3D12ShaderReflectionConstantBuffer::GetVariableByIndex().
vkd3d-utils: Parse the RD11 section.
vkd3d-utils: Implement ID3D12ShaderReflection::GetConstantBufferByIndex().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/626
Basically !427, but in the form of a custom test driver script.
If I am not mistaken, for the driver script to run properly it is necessary to run
"autoreconf" in the source directory and call the configure script again in the build directory.
The output when running tests would be the same we currently have except for tests that don't PASS,
in that case, detailed information for each failing line will appear. Make a failing test to try it!
--
v4: tests: Get detailed information on failing tests.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/661
The only leftover field is SM1-specific, and I don't too much about how it's used, so I'm leaving it aside for now. It seems, however, that it could be moved directly to the parser (it seems to be only used for parsing and scanning).
--
v3: vkd3d-shader: Remove the bytecode fields from vkd3d_shader_desc.
vkd3d-shader/dxbc: Remove flag is_dxil.
vkd3d-shader: Move shader signatures to vsir_program.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/680
~~This applies on top of !656, the last three commits belong here.~~
--
v12: 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
At some point I would like to have an assembler for TPF, so that it's easier to write and modify tests. This is a first step in that direction, fixing some kind of format for serializing signatures in the comment at the beginning of the assembler code. ~~I'm not decided yet on all details, so take this as an RFC for the moment.~~
--
v14: tests: Test emitting the signature.
vkd3d-compiler: Add an option to emit the signature when disassembling.
vkd3d-shader/d3d-asm: Support emitting the shader signature.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/553
> > I imagine this is to make vkd3d_shader_scan() more similar to vkd3d_shader_compile(), but I think vkd3d_unreachable() is worse than the existing code.
>
> Even if the source type is already validated by `vkd3d_shader_validate_compile_info()`? Which use do you see into validating the source type twice?
It's more about disliking vkd3d_unreachable()/abort(). That's a discussion we've had a few times before, of course; what's different this time is that we've seen a number of bugs come in through WineHQ Bugzilla with assertions failing inside vkd3d-shader since the last time we had that discussion.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/679#note_63881
This is the first set of patches in an effort to create more generic image loading/conversion code that can eventually be shared.
--
v4: d3dx9: Preserve the contents of unaligned compressed destination surfaces.
d3dx9: Split off image decompression into a helper function.
d3dx9: Split D3DXLoadSurfaceFromMemory functionality into a separate function.
d3dx9: Use base image pointer when decompressing source image.
d3dx9/tests: Add more tests for misaligned compressed surface loading.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5202
This is the fourth and last part of a larger serie to cover module loading
and debug info file lookup in dbghelp. This fourth part covers:
- support for SLMFLAG_NO_SYMBOLS flag in SymLoadModule
- PDB related values in module information now match what native returns
Note: some modifications require new todo marks in the tests, as the full fix
will require changing other areas that would make the change too large.
At the end of the serie, all the todo:s are now resolved.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5256
I've tried implementing this before but importing user32 from ntdll isn't a reliable
thing (so I recently rewrote it using the ntdll equivalents of LoadLibrary() and GetProcAddress())
Note: This is a weird way to implement this function (Windows implements this
in ntdll instead) but that would probably require a user32/ntdll rewrite (so this
is the next best tning to get the application working)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5236
At some point I would like to have an assembler for TPF, so that it's easier to write and modify tests. This is a first step in that direction, fixing some kind of format for serializing signatures in the comment at the beginning of the assembler code. ~~I'm not decided yet on all details, so take this as an RFC for the moment.~~
--
v13: tests: Test emitting the signature.
vkd3d-compiler: Add an option to emit the signature when disassembling.
vkd3d-shader/d3d-asm: Support emitting the shader signature.
vkd3d-shader/d3d-asm: Refactor dumping a write mask to a dedicated function.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/553
Since Yousician's last update, it was throwing an error when initialising audio output. Unfortunately I don't have access to the old version, but they seem to have dropped win<10 support, and are using only IAudioClient3_InitializeSharedAudioStream. They also use IDeviceTopology to get the type of the first output connector.
This is the bare minimum I needed to get it working.
--
v22: mmdevapi: add stub for IDeviceTopology
mmdevapi/tests: add test for IDeviceTopology
mmdevapi: implement IAudioClient3_GetSharedModeEnginePeriod
mmdevapi: implement IAudioClient3_InitializeSharedAudioStream
mmdevapi/tests: add test for AudioClient3_InitializeSharedAudioStream
https://gitlab.winehq.org/wine/wine/-/merge_requests/3554
The only leftover field is SM1-specific, and I don't too much about how it's used, so I'm leaving it aside for now. It seems, however, that it could be moved directly to the parser (it seems to be only used for parsing and scanning).
--
v2: vkd3d-shader: Remove the bytecode fields from vkd3d_shader_desc.
vkd3d-shader/dxbc: Remove flag is_dxil.
vkd3d-shader: Move shader signatures to vsir_program.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/680
--
v2: win32u: Move D3DKMT vulkan implementation out of winex11.
win32u: Open adapters in NtGdiDdDDIEnumAdapters2 outside of the display devices lock.
win32u: Keep a reference on the adapters gpus.
win32u: Move D3DKMTSetVidPnSourceOwner / D3DKMTCheckVidPnExclusiveOwnership out of winex11.
win32u: Move D3DKMT functions to a new d3dkmt.c source.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5220
I wanted to use ._xy element access to make it shorter, but that attempt was crushed by the reality - such indexing apparently compiles but does not produce correct element access loads. I'm going to update once this is fixed.
--
v8: vkd3d-shader/hlsl: Add determinant() function.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/329
Overriding the SDL_VIDEODRIVER variable (for Wayland support as an example)
on the Linux side can lead to some games under Wine failing to load (so treat
that variable as special).
--
v2: ntdll: Add SDL_VIDEODRIVER to the special variable list.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5231
Adds the registry key
`HKEY_CURRENT_USER\\Software\\Wine\\Wayland Driver\\unaccelerated_pointer`
witch allows raw input. This makes it easier
to calculate the same sensitivity in different games,
use sensitivity calculators, and easily change values
when changing DPI and do not depend on the compositor or OS.
For example, you want to set the sensitivity to half as much,
and sensitivity curves in libinput are more difficult
to calculate than in the games themselves.
--
v5: winewayland.drv: Add unaccelerated pointer support
https://gitlab.winehq.org/wine/wine/-/merge_requests/4698