You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Modern GPUs typically have a (relatively small) memory region which is both: vk::MemoryPropertyFlagBits::eDeviceLocal | vk::MemoryPropertyFlagBits::eHostCoherent. See the following output of context().print_available_memory_types();:
The problem is just, that enum struct memory_usage only supports device OR host_coherent, but not the combination of both.
Furthermore, the framework does probably disregard which memory region exactly a memory_usage::device is allocated from (in the example above, the options would be memory regions at heap indices 0 or 2, but the framework does probably not really care which one it chooses -- but it should!)
memory_usage::device should allocate from the memory region that has the flag vk::MemoryPropertyFlagBits::eDeviceLocal, but does not have vk::MemoryPropertyFlagBits::eHostCoherent! Furthermore, this flag should probably be renamed into memory_usage::device_local!
memory_usage::host_coherent should allocate from the memory region that has the flag vk::MemoryPropertyFlagBits::eHostCoherent, but does not have vk::MemoryPropertyFlagBits::eDeviceLocal!
And a new memory_usage::device_local_and_host_coherent should allocate from the memory region that has both flags: vk::MemoryPropertyFlagBits::eDeviceLocal | vk::MemoryPropertyFlagBits::eHostCoherent. The question is just if there is a better name for this. (I think, there was a dedicated name for this memory region, but I can't remember.)
The text was updated successfully, but these errors were encountered:
Modern GPUs typically have a (relatively small) memory region which is both:
vk::MemoryPropertyFlagBits::eDeviceLocal | vk::MemoryPropertyFlagBits::eHostCoherent
. See the following output ofcontext().print_available_memory_types();
:The problem is just, that
enum struct memory_usage
only supportsdevice
ORhost_coherent
, but not the combination of both.Furthermore, the framework does probably disregard which memory region exactly a
memory_usage::device
is allocated from (in the example above, the options would be memory regions at heap indices0
or2
, but the framework does probably not really care which one it chooses -- but it should!)memory_usage::device
should allocate from the memory region that has the flagvk::MemoryPropertyFlagBits::eDeviceLocal
, but does not havevk::MemoryPropertyFlagBits::eHostCoherent
! Furthermore, this flag should probably be renamed intomemory_usage::device_local
!memory_usage::host_coherent
should allocate from the memory region that has the flagvk::MemoryPropertyFlagBits::eHostCoherent
, but does not havevk::MemoryPropertyFlagBits::eDeviceLocal
!And a new
memory_usage::device_local_and_host_coherent
should allocate from the memory region that has both flags:vk::MemoryPropertyFlagBits::eDeviceLocal | vk::MemoryPropertyFlagBits::eHostCoherent
. The question is just if there is a better name for this. (I think, there was a dedicated name for this memory region, but I can't remember.)The text was updated successfully, but these errors were encountered: