There are two parts to this:
- First, a way to retrieve any signature from a DXBC shader. This is, I gather,
generally useful for reflection, and it can be used as one source with which
to implement d3d10 and d3d11 shader reflection APIs.
The rest of those APIs will need much more data to be exposed from d3d
shaders, and while I was originally planning to expose that all in a single
"vkd3d_shader_d3d_shader_info" structure, I think that signatures at least are
a reasonable enough subset to have a dedicated structure. Moreover, I did not
want to block sm1 support on too much API design.
- Second, signatures synthesized from sm1 byte code. This is conceptually a bit
weird, because sm1 does not have signatures, but in terms of how these APIs
are used by Wine (or other translation layers, as evidenced not least by the
Vulkan test shader runner, which I have locally adapted for sm1 but not
submitted yet) it fits rather nicely.
Because this is new API, it of course deserves plenty of discussion, especially
the sm1 part. Several open questions which occurred to me while writing are:
1. Should we fix the mask (and used mask) for sm1 signatures as 0xf rather than
0? SPIR-V cares about this in order to declare I/O variables, which makes
some amount of sense. In fact I have a patch in my local tree to change this,
specifically for that purpose. However, we could also normalize it later.
2. If we do fix the mask as nonzero, should single-component semantics (fog,
depth, etc...) be declared as 0x1 instead of 0xf?
3. Should BLENDINDICES get a UINT type? It's float in shader instructions (well,
kind of, although in practice it's used as an array index of course), but
the vertex attribute type is in practice "supposed" to be integer.
Part 1 of a series to implement sm1 -> spirv translation in vkd3d-shader,
brought to you by late nights spent coding and rereading The Waste Land.
Ganga was sunken, and the limp leaves
Waited for rain, while the black clouds
Gathered far distant, over Himavant.
--
v3: vkd3d-shader: Synthesize signatures for d3dbc shaders.
vkd3d-shader: Introduce an API to retrieve all signatures from DXBC shaders.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/200
And use that instead of duplicating those helpers across the tree.
Besides removing existing duplicates, I am planning to add yet another WinRT dll (gamepad) and we will likely add more in the future, each of those can use that, as well as potentially more common helpers.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1045
I have found some scripts where comparisons that use floats and OLECOLOR directly fail. For example:
```
If Light005.State Then
' State is a float V_R4
End If
If Light005.Colorfull Then
' Colorfull is an OLECOLOR VT_UI4
End If
```
This is because `stack_pop_bool` does not handle `VT_R4` and `VT_UI4` and returns `E_NOTIMPL`.
This adds additional types to `stack_pop_bool` similar to `VARIANT_Coerce`.
Fixes https://bugs.winehq.org/show_bug.cgi?id=54731
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2507
When the child window and the parent window are no longer in the same process,
the parent window shadow does not update the vis rgn of the child window and
modify the WS_VISIBLE style of the child window. so we need to update the vis
rgn when another process gets the DC of the child window.
Signed-off-by: Jiajin Cui <cuijiajin(a)uniontech.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1306
Reference
https://bugs.winehq.org/show_bug.cgi?id=54985
From the line we see the mingw version used causes an
In file included from /usr/share/mingw-w64/include/unknwnbase.h:47,
[ 935s] from /usr/share/mingw-w64/include/objidlbase.h:439,
[ 935s] from include/combaseapi.h:29,
[ 935s] from include/objbase.h:267,
[ 935s] from include/ole2.h:25,
[ 935s] from /usr/share/mingw-w64/include/wtypes.h:13,
[ 935s] from include/winscard.h:22,
[ 935s] from include/windows.h:68,
[ 935s] from libs/vkd3d/include/private/vkd3d_common.h:23,
[ 935s] from libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h:49,
[ 935s] from libs/vkd3d/libs/vkd3d-shader/preproc.y:24,
[ 935s] from libs/vkd3d/libs/vkd3d-shader/preproc.l:23:
[ 935s] /usr/share/mingw-w64/include/wtypesbase.h:148:16: error: redefinition of 'struct _SECURITY_ATTRIBUTES'
[ 935s] 148 | typedef struct _SECURITY_ATTRIBUTES {
The included file winscard.h seemed a little odd. The vkd3d isn't going to use this.
Adding the define WIN32_LEAN_AND_MEAN to the Makefile.in (in wine), produce the following warnings.
/home/alesliehughes/wine/libs/vkd3d/include/private/vkd3d_common.h:75:5: warning: implicit declaration of function ‘abort’ [-Wimplicit-function-declaration]
75 | abort();
| ^~~~~
/home/alesliehughes/wine/libs/vkd3d/include/private/vkd3d_common.h:258:14: warning: implicit declaration of function ‘atoi’ [-Wimplicit-function-declaration]
258 | *major = atoi(version);
Adding header <stdlib.h> removed all the warnings.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/217
MR !607 was trying to fix an issue with Life Is Strange Remastered, but
although it fixed some race conditions with presentation end, the issue
it was trying to fix is still there.
The game calls IMFMediaSession_Stop while the presentation is ending, expects
that command to quickly execute, interrupting the presentation end and
emitting a MESessionStopped event instead of the MESessionEnded.
Delaying the Stop command and emitting the MESessionEnded event breaks
the game assumptions and it crashes.
--
v4: mf: Discard end of presentation on IMFMediaSession_Stop.
mf/tests: Test IMFMediaSession_Stop command near presentation end.
mf/tests: Test Start / Pause / Stop IMFMEdiaSession events.
mf/tests: Split wait_media_event helper into wait_next_media_event.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1710
This tests that the resolution should be quick enough to not trigger an Unreal Engine race condition. This also checks the determinism of the media source presentation descriptor stream ordering, as well as the stream selection updates when the media source is started.
--
v2: mf/tests: Test media source presentation stream descriptor update.
winegstreamer: Keep a reference on the media source start descriptor.
mf/tests: Test media sources stream descriptors attributes.
mf/tests: Test media sources with multiple audio/video streams.
mf/tests: Test byte stream handler to media source resolution time.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2782