I am still working on parsing the remaining features of the effects framework, such as the FX functions for the state block entries -- such as SetBlendState() -- and the "compile" and "Compileshader()" syntax. However, after adding the many tests included in 2/7 and reading the feedback from !708, I think that this first batch of patches are going in the right direction in terms of parsing the state blocks and how to represent them internally.
As Nikolay mentioned in https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/708#note_64421 and https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/708#note_64444 there are many types of state blocks entries, which should be identified for writing the effect metadata.
A part that may cause discussion on this series is that I kept the representation of `struct hlsl_state_block_entry` using a `hlsl_block` to keep it general enough to represent all these types of state block entries, thinking on later implementing a helper to identify which type of entry we are dealing with.
Even though, as Nikolay pointed out, the instruction set of fx shaders is different, I still think that HLSL IR should be enough to represent the rhs of state blocks, and hopefully we won't need to pollute it too much (apart from the introduction of hlsl_ir_undeclared_load in 4/7 to avoid creating a new variable) if we find operations that are fx-specific, since I intend to represent calls to FX functions with the same `struct hlsl_state_block_entry`, given that they cannot be called in regular HLSL code. There are many validations that are applied on regular HLSL that still should be applied to state blocks, such as the use of valid swizzles and the correct use of operators.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/739
Currently we are assuming that unknown identifiers within state blocks are scalar integers. This proposal keeps doing this.
The lower_static_constant_folding() meta-pass is introduced to fold as much as possible these state state block expressions. And I plan to reuse it for constant buffer default values.
A lower_state_block_identifier_loads() pass is included in the last commit. The idea is to start filling a table with numeric values for the unknown identifiers as we start discovering them.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/708
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v2: include: Remove XMLSchemaCache60 from msxml2.idl.
msxml/tests: Move version-specific schema tests to corresponding modules.
msxml/tests: Move some of the validation tests to their modules.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5387
Fixes Sim City 3000 Building Architect.
--
v4: ddraw/tests: Add tests for multiple devices.
ddraw: Support multiple devices per ddraw object.
ddraw: Sync wined3d render target in d3d_device_sync_rendertarget().
ddraw: Store wined3d state in d3d_device.
wined3d: Factor out wined3d_texture_set_lod() function.
ddraw: Don't apply state in ddraw_surface_blt().
ddraw: Store matrix handle in the global table.
ddraw: Store surface handles in the global table.
ddraw: Store material handles in the global table.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5329
On Fri Mar 22 03:18:49 2024 +0000, Zebediah Figura wrote:
> Is fixing the headers undesirable, then?
> Is it necessary in some way to implement FreeThreadedXMLHTTP60, or can
> that be done differently?
No, I think it is desirable. I'm going to move some more tests out, to build with either msxml2.idl or msxml6.idl, and then we'll see what's left. XMLHTTP60 patches in the form they currently are in staging needs some work done, specifically not using rtworkq.dll.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1060#note_65806
I missed that Zhiyi was out so I've just reordered this, calling __wine_get_vulkan_driver from winex11 d3dkmt instead.
--
v3: win32u: Move vkGet(Device|Instance)ProcAddr helpers inline.
winevulkan: Stop generating the wine/vulkan_driver.h header.
win32u: Move vkGet(Instance|Device)ProcAddr out the drivers.
win32u: Move vulkan loading and init guard out of the drivers.
winemac: Use SONAME_LIBVULKAN as an alias for MoltenVK.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5365
This issue originated on IRC (a person complained about Tomato Jones II
not working but the ole errors in the log weren't actually an issue).
With this patch the game boots to the main menu (at least with
wine-staging).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5372