- Jan 31, 2022
-
-
Boris Brezillon authored
And add our own abstraction to amortize the cost of heap allocation/switch. While at it, we delay the RTV/DSV descriptor emission until those are actually needed (when a command needing it is issued), and we keep a hash table at the command buffer level to avoid re-issuing RTV/DSV that were already issued in this command buffer level. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Instead of allocating/releasing the descriptor heaps at set allocation/destruction. The defragmentation logic is probably not optimal, but it's simple, and can be improved if needed. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
- Jan 21, 2022
-
-
Boris Brezillon authored
UAVs are incompatible with MSAA resources. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
-
Boris Brezillon authored
Now that event set/waits don't force a cmdlist split, we can get rid of the dzn_batch concept and all the associated complexity. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
We still wait/signal event fences at the cmdlist boundary, to support host -> device signaling and inter-cmdlist signaling, but we no longer split the cmdlist. That means that the event might take a bit longer to expose its new state to the host, but it shouldn't impact inter-cmdlist dependencies, since those are serialized at the ExecuteCommandList() level anyway. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
When vkCmdPipelineBarrier() is not passed any memory barriers, it's assumed to be an execution barrier. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
And transition to the generic queue_submit() infrastructure. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
We need SetEventOnMultipleFenceCompletion() to implement vk_sync.wait_many(), and this method is part of the ID3D12Device1 interface. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
We map it to DXGI_FORMAT_B4G4R4A4_UNORM and patch the component mapping at SRV creation time. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
DXIL doesn't like when SV_Coverage (AKA SampleMask in DXIL) is a signed integer. Fix the type in the NIR domain. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
nir_intrinsic_get_var() can return a NULL value. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
pCreateInfo->subresourceRange.levelCount can map to the magic ALL_LEVELS value. Use the level_count local variable which contains the actual number of levels. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
We should disable rasterization when rasterizerDiscardEnable is true or when front+back face culling is requested. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
The pipeline layout is not guaranteed to stay around after the pipeline has been created. We need to copy all the relevant info to the pipeline object at creation time. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
vk_command_buffer already has it. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
This is paving the road for generic secondary command buffer support, where commands are simply recorded in a software queue and replayed on the primary command buffer when vkCmdExecuteCommands() is called.
-
Nothing fancy here, we just auto-generate a bunch of functions doing: if (cmd_buffer->level == PRIMARY) return <primary_prefix>_CmdXXX(...); else return <secondary_prefix>_CmdXXX(...); to avoid duplicating the same boilerplate in drivers using this sort of dispatching.
-
If the secondary command buffer has a software command queue, we can auto-generate the CmdExecuteCommands() function and replay all commands recorded to this software queue on the primary command buffer.
-
That's basically what lavapipe does, except this time it's autogenerated and can be re-used by other drivers if they don't have a smarter way of supporting secondary command buffers.
-
This should simplify auto-generation of CmdExecuteCommands().
-
-
Looks like 3 implementations already have that field in their private command_buffer struct, and having it at the vk_command_buffer opens the door for generic (but suboptimal) secondary command buffer support.
-
Boris Brezillon authored
We will need it to implement CmdBindDescriptorSets() on secondary command buffers. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
This field should only be accessed by dzn_descriptor_set methods. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
The spec says: " VkDescriptorSetLayout objects may be accessed by commands that operate on descriptor sets allocated using that layout, and those descriptor sets must not be updated with vkUpdateDescriptorSets after the descriptor set layout has been destroyed. Otherwise, a VkDescriptorSetLayout object passed as a parameter to create another object is not further accessed by that object after the duration of the command it is passed into. " We need to make sure all set info are copied to the pipeline layout and avoid accessing those pointers outside the vkUpdateDescriptorSets path. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
We don't support secondary command buffers natively anyway, so let's just assume the dzn_cmd_buffer always created direct command lists. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
- Jan 18, 2022
-
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
VkClearRect can cover more than one layer and can't be translated directly to a D3D12_RECT. We need to clear one rectangle at a time to be safe. Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-
Boris Brezillon authored
Signed-off-by:
Boris Brezillon <boris.brezillon@collabora.com>
-