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.
--
v2: 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
--
v2: server: Enumerate desktop processes for 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.
user32/tests: Run in-desktop tests from a new thread.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5066
--
v7: 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.
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
--
v5: Force Vulkan 1.1
vkd3d-shader/dxil: Handle constexpr pointer cast.
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
> Vulkan extension `VK_EXT_depth_range_unrestricted` should be detected and enabled to set the bounds freely.
We probably should, but I think we're also allowed to just clamp to [0, 1]. It's not immediately clear to me whether a corresponding caps bit exists for this in d3d12.
> Conversely, availability of this feature should be advertised with `DepthBoundsTestSupported` in `D3D12_FEATURE_DATA_D3D12_OPTIONS2`.
We already do that, actually. We support enabling depth bounds through D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, but didn't implement adjusting the min/max values through OMSetDepthBounds() yet.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/632#note_61244
A points that might require some more work:
* According to Microsoft docs, NaN values are automatically mapped to zero. I can't quickly find any hint in the Vulkan specs of how NaN values are supposed to be handled, so I would assume that nothing is enforced and we should do the mapping ourselves.
* Vulkan extension `VK_EXT_depth_range_unrestricted` should be detected and enabled to set the bounds freely.
* Conversely, availability of this feature should be advertised with `DepthBoundsTestSupported` in `D3D12_FEATURE_DATA_D3D12_OPTIONS2`.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/632#note_61243