TODO List #172
Locked
LukasBanana
started this conversation in
General
TODO List
#172
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This is an overview of some major bullet points for improvements or unimplemented features in LLGL:
OpenGL Renderer:
Vulkan Renderer:
VK_EXT_conditional_rendering
extension for conditional rendering, but it hasn't been implemented in LLGL yet.VK_EXT_transform_feedback
Vulkan extension.SetUniform
/SetUniforms
functions inCommandBuffer
interface is the way to go for Vulkan's "push constants".D3D11 Renderer:
D3D12 Renderer:
CommandBuffer::UpdateBuffer
simply does not work correct for the D3D12 backend. A Ring-Buffer implementation may be useful for this purpose.D3D12MipGenerator
class to generate MIP-maps with a compute shader, like the DX12 example illustrates. Before that,GenerateMips
function must be moved fromRenderSystem
toCommandBuffer
interface, orRenderSystem
may keep it as a secondary function to be used outside of command encoding.SetStreamOutputBuffer
etc.).Metal Renderer:
TessControl
shader must be merged into the 'vertex function', and theTessEvaluation
shader must be implemented as a 'kernel function'.MacOS Platform:
Window
event handling and resize: The envent handling in the MacOS implementation of theWindow
interface could be improved. Especially resiying the window does not work properly.C# Wrapper:
Further unimplemented/incomplete functions:
LinuxDisplay::SetDisplayMode
LinuxDisplay::ResetDisplayMode
LinuxDisplay::ShowCursor
LinuxDisplay::IsCursorShown
LinuxWindow::SetDesc
LinuxWindow::GetDesc
D3D12CommandBuffer::ClearAttachments
D3D12CommandBuffer::CopyBuffer
(resource transition/barrieres)D3D12CommandBuffer::CopyTexture
(resource transition/barrieres)Future plans:
CommandBuffer::ResetResourceSlots
: This function is only used to circumvent an issue with resource binding with older APIs that do not support descriptor heaps/sets natively. Binding a resource for writing (e.g. a render target) requires the same resource to not be bound at any other binding point for reading. It's not trivial to keep track of each resource where it is bound (potentially at multiple points) in an efficient manner. TheResetResourceSlots
function is used so the client programmer can manually unbind resources before binding it for writing (or as UAV in D3D terms). With LLGL having the concept ofResourceHeap
, this manual unbinding should not be a requirement. Finding an efficient way to detect resources that need to be unbound is crucial ... and not easy :) (fixed with f492217)RenderSystem
: TheRelease
functions should not delete the objects immediately. Instead,RenderSystem
should keep track which objects are still used. For instance, a releasedTexture
object that is still in use in anotherResourceHeap
should only be deleted when the lastResourceHeap
orTexture
-view that refers to it is deleted (via reference counter).Beta Was this translation helpful? Give feedback.
All reactions