This adds all of the information used by the spirv backend to declare descriptor
variables. Most of these are added to the internal
vkd3d_shader_scan_descriptor_info1 structure, but patch 5/5 adds a flag to
enum vkd3d_shader_descriptor_info_flag, which is public API.
The ultimate goal here is to declare SPIR-V descriptor variables from the
scanned descriptor information, thereby avoiding the need to synthesize DCL
instructions for frontends that don't have them (specifically sm1, but it may be
that sm6 would benefit from this as well).
That work is visible here:
https://gitlab.winehq.org/zfigura/vkd3d/-/tree/himavant5
--
This is a follow-up to the already-approved 295, which I am submitting now so
that we're not blocked on Alexandre's vacation.
--
v2: vkd3d-shader: Add a flag marking raw buffers to struct vkd3d_shader_descriptor_info.
vkd3d-shader: Add structure stride to struct vkd3d_shader_descriptor_info1.
vkd3d-shader: Add constant buffer size to struct vkd3d_shader_descriptor_info1.
vkd3d-shader: Add sample count to struct vkd3d_shader_descriptor_info1.
vkd3d-shader: Set descriptor flags in the caller to vkd3d_shader_scan_add_descriptor().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/304
It's no problem to send fewer of these per MR. I have included the complete set because all but the last introduce no functional changes, and upstreaming a smaller set would leave the changes in a half-done state with unnecessary buffering.
--
v3: vkd3d: Store command list commands in a buffer until executed.
vkd3d: Store WriteBufferImmediate() arguments in a buffer.
vkd3d: Store ExecuteIndirect() arguments in a buffer.
vkd3d: Store SetPredication() arguments in a buffer.
vkd3d: Store ResolveQueryData() arguments in a buffer.
vkd3d: Store EndQuery() arguments in a buffer.
vkd3d: Store BeginQuery() arguments in a buffer.
vkd3d: Store d3d12_command_list_clear_uav() arguments in a buffer.
vkd3d: Store ClearRenderTargetView() arguments in a buffer.
vkd3d: Store ClearDepthStencilView() arguments in a buffer.
vkd3d: Store OMSetRenderTargets() arguments in a buffer.
vkd3d: Store SOSetTargets() arguments in a buffer.
vkd3d: Store IASetVertexBuffers() arguments in a buffer.
vkd3d: Store IASetIndexBuffer() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_descriptor() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_cbv() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_constants() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_descriptor_table() arguments in a buffer.
vkd3d: Store d3d12_command_list_set_root_signature() arguments in a buffer.
vkd3d: Add an internal refcount to struct d3d12_root_signature.
vkd3d: Store ResourceBarrier() arguments in a buffer.
vkd3d: Store SetPipelineState() arguments in a buffer.
vkd3d: Store OMSetStencilRef() arguments in a buffer.
vkd3d: Store OMSetBlendFactor() arguments in a buffer.
vkd3d: Store RSSetScissorRects() arguments in a buffer.
vkd3d: Store RSSetViewports() arguments in a buffer.
vkd3d: Store IASetPrimitiveTopology() arguments in a buffer.
vkd3d: Store ResolveSubresource() arguments in a buffer.
vkd3d: Store CopyResource() arguments in a buffer.
vkd3d: Store CopyTextureRegion() arguments in a buffer.
vkd3d: Store CopyBufferRegion() arguments in a buffer.
vkd3d: Store Dispatch() arguments in a buffer.
vkd3d: Store DrawIndexedInstanced() arguments in a buffer.
vkd3d: Store DrawInstanced() arguments in a buffer.
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/294
On Mon Aug 21 03:55:16 2023 +0000, Zhiyi Zhang wrote:
> > depending on a the player state it's either Stop->Start->Pause or Stop->Start
> We can do something similar for IMFMediaEngine::SetCurrentTime/Ex.
Maybe sources do not always have MFMEDIASOURCE_CAN_PAUSE.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3572#note_42837