mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-10-12 02:08:45 +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;
|
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");
|
Host::ReportErrorAsync("GS", "Failed to create dummy framebuffer");
|
||||||
return false;
|
return false;
|
||||||
@@ -2774,6 +2774,8 @@ bool GSDeviceVK::CheckFeatures()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_max_texture_size = m_device_properties.limits.maxImageDimension2D;
|
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_features.rov = m_optional_extensions.vk_ext_fragment_shader_interlock &&
|
||||||
m_device_features.fragmentStoresAndAtomics &&
|
m_device_features.fragmentStoresAndAtomics &&
|
||||||
|
|||||||
@@ -293,6 +293,8 @@ private:
|
|||||||
VkPhysicalDeviceDriverPropertiesKHR m_device_driver_properties = {};
|
VkPhysicalDeviceDriverPropertiesKHR m_device_driver_properties = {};
|
||||||
OptionalExtensions m_optional_extensions = {};
|
OptionalExtensions m_optional_extensions = {};
|
||||||
|
|
||||||
|
u32 m_max_framebuffer_width = 0;
|
||||||
|
u32 m_max_framebuffer_height = 0;
|
||||||
public:
|
public:
|
||||||
enum FeedbackLoopFlag : u8
|
enum FeedbackLoopFlag : u8
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#include "common/Console.h"
|
#include "common/Console.h"
|
||||||
#include "common/BitUtils.h"
|
#include "common/BitUtils.h"
|
||||||
|
|
||||||
VkFramebuffer GSTextureVK::CreateNullFramebuffer()
|
VkFramebuffer GSTextureVK::CreateNullFramebuffer(u32 w, u32 h)
|
||||||
{
|
{
|
||||||
const VkRenderPass rp = GSDeviceVK::GetInstance()->GetRenderPass(
|
const VkRenderPass rp = GSDeviceVK::GetInstance()->GetRenderPass(
|
||||||
VK_FORMAT_UNDEFINED,
|
VK_FORMAT_UNDEFINED,
|
||||||
@@ -23,7 +23,7 @@ VkFramebuffer GSTextureVK::CreateNullFramebuffer()
|
|||||||
return VK_NULL_HANDLE;
|
return VK_NULL_HANDLE;
|
||||||
|
|
||||||
Vulkan::FramebufferBuilder fbb;
|
Vulkan::FramebufferBuilder fbb;
|
||||||
fbb.SetSize(16384, 16384, 1);
|
fbb.SetSize(w, h, 1);
|
||||||
fbb.SetRenderPass(rp);
|
fbb.SetRenderPass(rp);
|
||||||
|
|
||||||
return fbb.Create(GSDeviceVK::GetInstance()->GetDevice());
|
return fbb.Create(GSDeviceVK::GetInstance()->GetDevice());
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ public:
|
|||||||
void TransitionSubresourcesToLayout(
|
void TransitionSubresourcesToLayout(
|
||||||
VkCommandBuffer command_buffer, int start_level, int num_levels, Layout old_layout, Layout new_layout);
|
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.
|
/// Framebuffers are lazily allocated.
|
||||||
VkFramebuffer GetFramebuffer(bool feedback_loop);
|
VkFramebuffer GetFramebuffer(bool feedback_loop);
|
||||||
|
|||||||
Reference in New Issue
Block a user