Add support for stencil buffer on Vulkan and D3D11/D3D12
This commit is contained in:
@@ -32,7 +32,7 @@ void CmdBufferVulkan::Begin()
|
||||
// Acquire a descriptor pool set on
|
||||
if (_descriptorPoolSetContainer == nullptr)
|
||||
{
|
||||
AcquirePoolSet();
|
||||
_descriptorPoolSetContainer = &_device->DescriptorPoolsManager->AcquirePoolSetContainer();
|
||||
}
|
||||
|
||||
_state = State::IsInsideBegin;
|
||||
@@ -61,18 +61,16 @@ void CmdBufferVulkan::End()
|
||||
void CmdBufferVulkan::BeginRenderPass(RenderPassVulkan* renderPass, FramebufferVulkan* framebuffer, uint32 clearValueCount, VkClearValue* clearValues)
|
||||
{
|
||||
ASSERT(IsOutsideRenderPass());
|
||||
|
||||
VkRenderPassBeginInfo info;
|
||||
RenderToolsVulkan::ZeroStruct(info, VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO);
|
||||
info.renderPass = renderPass->GetHandle();
|
||||
info.framebuffer = framebuffer->GetHandle();
|
||||
info.renderPass = renderPass->Handle;
|
||||
info.framebuffer = framebuffer->Handle;
|
||||
info.renderArea.offset.x = 0;
|
||||
info.renderArea.offset.y = 0;
|
||||
info.renderArea.extent.width = framebuffer->Extent.width;
|
||||
info.renderArea.extent.height = framebuffer->Extent.height;
|
||||
info.clearValueCount = clearValueCount;
|
||||
info.pClearValues = clearValues;
|
||||
|
||||
vkCmdBeginRenderPass(_commandBuffer, &info, VK_SUBPASS_CONTENTS_INLINE);
|
||||
_state = State::IsInsideRenderPass;
|
||||
}
|
||||
@@ -84,12 +82,6 @@ void CmdBufferVulkan::EndRenderPass()
|
||||
_state = State::IsInsideBegin;
|
||||
}
|
||||
|
||||
void CmdBufferVulkan::AcquirePoolSet()
|
||||
{
|
||||
ASSERT(!_descriptorPoolSetContainer);
|
||||
_descriptorPoolSetContainer = &_device->DescriptorPoolsManager->AcquirePoolSetContainer();
|
||||
}
|
||||
|
||||
#if GPU_ALLOW_PROFILE_EVENTS
|
||||
|
||||
void CmdBufferVulkan::BeginEvent(const Char* name)
|
||||
@@ -134,6 +126,7 @@ void CmdBufferVulkan::RefreshFenceStatus()
|
||||
{
|
||||
if (_state == State::Submitted)
|
||||
{
|
||||
PROFILE_CPU();
|
||||
if (_device->FenceManager.IsFenceSignaled(_fence))
|
||||
{
|
||||
_state = State::ReadyForBegin;
|
||||
@@ -258,7 +251,7 @@ void CmdBufferManagerVulkan::SubmitActiveCmdBuffer(SemaphoreVulkan* signalSemaph
|
||||
// Pause all active queries
|
||||
for (int32 i = 0; i < _queriesInProgress.Count(); i++)
|
||||
{
|
||||
_queriesInProgress[i]->Interrupt(_activeCmdBuffer);
|
||||
_queriesInProgress.Get()[i]->Interrupt(_activeCmdBuffer);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -290,7 +283,7 @@ void CmdBufferManagerVulkan::PrepareForNewActiveCommandBuffer()
|
||||
PROFILE_CPU();
|
||||
for (int32 i = 0; i < _pool._cmdBuffers.Count(); i++)
|
||||
{
|
||||
auto cmdBuffer = _pool._cmdBuffers[i];
|
||||
auto cmdBuffer = _pool._cmdBuffers.Get()[i];
|
||||
cmdBuffer->RefreshFenceStatus();
|
||||
if (cmdBuffer->GetState() == CmdBufferVulkan::State::ReadyForBegin)
|
||||
{
|
||||
@@ -312,7 +305,7 @@ void CmdBufferManagerVulkan::PrepareForNewActiveCommandBuffer()
|
||||
// Resume any paused queries with the new command buffer
|
||||
for (int32 i = 0; i < _queriesInProgress.Count(); i++)
|
||||
{
|
||||
_queriesInProgress[i]->Resume(_activeCmdBuffer);
|
||||
_queriesInProgress.Get()[i]->Resume(_activeCmdBuffer);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user