mirror of
https://github.com/love2d/love.git
synced 2026-08-16 16:20:42 +02:00
vulkan: adjust code styling
This commit is contained in:
@@ -1,12 +1,17 @@
|
||||
#include "Buffer.h"
|
||||
#include "Graphics.h"
|
||||
|
||||
namespace love {
|
||||
namespace graphics {
|
||||
namespace vulkan {
|
||||
namespace love
|
||||
{
|
||||
namespace graphics
|
||||
{
|
||||
namespace vulkan
|
||||
{
|
||||
|
||||
static VkBufferUsageFlags getUsageBit(BufferUsage mode) {
|
||||
switch (mode) {
|
||||
static VkBufferUsageFlags getUsageBit(BufferUsage mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case BUFFERUSAGE_VERTEX: return VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
|
||||
case BUFFERUSAGE_INDEX: return VK_BUFFER_USAGE_INDEX_BUFFER_BIT;
|
||||
case BUFFERUSAGE_UNIFORM: return VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
|
||||
@@ -15,35 +20,37 @@ static VkBufferUsageFlags getUsageBit(BufferUsage mode) {
|
||||
}
|
||||
}
|
||||
|
||||
static VkBufferUsageFlags getVulkanUsageFlags(BufferUsageFlags flags) {
|
||||
static VkBufferUsageFlags getVulkanUsageFlags(BufferUsageFlags flags)
|
||||
{
|
||||
VkBufferUsageFlags vkFlags = 0;
|
||||
for (int i = 0; i < BUFFERUSAGE_MAX_ENUM; i++) {
|
||||
for (int i = 0; i < BUFFERUSAGE_MAX_ENUM; i++)
|
||||
{
|
||||
BufferUsageFlags flag = static_cast<BufferUsageFlags>(1u << i);
|
||||
if (flags & flag) {
|
||||
if (flags & flag)
|
||||
vkFlags |= getUsageBit((BufferUsage)i);
|
||||
}
|
||||
}
|
||||
return vkFlags;
|
||||
}
|
||||
|
||||
Buffer::Buffer(love::graphics::Graphics* gfx, const Settings& settings, const std::vector<DataDeclaration>& format, const void* data, size_t size, size_t arraylength)
|
||||
: love::graphics::Buffer(gfx, settings, format, size, arraylength), usageFlags(settings.usageFlags), gfx(gfx) {
|
||||
Buffer::Buffer(love::graphics::Graphics *gfx, const Settings &settings, const std::vector<DataDeclaration> &format, const void *data, size_t size, size_t arraylength)
|
||||
: love::graphics::Buffer(gfx, settings, format, size, arraylength)
|
||||
, usageFlags(settings.usageFlags)
|
||||
, vgfx(dynamic_cast<Graphics*>(gfx))
|
||||
{
|
||||
loadVolatile();
|
||||
}
|
||||
|
||||
bool Buffer::loadVolatile() {
|
||||
Graphics* vgfx = (Graphics*)gfx;
|
||||
bool Buffer::loadVolatile()
|
||||
{
|
||||
allocator = vgfx->getVmaAllocator();
|
||||
|
||||
VkBufferCreateInfo bufferInfo{};
|
||||
bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
bufferInfo.size = getSize();
|
||||
if (dataUsage == BUFFERDATAUSAGE_READBACK) {
|
||||
if (dataUsage == BUFFERDATAUSAGE_READBACK)
|
||||
bufferInfo.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||
}
|
||||
else {
|
||||
else
|
||||
bufferInfo.usage = getVulkanUsageFlags(usageFlags);
|
||||
}
|
||||
|
||||
VmaAllocationCreateInfo allocCreateInfo = {};
|
||||
allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
|
||||
@@ -54,11 +61,11 @@ bool Buffer::loadVolatile() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void Buffer::unloadVolatile() {
|
||||
void Buffer::unloadVolatile()
|
||||
{
|
||||
if (buffer == VK_NULL_HANDLE)
|
||||
return;
|
||||
|
||||
Graphics* vgfx = (Graphics*)gfx;
|
||||
auto device = vgfx->getDevice();
|
||||
|
||||
vgfx->queueCleanUp(
|
||||
@@ -70,29 +77,43 @@ void Buffer::unloadVolatile() {
|
||||
buffer = VK_NULL_HANDLE;
|
||||
}
|
||||
|
||||
Buffer::~Buffer() {
|
||||
Buffer::~Buffer()
|
||||
{
|
||||
unloadVolatile();
|
||||
}
|
||||
|
||||
void* Buffer::map(MapType map, size_t offset, size_t size) {
|
||||
ptrdiff_t Buffer::getHandle() const
|
||||
{
|
||||
return (ptrdiff_t) buffer;
|
||||
}
|
||||
|
||||
ptrdiff_t Buffer::getTexelBufferHandle() const
|
||||
{
|
||||
throw love::Exception("unimplemented Buffer::getTexelBufferHandle");
|
||||
return (ptrdiff_t) nullptr; // todo ?
|
||||
}
|
||||
|
||||
void* Buffer::map(MapType map, size_t offset, size_t size)
|
||||
{
|
||||
char* data = (char*)allocInfo.pMappedData;
|
||||
return (void*) (data + offset);
|
||||
}
|
||||
|
||||
bool Buffer::fill(size_t offset, size_t size, const void *data) {
|
||||
bool Buffer::fill(size_t offset, size_t size, const void *data)
|
||||
{
|
||||
void* dst = (void*)((char*)allocInfo.pMappedData + offset);
|
||||
memcpy(dst, data, size);
|
||||
return true;
|
||||
}
|
||||
|
||||
void Buffer::unmap(size_t usedoffset, size_t usedsize) {
|
||||
void Buffer::unmap(size_t usedoffset, size_t usedsize)
|
||||
{
|
||||
(void)usedoffset;
|
||||
(void)usedsize;
|
||||
}
|
||||
|
||||
void Buffer::copyTo(love::graphics::Buffer* dest, size_t sourceoffset, size_t destoffset, size_t size) {
|
||||
Graphics* vgfx = (Graphics*)gfx;
|
||||
|
||||
void Buffer::copyTo(love::graphics::Buffer *dest, size_t sourceoffset, size_t destoffset, size_t size)
|
||||
{
|
||||
auto commandBuffer = vgfx->getReadbackCommandBuffer();
|
||||
|
||||
VkBufferCopy bufferCopy{};
|
||||
|
||||
Reference in New Issue
Block a user