cleaned up renderer
This commit is contained in:
parent
afe23851f0
commit
d661c88ee2
58 changed files with 3030 additions and 4722 deletions
|
|
@ -19,14 +19,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
module;
|
||||
|
||||
#ifdef CRAFTER_GRAPHICS_VULKAN
|
||||
#ifdef CRAFTER_GRAPHICS_RENDERER_VULKAN
|
||||
#include "vulkan/vulkan.h"
|
||||
#endif
|
||||
|
||||
export module Crafter.Graphics:VulkanBuffer;
|
||||
#ifdef CRAFTER_GRAPHICS_VULKAN
|
||||
#ifdef CRAFTER_GRAPHICS_RENDERER_VULKAN
|
||||
import std;
|
||||
import :VulkanDevice;
|
||||
import :Device;
|
||||
|
||||
namespace Crafter {
|
||||
export class VulkanBufferBase {
|
||||
|
|
@ -95,14 +95,14 @@ namespace Crafter {
|
|||
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
bufferCreateInfo.usage = usageFlags;
|
||||
bufferCreateInfo.size = sizeof(T)*count;
|
||||
VulkanDevice::CheckVkResult(vkCreateBuffer(VulkanDevice::device, &bufferCreateInfo, nullptr, &buffer));
|
||||
Device::CheckVkResult(vkCreateBuffer(Device::device, &bufferCreateInfo, nullptr, &buffer));
|
||||
|
||||
VkMemoryRequirements memReqs;
|
||||
vkGetBufferMemoryRequirements(VulkanDevice::device, buffer, &memReqs);
|
||||
vkGetBufferMemoryRequirements(Device::device, buffer, &memReqs);
|
||||
VkMemoryAllocateInfo memAlloc {
|
||||
.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
|
||||
.allocationSize = memReqs.size,
|
||||
.memoryTypeIndex = VulkanDevice::GetMemoryType(memReqs.memoryTypeBits, memoryPropertyFlags)
|
||||
.memoryTypeIndex = Device::GetMemoryType(memReqs.memoryTypeBits, memoryPropertyFlags)
|
||||
};
|
||||
if constexpr(Adressable) {
|
||||
VkMemoryAllocateFlagsInfoKHR allocFlagsInfo {
|
||||
|
|
@ -110,36 +110,36 @@ namespace Crafter {
|
|||
.flags = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR,
|
||||
};
|
||||
memAlloc.pNext = &allocFlagsInfo;
|
||||
VulkanDevice::CheckVkResult(vkAllocateMemory(VulkanDevice::device, &memAlloc, nullptr, &memory));
|
||||
Device::CheckVkResult(vkAllocateMemory(Device::device, &memAlloc, nullptr, &memory));
|
||||
} else {
|
||||
VulkanDevice::CheckVkResult(vkAllocateMemory(VulkanDevice::device, &memAlloc, nullptr, &memory));
|
||||
Device::CheckVkResult(vkAllocateMemory(Device::device, &memAlloc, nullptr, &memory));
|
||||
}
|
||||
|
||||
descriptor.offset = 0;
|
||||
descriptor.buffer = buffer;
|
||||
descriptor.range = VK_WHOLE_SIZE;
|
||||
|
||||
VulkanDevice::CheckVkResult(vkBindBufferMemory(VulkanDevice::device, buffer, memory, 0));
|
||||
Device::CheckVkResult(vkBindBufferMemory(Device::device, buffer, memory, 0));
|
||||
|
||||
if constexpr(Adressable) {
|
||||
VkBufferDeviceAddressInfo addressInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
|
||||
.buffer = buffer
|
||||
};
|
||||
VulkanBufferAdressableConditional<true>::address = vkGetBufferDeviceAddress(VulkanDevice::device, &addressInfo);
|
||||
VulkanBufferAdressableConditional<true>::address = vkGetBufferDeviceAddress(Device::device, &addressInfo);
|
||||
}
|
||||
|
||||
if constexpr(Mapped) {
|
||||
VulkanDevice::CheckVkResult(vkMapMemory(VulkanDevice::device, memory, 0, memReqs.size, 0, reinterpret_cast<void**>(&(VulkanBufferMappedConditional<T, true>::value))));
|
||||
Device::CheckVkResult(vkMapMemory(Device::device, memory, 0, memReqs.size, 0, reinterpret_cast<void**>(&(VulkanBufferMappedConditional<T, true>::value))));
|
||||
}
|
||||
}
|
||||
|
||||
void Clear() {
|
||||
if constexpr(Mapped) {
|
||||
vkUnmapMemory(VulkanDevice::device, memory);
|
||||
vkUnmapMemory(Device::device, memory);
|
||||
}
|
||||
vkDestroyBuffer(VulkanDevice::device, buffer, nullptr);
|
||||
vkFreeMemory(VulkanDevice::device, memory, nullptr);
|
||||
vkDestroyBuffer(Device::device, buffer, nullptr);
|
||||
vkFreeMemory(Device::device, memory, nullptr);
|
||||
buffer = VK_NULL_HANDLE;
|
||||
if constexpr(Staged) {
|
||||
delete VulkanBufferMappedConditional<T, true>::stagingBuffer;
|
||||
|
|
@ -201,7 +201,7 @@ namespace Crafter {
|
|||
.offset = 0,
|
||||
.size = VK_WHOLE_SIZE
|
||||
};
|
||||
vkFlushMappedMemoryRanges(VulkanDevice::device, 1, &range);
|
||||
vkFlushMappedMemoryRanges(Device::device, 1, &range);
|
||||
}
|
||||
|
||||
void FlushDevice(VkCommandBuffer cmd, VkAccessFlags dstAccessMask, VkPipelineStageFlags dstStageMask) requires(Mapped) {
|
||||
|
|
@ -235,7 +235,7 @@ namespace Crafter {
|
|||
.offset = 0,
|
||||
.size = VK_WHOLE_SIZE
|
||||
};
|
||||
vkInvalidateMappedMemoryRanges(VulkanDevice::device, 1, &range);
|
||||
vkInvalidateMappedMemoryRanges(Device::device, 1, &range);
|
||||
}
|
||||
|
||||
void FlushDevice(VkCommandBuffer cmd) requires(Staged) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue