mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-10-11 22:49:56 +00:00
GS/VK: Detect max supported framebuffer dimensions for null framebuffer.
This commit is contained in:
@@ -2119,7 +2119,7 @@ bool GSDeviceVK::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((m_null_framebuffer = GSTextureVK::CreateNullFramebuffer()) == VK_NULL_HANDLE)
|
||||
if ((m_null_framebuffer = GSTextureVK::CreateNullFramebuffer(m_max_framebuffer_width, m_max_framebuffer_height)) == VK_NULL_HANDLE)
|
||||
{
|
||||
Host::ReportErrorAsync("GS", "Failed to create dummy framebuffer");
|
||||
return false;
|
||||
@@ -2774,6 +2774,8 @@ bool GSDeviceVK::CheckFeatures()
|
||||
}
|
||||
|
||||
m_max_texture_size = m_device_properties.limits.maxImageDimension2D;
|
||||
m_max_framebuffer_width = m_device_properties.limits.maxFramebufferWidth;
|
||||
m_max_framebuffer_height = m_device_properties.limits.maxFramebufferHeight;
|
||||
|
||||
m_features.rov = m_optional_extensions.vk_ext_fragment_shader_interlock &&
|
||||
m_device_features.fragmentStoresAndAtomics &&
|
||||
|
||||
@@ -293,6 +293,8 @@ private:
|
||||
VkPhysicalDeviceDriverPropertiesKHR m_device_driver_properties = {};
|
||||
OptionalExtensions m_optional_extensions = {};
|
||||
|
||||
u32 m_max_framebuffer_width = 0;
|
||||
u32 m_max_framebuffer_height = 0;
|
||||
public:
|
||||
enum FeedbackLoopFlag : u8
|
||||
{
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "common/Console.h"
|
||||
#include "common/BitUtils.h"
|
||||
|
||||
VkFramebuffer GSTextureVK::CreateNullFramebuffer()
|
||||
VkFramebuffer GSTextureVK::CreateNullFramebuffer(u32 w, u32 h)
|
||||
{
|
||||
const VkRenderPass rp = GSDeviceVK::GetInstance()->GetRenderPass(
|
||||
VK_FORMAT_UNDEFINED,
|
||||
@@ -23,7 +23,7 @@ VkFramebuffer GSTextureVK::CreateNullFramebuffer()
|
||||
return VK_NULL_HANDLE;
|
||||
|
||||
Vulkan::FramebufferBuilder fbb;
|
||||
fbb.SetSize(16384, 16384, 1);
|
||||
fbb.SetSize(w, h, 1);
|
||||
fbb.SetRenderPass(rp);
|
||||
|
||||
return fbb.Create(GSDeviceVK::GetInstance()->GetDevice());
|
||||
|
||||
@@ -72,7 +72,7 @@ public:
|
||||
void TransitionSubresourcesToLayout(
|
||||
VkCommandBuffer command_buffer, int start_level, int num_levels, Layout old_layout, Layout new_layout);
|
||||
|
||||
static VkFramebuffer CreateNullFramebuffer();
|
||||
static VkFramebuffer CreateNullFramebuffer(u32 w, u32 h);
|
||||
|
||||
/// Framebuffers are lazily allocated.
|
||||
VkFramebuffer GetFramebuffer(bool feedback_loop);
|
||||
|
||||
Reference in New Issue
Block a user