diff --git a/pcsx2/GS/Renderers/DX12/GSDevice12.cpp b/pcsx2/GS/Renderers/DX12/GSDevice12.cpp index 696516f4c2..3aadefa726 100644 --- a/pcsx2/GS/Renderers/DX12/GSDevice12.cpp +++ b/pcsx2/GS/Renderers/DX12/GSDevice12.cpp @@ -703,11 +703,17 @@ bool GSDevice12::Create(GSVSyncMode vsync_mode, bool allow_present_throttle) if (!AcquireWindow(true) || (m_window_info.type != WindowInfo::Type::Surfaceless && !CreateSwapChain())) return false; + if (!CreateNullTexture()) + { + Host::ReportErrorAsync("GS", "Failed to create dummy texture"); + return false; + } + { std::optional shader = ReadShaderSource("shaders/dx11/tfx.fx"); if (!shader.has_value()) { - Host::ReportErrorAsync("GS", "Failed to read shaders/dx11/tfx.fxf."); + Host::ReportErrorAsync("GS", "Failed to read shaders/dx11/tfx.fx."); return false; } @@ -717,12 +723,6 @@ bool GSDevice12::Create(GSVSyncMode vsync_mode, bool allow_present_throttle) if (!m_shader_cache.Open(m_feature_level, GSConfig.UseDebugDevice)) Console.Warning("D3D12: Shader cache failed to open."); - if (!CreateNullTexture()) - { - Host::ReportErrorAsync("GS", "Failed to create dummy texture"); - return false; - } - if (!CreateRootSignatures()) { Host::ReportErrorAsync("GS", "Failed to create pipeline layouts"); diff --git a/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp b/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp index 661b47a9b9..7da296684d 100644 --- a/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp +++ b/pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp @@ -2059,6 +2059,12 @@ bool GSDeviceVK::Create(GSVSyncMode vsync_mode, bool allow_present_throttle) return false; } + if (!CreateNullTexture()) + { + Host::ReportErrorAsync("GS", "Failed to create dummy texture"); + return false; + } + { std::optional shader = ReadShaderSource("shaders/vulkan/tfx.glsl"); if (!shader.has_value()) @@ -2070,12 +2076,6 @@ bool GSDeviceVK::Create(GSVSyncMode vsync_mode, bool allow_present_throttle) m_tfx_source = std::move(*shader); } - if (!CreateNullTexture()) - { - Host::ReportErrorAsync("GS", "Failed to create dummy texture"); - return false; - } - if (!CreatePipelineLayouts()) { Host::ReportErrorAsync("GS", "Failed to create pipeline layouts"); @@ -5291,8 +5291,12 @@ void GSDeviceVK::SetPipeline(VkPipeline pipeline) void GSDeviceVK::SetInitialState(VkCommandBuffer cmdbuf) { - const VkDeviceSize buffer_offset = 0; - vkCmdBindVertexBuffers(cmdbuf, 0, 1, m_vertex_stream_buffer.GetBufferPtr(), &buffer_offset); + VkBuffer buffer = *m_vertex_stream_buffer.GetBufferPtr(); + if (buffer != VK_NULL_HANDLE) + { + constexpr VkDeviceSize buffer_offset = 0; + vkCmdBindVertexBuffers(cmdbuf, 0, 1, &buffer, &buffer_offset); + } } __ri void GSDeviceVK::ApplyBaseState(u32 flags, VkCommandBuffer cmdbuf)