Go to the documentation of this file.
67 #ifdef DILIGENT_DEVELOPMENT
73 if (m_VulkanBuffer != VK_NULL_HANDLE)
81 #ifdef DILIGENT_DEVELOPMENT
82 DvpVerifyDynamicAllocation(pCtx);
84 auto& DynAlloc = m_DynamicData[CtxId];
85 return static_cast<Uint32>(DynAlloc.AlignedOffset);
96 return reinterpret_cast<void*
>(vkBuffer);
116 return reinterpret_cast<Uint8*
>(m_MemoryAllocation.
Page->
GetCPUMemory()) + m_BufferMemoryAlignedOffset;
126 Uint32 m_DynamicOffsetAlignment = 0;
127 VkDeviceSize m_BufferMemoryAlignedOffset = 0;
130 static constexpr
size_t CacheLineSize = 64;
133 CtxDynamicData() noexcept {}
134 CtxDynamicData(CtxDynamicData&&) =
default;
142 Uint8 Padding[CacheLineSize -
sizeof(VulkanDynamicAllocation)];
144 static_assert(
sizeof(CtxDynamicData) == CacheLineSize,
"Unexpected sizeof(CtxDynamicData)");
145 std::vector<CtxDynamicData, STDAllocatorRawMem<CtxDynamicData>> m_DynamicData;
Buffer view description.
Definition: BufferView.h:88
@ USAGE_STAGING
A resource that facilitates transferring data between GPU and CPU. D3D11 Counterpart: D3D11_USAGE_S...
Definition: GraphicsTypes.h:167
Definition: VulkanDynamicHeap.hpp:50
DeviceObjectBase & operator=(const DeviceObjectBase &)=delete
Base interface for a reference counter object that stores the number of strong and weak references an...
Definition: ReferenceCounters.h:44
Render device implementation in Vulkan backend.
Definition: RenderDeviceVkImpl.hpp:58
DEFINE_VULKAN_OBJECT_WRAPPER(BufferView) BufferViewWrapper
Definition: VulkanLogicalDevice.hpp:70
virtual VkBuffer GetVkBuffer() const override final
Implementation of IBufferVk::GetVkBuffer().
Definition: BufferVkImpl.cpp:476
Uint32 GetDynamicOffset(Uint32 CtxId, DeviceContextVkImpl *pCtx) const
Definition: BufferVkImpl.hpp:71
virtual void CreateViewInternal(const struct BufferViewDesc &ViewDesc, IBufferView **ppView, bool bIsDefaultView) override
Definition: BufferVkImpl.cpp:416
@ USAGE_UNIFIED
A resource residing in a unified memory (e.g. memory shared between CPU and GPU), that can be read an...
Definition: GraphicsTypes.h:179
~BufferVkImpl()
Definition: BufferVkImpl.cpp:407
virtual VkDeviceAddress GetVkDeviceAddress() const override final
Implementation of IBufferVk::GetVkDeviceAddress().
Definition: BufferVkImpl.cpp:497
BufferDesc m_Desc
Object description.
Definition: DeviceObjectBase.hpp:182
@ USAGE_DYNAMIC
A resource that can be read by the GPU and written at least once per frame by the CPU....
Definition: GraphicsTypes.h:161
Template class implementing base functionality of the buffer object.
Definition: BufferBase.hpp:59
DEFINE_VULKAN_OBJECT_WRAPPER(Buffer) BufferWrapper
Definition: VulkanLogicalDevice.hpp:69
BufferVkImpl(IReferenceCounters *pRefCounters, FixedBlockMemoryAllocator &BuffViewObjMemAllocator, RenderDeviceVkImpl *pDeviceVk, const BufferDesc &BuffDesc, const BufferData *pBuffData=nullptr)
Definition: BufferVkImpl.cpp:43
#define IMPLEMENT_QUERY_INTERFACE_IN_PLACE(InterfaceID, ParentClassName)
Definition: ObjectBase.hpp:59
#define DILIGENT_CALL_TYPE
Definition: CommonDefinitions.h:45
virtual void * GetNativeHandle() override final
Implementation of IBuffer::GetNativeHandle() in Vulkan backend.
Definition: BufferVkImpl.hpp:93
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
Device context implementation in Vulkan backend.
Definition: DeviceContextVkImpl.hpp:67
Buffer description.
Definition: Buffer.h:74
void * GetCPUAddress()
Definition: BufferVkImpl.hpp:113
virtual void SetAccessFlags(VkAccessFlags AccessFlags) override final
Implementation of IBufferVk::SetAccessFlags().
Definition: BufferVkImpl.cpp:487
Buffer object implementation in Vulkan backend.
Definition: BufferVkImpl.hpp:46
uint8_t Uint8
8-bit unsigned integer
Definition: BasicTypes.h:53
#define VERIFY_EXPR(...)
Definition: DebugUtilities.hpp:79
VulkanMemoryPage * Page
Definition: VulkanMemoryManager.hpp:90
#define VERIFY(...)
Definition: DebugUtilities.hpp:76
Memory allocator that allocates memory in a fixed-size chunks.
Definition: FixedBlockMemoryAllocator.hpp:56
USAGE Usage
Buffer usage, see Diligent::USAGE for details.
Definition: Buffer.h:88
RESOURCE_STATE
Resource usage state.
Definition: GraphicsTypes.h:2814
Buffer view interface.
Definition: BufferView.h:155
void * GetCPUMemory() const
Definition: VulkanMemoryManager.hpp:129
Describes the buffer initial data.
Definition: Buffer.h:155
bool CheckAccessFlags(VkAccessFlags AccessFlags) const
Definition: BufferVkImpl.hpp:108
Definition: VulkanMemoryManager.hpp:48
virtual VkAccessFlags GetAccessFlags() const override final
Implementation of IBufferVk::GetAccessFlags().
Definition: BufferVkImpl.cpp:492
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37