mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-18 12:55:19 +00:00
vk: Allow creating temporary subresources to fail if we run out of memory.
This commit is contained in:
parent
92d1534917
commit
9d11c8cbb5
6 changed files with 85 additions and 19 deletions
|
|
@ -505,8 +505,14 @@ namespace vk
|
|||
image_type,
|
||||
dst_format,
|
||||
w, h, d, mips, layers, VK_SAMPLE_COUNT_1_BIT, VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, image_flags,
|
||||
VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, image_flags | VK_IMAGE_CREATE_ALLOW_NULL,
|
||||
VMM_ALLOCATION_POOL_TEXTURE_CACHE, rsx::classify_format(gcm_format));
|
||||
|
||||
if (!image->value)
|
||||
{
|
||||
// OOM, bail
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
// This method is almost exclusively used to work on framebuffer resources
|
||||
|
|
@ -572,6 +578,12 @@ namespace vk
|
|||
auto result = create_temporary_subresource_view_impl(cmd, _template, VK_IMAGE_TYPE_2D,
|
||||
VK_IMAGE_VIEW_TYPE_CUBE, gcm_format, 0, 0, size, size, 1, 1, remap_vector, false);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
// Failed to create temporary object, bail
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const auto image = result->image();
|
||||
VkImageAspectFlags dst_aspect = vk::get_aspect_flags(result->info.format);
|
||||
VkImageSubresourceRange dst_range = { dst_aspect, 0, 1, 0, 6 };
|
||||
|
|
@ -601,6 +613,12 @@ namespace vk
|
|||
auto result = create_temporary_subresource_view_impl(cmd, _template, VK_IMAGE_TYPE_3D,
|
||||
VK_IMAGE_VIEW_TYPE_3D, gcm_format, 0, 0, width, height, depth, 1, remap_vector, false);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
// Failed to create temporary object, bail
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const auto image = result->image();
|
||||
VkImageAspectFlags dst_aspect = vk::get_aspect_flags(result->info.format);
|
||||
VkImageSubresourceRange dst_range = { dst_aspect, 0, 1, 0, 1 };
|
||||
|
|
@ -630,6 +648,12 @@ namespace vk
|
|||
auto result = create_temporary_subresource_view_impl(cmd, _template, VK_IMAGE_TYPE_2D,
|
||||
VK_IMAGE_VIEW_TYPE_2D, gcm_format, 0, 0, width, height, 1, 1, remap_vector, false);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
// Failed to create temporary object, bail
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const auto image = result->image();
|
||||
VkImageAspectFlags dst_aspect = vk::get_aspect_flags(result->info.format);
|
||||
VkImageSubresourceRange dst_range = { dst_aspect, 0, 1, 0, 1 };
|
||||
|
|
@ -660,6 +684,12 @@ namespace vk
|
|||
auto result = create_temporary_subresource_view_impl(cmd, _template, VK_IMAGE_TYPE_2D,
|
||||
VK_IMAGE_VIEW_TYPE_2D, gcm_format, 0, 0, width, height, 1, mipmaps, remap_vector, false);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
// Failed to create temporary object, bail
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const auto image = result->image();
|
||||
VkImageAspectFlags dst_aspect = vk::get_aspect_flags(result->info.format);
|
||||
VkImageSubresourceRange dst_range = { dst_aspect, 0, mipmaps, 0, 1 };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue