add IsSupportMDI() & GetMaxMDICount functions.
This commit is contained in:
parent
4c4d81c116
commit
156f6e98a8
@ -48,6 +48,20 @@ public:
|
||||
|
||||
const uint32_t GetConstantSize ()const{return properties.limits.maxPushConstantsSize;}
|
||||
|
||||
// support != open, so please don't direct use GetFeatures().
|
||||
// open any features in CreateDevice()&SetDeviceFeatures() functions.
|
||||
const bool IsSupportMDI ()const
|
||||
{
|
||||
// I found a few device support MDI, but its MaxDrawIndirectCount is 1.
|
||||
|
||||
return (features.multiDrawIndirect&&properties.limits.maxDrawIndirectCount>1);
|
||||
}
|
||||
|
||||
const uint32_t GetMaxMDICount ()const
|
||||
{
|
||||
return properties.limits.maxDrawIndirectCount;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
|
@ -170,7 +170,7 @@ void RenderCmdBuffer::DrawIndirect( VkBuffer buffer,
|
||||
uint32_t drawCount,
|
||||
uint32_t stride)
|
||||
{
|
||||
if(this->dev_attr->physical_device->GetFeatures().multiDrawIndirect)
|
||||
if(this->dev_attr->physical_device->IsSupportMDI())
|
||||
vkCmdDrawIndirect(cmd_buf,buffer,offset,drawCount,stride);
|
||||
else
|
||||
for(uint32_t i=0;i<drawCount;i++)
|
||||
@ -182,7 +182,7 @@ void RenderCmdBuffer::DrawIndexedIndirect( VkBuffer buffer,
|
||||
uint32_t drawCount,
|
||||
uint32_t stride)
|
||||
{
|
||||
if(this->dev_attr->physical_device->GetFeatures().multiDrawIndirect)
|
||||
if(this->dev_attr->physical_device->IsSupportMDI())
|
||||
vkCmdDrawIndexedIndirect(cmd_buf,buffer,offset,drawCount,stride);
|
||||
else
|
||||
for(uint32_t i=0;i<drawCount;i++)
|
||||
|
Loading…
x
Reference in New Issue
Block a user