Merge branch 'indirect-vulkan' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-indirect-vulkan
This commit is contained in:
@@ -1092,14 +1092,24 @@ void GPUContextVulkan::DrawIndexedInstanced(uint32 indicesCount, uint32 instance
|
||||
|
||||
void GPUContextVulkan::DrawInstancedIndirect(GPUBuffer* bufferForArgs, uint32 offsetForArgs)
|
||||
{
|
||||
// TODO: implement it
|
||||
MISSING_CODE("GPUContextVulkan::DrawInstancedIndirect");
|
||||
ASSERT(bufferForArgs && bufferForArgs->GetFlags() & GPUBufferFlags::Argument);
|
||||
|
||||
auto bufferForArgsVK = (GPUBufferVulkan*)bufferForArgs;
|
||||
const auto cmdBuffer = _cmdBufferManager->GetCmdBuffer();
|
||||
OnDrawCall();
|
||||
vkCmdDrawIndirect(cmdBuffer->GetHandle(), bufferForArgsVK->GetHandle(), (VkDeviceSize)offsetForArgs, 1, sizeof(VkDrawIndirectCommand));
|
||||
RENDER_STAT_DRAW_CALL(0, 0);
|
||||
}
|
||||
|
||||
void GPUContextVulkan::DrawIndexedInstancedIndirect(GPUBuffer* bufferForArgs, uint32 offsetForArgs)
|
||||
{
|
||||
// TODO: implement it
|
||||
MISSING_CODE("GPUContextVulkan::DrawIndexedInstancedIndirect");
|
||||
ASSERT(bufferForArgs && bufferForArgs->GetFlags() & GPUBufferFlags::Argument);
|
||||
|
||||
auto bufferForArgsVK = (GPUBufferVulkan*)bufferForArgs;
|
||||
const auto cmdBuffer = _cmdBufferManager->GetCmdBuffer();
|
||||
OnDrawCall();
|
||||
vkCmdDrawIndexedIndirect(cmdBuffer->GetHandle(), bufferForArgsVK->GetHandle(), (VkDeviceSize)offsetForArgs, 1, sizeof(VkDrawIndexedIndirectCommand));
|
||||
RENDER_STAT_DRAW_CALL(0, 0);
|
||||
}
|
||||
|
||||
void GPUContextVulkan::SetViewport(const Viewport& viewport)
|
||||
|
||||
@@ -1705,7 +1705,7 @@ bool GPUDeviceVulkan::Init()
|
||||
limits.HasGeometryShaders = false; // TODO: add geometry shaders support for Vulkan
|
||||
limits.HasInstancing = true;
|
||||
limits.HasVolumeTextureRendering = true;
|
||||
limits.HasDrawIndirect = false; // TODO: add Draw Indirect support for Vulkan
|
||||
limits.HasDrawIndirect = true;
|
||||
limits.HasAppendConsumeBuffers = false; // TODO: add Append Consume buffers support for Vulkan
|
||||
limits.HasSeparateRenderTargetBlendState = true;
|
||||
limits.HasDepthAsSRV = true;
|
||||
|
||||
@@ -149,8 +149,8 @@ bool DepthOfFieldPass::setupResources()
|
||||
_bokehBuffer = GPUDevice::Instance->CreateBuffer(TEXT("Bokeh Buffer"));
|
||||
if (_bokehIndirectArgsBuffer == nullptr)
|
||||
_bokehIndirectArgsBuffer = GPUDevice::Instance->CreateBuffer(TEXT("Bokeh Indirect Args Buffer"));
|
||||
uint32 indirectArgsBufferInitData[4] = { 0, 1, 0, 0 };
|
||||
if (_bokehIndirectArgsBuffer->Init(GPUBufferDescription::Argument(indirectArgsBufferInitData, sizeof(indirectArgsBufferInitData))))
|
||||
GPUDrawIndirectArgs indirectArgsBufferInitData{0, 1, 0, 0};
|
||||
if (_bokehIndirectArgsBuffer->Init(GPUBufferDescription::Argument(&indirectArgsBufferInitData, sizeof(indirectArgsBufferInitData))))
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user