mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Add "allocation slack" to our pushbuffers. Fixes a memory overwrite bug
Reported by Joseph on Discord. Sometimes, things could align perfectly so allocations happend exactly at the end of a pushbuffer. At the same time, we allow our vertex decoder to write an extra few bytes if it needs to for speed. Unfortunately I missed this interaction, resulting in some uncommon crashes that were especially common with heavy-geometry things like modified GTA LCS with PS2 assets, for example. The problem was reported with Vulkan, but our OpenGL backend had the same issue too.
This commit is contained in:
1 parent
81cf56f619
commit
28166cb35d
13 files changed
+31
-19
No files matched your search
@@ -76,8 +76,8 @@ void DrawEngineVulkan::InitDeviceObjects() {
|
||||
pipelineLayout_ = renderManager->CreatePipelineLayout(bindingTypes, ARRAY_SIZE(bindingTypes), draw_->GetDeviceCaps().geometryShaderSupported, "drawengine_layout");
|
||||
|
||||
pushUBO_ = (VulkanPushPool *)draw_->GetNativeObject(Draw::NativeObject::PUSH_POOL);
|
||||
pushVertex_ = new VulkanPushPool(vulkan, "pushVertex", 4 * 1024 * 1024, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT);
|
||||
pushIndex_ = new VulkanPushPool(vulkan, "pushIndex", 1 * 512 * 1024, VK_BUFFER_USAGE_INDEX_BUFFER_BIT);
|
||||
pushVertex_ = new VulkanPushPool(vulkan, "pushVertex", 4 * 1024 * 1024, 256, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT);
|
||||
pushIndex_ = new VulkanPushPool(vulkan, "pushIndex", 512 * 1024, 64, VK_BUFFER_USAGE_INDEX_BUFFER_BIT);
|
||||
|
||||
VkSamplerCreateInfo samp{ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO };
|
||||
samp.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||
|
||||
Reference in new issue
Block a user