mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Common: Add alignment header
Gets rid of duplicated alignment code.
This commit is contained in:
@ -6,6 +6,7 @@
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include "Common/Align.h"
|
||||
#include "Common/Assert.h"
|
||||
|
||||
#include "VideoBackends/Vulkan/CommandBufferManager.h"
|
||||
@ -101,11 +102,11 @@ bool StateTracker::Initialize()
|
||||
// To work around this we reserve the maximum buffer size at all times, but only commit
|
||||
// as many bytes as we use.
|
||||
m_uniform_buffer_reserve_size = sizeof(PixelShaderConstants);
|
||||
m_uniform_buffer_reserve_size = Util::AlignValue(m_uniform_buffer_reserve_size,
|
||||
g_vulkan_context->GetUniformBufferAlignment()) +
|
||||
m_uniform_buffer_reserve_size = Common::AlignUp(m_uniform_buffer_reserve_size,
|
||||
g_vulkan_context->GetUniformBufferAlignment()) +
|
||||
sizeof(VertexShaderConstants);
|
||||
m_uniform_buffer_reserve_size = Util::AlignValue(m_uniform_buffer_reserve_size,
|
||||
g_vulkan_context->GetUniformBufferAlignment()) +
|
||||
m_uniform_buffer_reserve_size = Common::AlignUp(m_uniform_buffer_reserve_size,
|
||||
g_vulkan_context->GetUniformBufferAlignment()) +
|
||||
sizeof(GeometryShaderConstants);
|
||||
|
||||
// Default dirty flags include all descriptors
|
||||
@ -461,9 +462,9 @@ void StateTracker::UploadAllConstants()
|
||||
size_t ub_alignment = g_vulkan_context->GetUniformBufferAlignment();
|
||||
size_t pixel_constants_offset = 0;
|
||||
size_t vertex_constants_offset =
|
||||
Util::AlignValue(pixel_constants_offset + sizeof(PixelShaderConstants), ub_alignment);
|
||||
Common::AlignUp(pixel_constants_offset + sizeof(PixelShaderConstants), ub_alignment);
|
||||
size_t geometry_constants_offset =
|
||||
Util::AlignValue(vertex_constants_offset + sizeof(VertexShaderConstants), ub_alignment);
|
||||
Common::AlignUp(vertex_constants_offset + sizeof(VertexShaderConstants), ub_alignment);
|
||||
size_t allocation_size = geometry_constants_offset + sizeof(GeometryShaderConstants);
|
||||
|
||||
// Allocate everything at once.
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
#include "VideoBackends/Vulkan/Util.h"
|
||||
|
||||
#include "Common/Align.h"
|
||||
#include "Common/Assert.h"
|
||||
#include "Common/CommonFuncs.h"
|
||||
#include "Common/MathUtil.h"
|
||||
@ -20,22 +21,13 @@ namespace Vulkan
|
||||
{
|
||||
namespace Util
|
||||
{
|
||||
size_t AlignValue(size_t value, size_t alignment)
|
||||
{
|
||||
// Have to use mod rather than masking bits in case alignment is not a power of two.
|
||||
size_t offset = value % alignment;
|
||||
if (offset != 0)
|
||||
value += (alignment - offset);
|
||||
return value;
|
||||
}
|
||||
|
||||
size_t AlignBufferOffset(size_t offset, size_t alignment)
|
||||
{
|
||||
// Assume an offset of zero is already aligned to a value larger than alignment.
|
||||
if (offset == 0)
|
||||
return 0;
|
||||
|
||||
return AlignValue(offset, alignment);
|
||||
return Common::AlignUp(offset, alignment);
|
||||
}
|
||||
|
||||
u32 MakeRGBA8Color(float r, float g, float b, float a)
|
||||
|
@ -19,7 +19,6 @@ class StateTracker;
|
||||
|
||||
namespace Util
|
||||
{
|
||||
size_t AlignValue(size_t value, size_t alignment);
|
||||
size_t AlignBufferOffset(size_t offset, size_t alignment);
|
||||
|
||||
u32 MakeRGBA8Color(float r, float g, float b, float a);
|
||||
|
Reference in New Issue
Block a user