mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
synced 2024-11-05 04:10:06 +00:00
Merge pull request #163 from kd-11/master
mem_alloc: Optimize allocation conflict checking
This commit is contained in:
commit
b6541426e6
@ -9656,7 +9656,7 @@ bool VmaBlockMetadata_Generic::CheckAllocation(
|
||||
|
||||
// Check previous suballocations for BufferImageGranularity conflicts.
|
||||
// Make bigger alignment if necessary.
|
||||
if(bufferImageGranularity > 1)
|
||||
if(bufferImageGranularity > 1 && bufferImageGranularity != allocAlignment)
|
||||
{
|
||||
bool bufferImageGranularityConflict = false;
|
||||
VmaSuballocationList::const_iterator prevSuballocItem = suballocItem;
|
||||
@ -9740,7 +9740,7 @@ bool VmaBlockMetadata_Generic::CheckAllocation(
|
||||
|
||||
// Check next suballocations for BufferImageGranularity conflicts.
|
||||
// If conflict exists, we must mark more allocations lost or fail.
|
||||
if(bufferImageGranularity > 1)
|
||||
if(allocSize % bufferImageGranularity || *pOffset % bufferImageGranularity)
|
||||
{
|
||||
VmaSuballocationList::const_iterator nextSuballocItem = lastSuballocItem;
|
||||
++nextSuballocItem;
|
||||
@ -9799,7 +9799,7 @@ bool VmaBlockMetadata_Generic::CheckAllocation(
|
||||
|
||||
// Check previous suballocations for BufferImageGranularity conflicts.
|
||||
// Make bigger alignment if necessary.
|
||||
if(bufferImageGranularity > 1)
|
||||
if(bufferImageGranularity > 1 && bufferImageGranularity != allocAlignment)
|
||||
{
|
||||
bool bufferImageGranularityConflict = false;
|
||||
VmaSuballocationList::const_iterator prevSuballocItem = suballocItem;
|
||||
@ -9839,7 +9839,7 @@ bool VmaBlockMetadata_Generic::CheckAllocation(
|
||||
|
||||
// Check next suballocations for BufferImageGranularity conflicts.
|
||||
// If conflict exists, allocation cannot be made here.
|
||||
if(bufferImageGranularity > 1)
|
||||
if(allocSize % bufferImageGranularity || *pOffset % bufferImageGranularity)
|
||||
{
|
||||
VmaSuballocationList::const_iterator nextSuballocItem = suballocItem;
|
||||
++nextSuballocItem;
|
||||
@ -11007,7 +11007,7 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest_UpperAddress(
|
||||
|
||||
// Check next suballocations from 2nd for BufferImageGranularity conflicts.
|
||||
// Make bigger alignment if necessary.
|
||||
if(bufferImageGranularity > 1 && !suballocations2nd.empty())
|
||||
if(bufferImageGranularity > 1 && bufferImageGranularity != allocAlignment && !suballocations2nd.empty())
|
||||
{
|
||||
bool bufferImageGranularityConflict = false;
|
||||
for(size_t nextSuballocIndex = suballocations2nd.size(); nextSuballocIndex--; )
|
||||
@ -11112,7 +11112,7 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest_LowerAddress(
|
||||
|
||||
// Check previous suballocations for BufferImageGranularity conflicts.
|
||||
// Make bigger alignment if necessary.
|
||||
if(bufferImageGranularity > 1 && !suballocations1st.empty())
|
||||
if(bufferImageGranularity > 1 && bufferImageGranularity != allocAlignment && !suballocations1st.empty())
|
||||
{
|
||||
bool bufferImageGranularityConflict = false;
|
||||
for(size_t prevSuballocIndex = suballocations1st.size(); prevSuballocIndex--; )
|
||||
@ -11144,7 +11144,7 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest_LowerAddress(
|
||||
{
|
||||
// Check next suballocations for BufferImageGranularity conflicts.
|
||||
// If conflict exists, allocation cannot be made here.
|
||||
if(bufferImageGranularity > 1 && m_2ndVectorMode == SECOND_VECTOR_DOUBLE_STACK)
|
||||
if((allocSize % bufferImageGranularity || resultOffset % bufferImageGranularity) && m_2ndVectorMode == SECOND_VECTOR_DOUBLE_STACK)
|
||||
{
|
||||
for(size_t nextSuballocIndex = suballocations2nd.size(); nextSuballocIndex--; )
|
||||
{
|
||||
@ -11202,7 +11202,7 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest_LowerAddress(
|
||||
|
||||
// Check previous suballocations for BufferImageGranularity conflicts.
|
||||
// Make bigger alignment if necessary.
|
||||
if(bufferImageGranularity > 1 && !suballocations2nd.empty())
|
||||
if(bufferImageGranularity > 1 && bufferImageGranularity != allocAlignment && !suballocations2nd.empty())
|
||||
{
|
||||
bool bufferImageGranularityConflict = false;
|
||||
for(size_t prevSuballocIndex = suballocations2nd.size(); prevSuballocIndex--; )
|
||||
@ -11260,7 +11260,7 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest_LowerAddress(
|
||||
|
||||
// Check next suballocations for BufferImageGranularity conflicts.
|
||||
// If conflict exists, we must mark more allocations lost or fail.
|
||||
if(bufferImageGranularity > 1)
|
||||
if(allocSize % bufferImageGranularity || resultOffset % bufferImageGranularity)
|
||||
{
|
||||
while(index1st < suballocations1st.size())
|
||||
{
|
||||
@ -11306,7 +11306,7 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest_LowerAddress(
|
||||
{
|
||||
// Check next suballocations for BufferImageGranularity conflicts.
|
||||
// If conflict exists, allocation cannot be made here.
|
||||
if(bufferImageGranularity > 1)
|
||||
if(allocSize % bufferImageGranularity || resultOffset % bufferImageGranularity)
|
||||
{
|
||||
for(size_t nextSuballocIndex = index1st;
|
||||
nextSuballocIndex < suballocations1st.size();
|
||||
|
Loading…
Reference in New Issue
Block a user