Convert all files to CRLF line endings. authored by Alexandre Julliard's avatar Alexandre Julliard
## libvkd3d ## libvkd3d
- Try to use VK_EXT_buffer_device_address for GPU addresses (partially - Try to use VK_EXT_buffer_device_address for GPU addresses (partially
done - jkucia). done - jkucia).
- Add tests for out-of-bounds access with vertex buffers. - Add tests for out-of-bounds access with vertex buffers.
- Improve multi-queue support. - Improve multi-queue support.
- Queue family ownership transfer. - Queue family ownership transfer.
- Fix all Vulkan validation errors. - Fix all Vulkan validation errors.
- Fix clears for A8_UNORM. - Fix clears for A8_UNORM.
- Implement UAVs in vertex processing shader stages. - Implement UAVs in vertex processing shader stages.
- Implement support for multiple viewports. - Implement support for multiple viewports.
- Test and fix copying between BC and other compatible formats. - Test and fix copying between BC and other compatible formats.
- State decay for resources and queue ownership transfer for resources. - State decay for resources and queue ownership transfer for resources.
- Reduce the number of queue submits. Queue submits are generally - Reduce the number of queue submits. Queue submits are generally
expensive, especially on recent kernels with amdgpu (mostly done - expensive, especially on recent kernels with amdgpu (mostly done -
jkucia). jkucia).
- Merge vkCmdPipelineBarrier() calls. - Merge vkCmdPipelineBarrier() calls.
- Try to avoid fence worker thread when possible. - Try to avoid fence worker thread when possible.
- Implement stencil aspect resource state transitions. - Implement stencil aspect resource state transitions.
- Implement cache for SPIR-V shaders? - Implement cache for SPIR-V shaders?
- Implement disk pipeline/shader cache? - Implement disk pipeline/shader cache?
- Implement sparse resources? - Implement sparse resources?
- Optimize barriers (render passes, ClearUnorderedAccessView, transform - Optimize barriers (render passes, ClearUnorderedAccessView, transform
feedback). feedback).
- Memory residency. - Memory residency.
- Raytracing? - Raytracing?
- DirectML? - DirectML?
- Add support for sRGB swapchain views (VK_KHR_image_format_list). - Add support for sRGB swapchain views (VK_KHR_image_format_list).
- Add tests for validation of view format compatibility (RTV, SRV, UAV, - Add tests for validation of view format compatibility (RTV, SRV, UAV,
DSV). DSV).
## libvkd3d-shader ## libvkd3d-shader
- Add support for capturing components with stream output. - Add support for capturing components with stream output.
- Finish the DXIL work (Conor). - Finish the DXIL work (Conor).
- Add tests for OpenGL atomic counters. - Add tests for OpenGL atomic counters.
- Import SM4 to GLSL shader translation from wined3d (Henri). - Import SM4 to GLSL shader translation from wined3d (Henri).
- Allow ignoring checking the checksum when parsing DXBC, both from the - Allow ignoring checking the checksum when parsing DXBC, both from the
API and from the command line. API and from the command line.
- Always check that memory allocation didn't fail; for example, calls to - Always check that memory allocation didn't fail; for example, calls to
vkd3d_string_buffer_printf() usually are not checked. vkd3d_string_buffer_printf() usually are not checked.
- Finish API for scanning/gathering info from shaders (registers used, - Finish API for scanning/gathering info from shaders (registers used,
bindings used, parameters used, required limits, extensions). bindings used, parameters used, required limits, extensions).
- Implement ID3D11ShaderReflection et al. - Implement ID3D11ShaderReflection et al.
- Should we put everything into the same (chained) - Should we put everything into the same (chained)
vkd3d_shader_scan_dxbc_info struct, or split them up? (Split up the vkd3d_shader_scan_dxbc_info struct, or split them up? (Split up the
DXBC-specific ones from the rest?) DXBC-specific ones from the rest?)
- I guess HLSL compile flags should be preserved verbatim...? I don't - I guess HLSL compile flags should be preserved verbatim...? I don't
like the disparity we currently have. like the disparity we currently have.
- How to do things like constant table types? - How to do things like constant table types?
- Add support for SSBO. - Add support for SSBO.
- Support HLSL -\> sm6 compilation. - Support HLSL -\> sm6 compilation.
- Support direct HLSL -\> spirv compilation. This will be easier as - Support direct HLSL -\> spirv compilation. This will be easier as
things are refactored to account for vsir. things are refactored to account for vsir.
- Consider adding a CUDA frontend. - Consider adding a CUDA frontend.
#### TPF validation #### TPF validation
Vkd3d-shader generally assumes that Direct3D shader bytecode is valid Vkd3d-shader generally assumes that Direct3D shader bytecode is valid
and doesn't do much validation. We should introduce some kind of and doesn't do much validation. We should introduce some kind of
validation pass. The validation potentially could be optional, e.g. used validation pass. The validation potentially could be optional, e.g. used
only in debug builds. only in debug builds.
- Interpolation mode is the same for all variables in the input - Interpolation mode is the same for all variables in the input
register. register.
- Number of indices for resources (SM5 vs SM5.1). - Number of indices for resources (SM5 vs SM5.1).
## Tests ## Tests
- Make it possible to run all reasonable test combinations mixing these - Make it possible to run all reasonable test combinations mixing these
factors: factors:
- the library used to compile the shaders: vkd3d-shader, - the library used to compile the shaders: vkd3d-shader,
d3dcompiler_xx.dll or dxcompiler.dll; d3dcompiler_xx.dll or dxcompiler.dll;
- the Shader Model to target; - the Shader Model to target;
- the API to use to run the shader (d3d8, d3d9, d3d10, d3d11, d3d12, - the API to use to run the shader (d3d8, d3d9, d3d10, d3d11, d3d12,
Vulkan, GL); Vulkan, GL);
- when running on Windows, the actual library to use to run the - when running on Windows, the actual library to use to run the
shader: vkd3d or a native implementation; shader: vkd3d or a native implementation;
- possibly, one day, the library to use to recompile the shaders (it - possibly, one day, the library to use to recompile the shaders (it
currently only makes sense on macOS once we support the Apple shader currently only makes sense on macOS once we support the Apple shader
compiler for Metal; in all the other cases the choice is forced). compiler for Metal; in all the other cases the choice is forced).
- Run a decent subsets of those combinations in the CI. - Run a decent subsets of those combinations in the CI.
- Need more shader runners: OpenGL + GLSL (Henri has WIP), d3d10core, - Need more shader runners: OpenGL + GLSL (Henri has WIP), d3d10core,
d3d8 d3d8
- Some HLSL functionality was accepted despite a lack of tests. We need - Some HLSL functionality was accepted despite a lack of tests. We need
tests for: tests for:
- all tex\*() variants - all tex\*() variants
- D3DCOLORtoUBYTE4() different results on sm1 - D3DCOLORtoUBYTE4() different results on sm1
- min() - min()
- texture arrays - texture arrays
- centroid interpolation - centroid interpolation
- "linear centroid" keywords - "linear centroid" keywords
- noperspective interpolation - noperspective interpolation
- precise? - precise?
- texture types other than 2D - texture types other than 2D
- nontrivial tests for 2D multisample textures - nontrivial tests for 2D multisample textures
- GetDimensions() - GetDimensions()
- SampleCmp(), SampleCmpLevelZero() - SampleCmp(), SampleCmpLevelZero()
- depth output - depth output
- GS SV_PrimitiveID - GS SV_PrimitiveID
- For the sake of sm1 and its weird disjoint instruction sets, a lot - For the sake of sm1 and its weird disjoint instruction sets, a lot
of tests probably deserve VS variants as well. of tests probably deserve VS variants as well.
- Uniform reflection, which depends on uniform reflection API design - Uniform reflection, which depends on uniform reflection API design
- SM1 semantic matching (Zeb has this) - SM1 semantic matching (Zeb has this)
- Test that all of the SM1 input semantics work - Test that all of the SM1 input semantics work
- tbuffer - tbuffer
- We should properly gate features based on profile version, and test - We should properly gate features based on profile version, and test
that we are correctly doing this. that we are correctly doing this.
None of this necessarily needs to be extensions to the shader runner; we None of this necessarily needs to be extensions to the shader runner; we
can find a way to write C tests for these. can find a way to write C tests for these.
- We would also like a way to invoke shader runner logic from C. It's a - We would also like a way to invoke shader runner logic from C. It's a
bit unfortunate that the tests in hlsl_d3d12.c are d3d12-specific. bit unfortunate that the tests in hlsl_d3d12.c are d3d12-specific.
- Untested sm4 -\> spirv paths: - Untested sm4 -\> spirv paths:
- "lod" shader instruction - "lod" shader instruction
- bufinfo and resinfo with NULL SRV and UAV descriptors - bufinfo and resinfo with NULL SRV and UAV descriptors
- D3D discard semantics - D3D discard semantics
## DXGI ## DXGI
- Fix adapter LUIDs in Wine. - Fix adapter LUIDs in Wine.
- Reimplement IDXGIAdapter3::QueryVideoMemoryInfo() on top of - Reimplement IDXGIAdapter3::QueryVideoMemoryInfo() on top of
VK_EXT_memory_budget. Ideally, Vulkan implementations should return VK_EXT_memory_budget. Ideally, Vulkan implementations should return
the memory budget based on total system load (memory used by all the memory budget based on total system load (memory used by all
graphics APIs). graphics APIs).
## Vulkan ## Vulkan
- Try to fix detached WSI surfaces after D3D9/D3D11 swapchain (OpenGL) - Try to fix detached WSI surfaces after D3D9/D3D11 swapchain (OpenGL)
is created for a window with D3D12 swapchain (Vulkan). is created for a window with D3D12 swapchain (Vulkan).
- Fix child window rendering for D3D12 RenderDoc. - Fix child window rendering for D3D12 RenderDoc.