mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-23 20:36:58 +02:00
graphics: clamp storage buffers to committed memory
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include "graphics/shader/recompiler/ir/passes/BindingLayout.h"
|
#include "graphics/shader/recompiler/ir/passes/BindingLayout.h"
|
||||||
#include "graphics/shader/recompiler/ir/passes/ResourceMaterialization.h"
|
#include "graphics/shader/recompiler/ir/passes/ResourceMaterialization.h"
|
||||||
#include "graphics/shader/shader.h"
|
#include "graphics/shader/shader.h"
|
||||||
|
#include "kernel/memory.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
@@ -91,11 +92,12 @@ static BufferView NativeStorageBuffer(RenderContext& context, CommandBuffer& com
|
|||||||
if (stride != 0 && records > UINT64_MAX / stride) {
|
if (stride != 0 && records > UINT64_MAX / stride) {
|
||||||
EXIT("storage buffer descriptor footprint overflow\n");
|
EXIT("storage buffer descriptor footprint overflow\n");
|
||||||
}
|
}
|
||||||
const auto size = stride != 0 ? static_cast<uint64_t>(stride) * records : records;
|
const auto requested_size = stride != 0 ? static_cast<uint64_t>(stride) * records : records;
|
||||||
if (address == 0 || size == 0) {
|
if (address == 0 || requested_size == 0) {
|
||||||
BindNullStorageBuffer(context, result);
|
BindNullStorageBuffer(context, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
const auto size = Libs::LibKernel::Memory::ClampRangeSize(address, requested_size);
|
||||||
const auto& graphics = context.GetGraphics();
|
const auto& graphics = context.GetGraphics();
|
||||||
const auto alignment = graphics.StorageMinAlignment();
|
const auto alignment = graphics.StorageMinAlignment();
|
||||||
if (alignment == 0 ||
|
if (alignment == 0 ||
|
||||||
|
|||||||
Reference in New Issue
Block a user