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;}
|
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:
|
public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -170,7 +170,7 @@ void RenderCmdBuffer::DrawIndirect( VkBuffer buffer,
|
|||||||
uint32_t drawCount,
|
uint32_t drawCount,
|
||||||
uint32_t stride)
|
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);
|
vkCmdDrawIndirect(cmd_buf,buffer,offset,drawCount,stride);
|
||||||
else
|
else
|
||||||
for(uint32_t i=0;i<drawCount;i++)
|
for(uint32_t i=0;i<drawCount;i++)
|
||||||
@ -182,7 +182,7 @@ void RenderCmdBuffer::DrawIndexedIndirect( VkBuffer buffer,
|
|||||||
uint32_t drawCount,
|
uint32_t drawCount,
|
||||||
uint32_t stride)
|
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);
|
vkCmdDrawIndexedIndirect(cmd_buf,buffer,offset,drawCount,stride);
|
||||||
else
|
else
|
||||||
for(uint32_t i=0;i<drawCount;i++)
|
for(uint32_t i=0;i<drawCount;i++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user