diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 73ae80d0b8..4c4b994003 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1667,20 +1667,7 @@ void RasterizerVulkan::UpdateBlending(Tegra::Engines::Maxwell3D::Regs& regs) { } if (state_tracker.TouchColorMask()) { - // Use VK_EXT_color_write_enable if available and EDS3 is not active - if (device.IsExtColorWriteEnableSupported()) { - // With color_write_enable, we set enable/disable per attachment - std::array setup_enables{}; - for (size_t index = 0; index < Maxwell::NumRenderTargets; index++) { - const auto& mask = regs.color_mask[regs.color_mask_common ? 0 : index]; - // Enable writing only if at least one component is enabled - setup_enables[index] = (mask.R || mask.G || mask.B || mask.A) ? VK_TRUE : VK_FALSE; - } - scheduler.Record([setup_enables](vk::CommandBuffer cmdbuf) { - cmdbuf.SetColorWriteEnableEXT(setup_enables); - }); - } else { - // Fallback: Use ColorWriteMask from EDS3 + if (device.IsExtExtendedDynamicState3BlendingSupported()) { std::array setup_masks{}; for (size_t index = 0; index < Maxwell::NumRenderTargets; index++) { const auto& mask = regs.color_mask[regs.color_mask_common ? 0 : index]; diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 903ffcefdc..e78324490e 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp @@ -2122,24 +2122,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI .usage = ImageUsageFlags(format_info, format), }; - VkImageViewASTCDecodeModeEXT astc_decode_mode{ - .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, - .pNext = nullptr, - .decodeMode = VK_FORMAT_UNDEFINED, - }; - const void* view_pNext = &image_view_usage; - - if (device->IsExtASTCDecodeModeSupported() && - VideoCore::Surface::IsPixelFormatASTC(image.info.format) && - VideoCore::Surface::IsPixelFormatASTC(format)) { - - const bool view_is_srgb = VideoCore::Surface::IsPixelFormatSRGB(format); - astc_decode_mode.decodeMode = view_is_srgb ? VK_FORMAT_A8B8G8R8_SRGB_PACK32 - : VK_FORMAT_A8B8G8R8_UNORM_PACK32; - astc_decode_mode.pNext = view_pNext; - view_pNext = &astc_decode_mode; - } const VkImageViewCreateInfo create_info{ .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 5fa062fd68..7f67c8c210 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1321,30 +1321,6 @@ void Device::RemoveUnsuitableExtensions() { features.extended_dynamic_state3, VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); - // VK_EXT_color_write_enable - if (extensions.extended_dynamic_state3 && dynamic_state3_blending) { - LOG_INFO(Render_Vulkan, "VK_EXT_color_write_enable disabled: VK_EXT_extended_dynamic_state3 provides ColorWriteMask functionality"); - RemoveExtensionFeature(extensions.color_write_enable, features.color_write_enable, - VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME); - } else { - extensions.color_write_enable = features.color_write_enable.colorWriteEnable; - RemoveExtensionFeatureIfUnsuitable(extensions.color_write_enable, - features.color_write_enable, - VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME); - } - - // VK_EXT_astc_decode_mode - if (is_optimal_astc_supported && loaded_extensions.contains(VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME)) { - extensions.astc_decode_mode = true; - LOG_INFO(Render_Vulkan, "VK_EXT_astc_decode_mode enabled"); - } else { - extensions.astc_decode_mode = false; - if (loaded_extensions.contains(VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME) && !is_optimal_astc_supported) { - LOG_INFO(Render_Vulkan, "VK_EXT_astc_decode_mode disabled: Requires native ASTC support"); - loaded_extensions.erase(VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME); - } - } - // VK_EXT_robustness2 extensions.robustness_2 = features.robustness2.robustBufferAccess2 || features.robustness2.robustImageAccess2 || diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 666a4fafc3..2016649c17 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -48,7 +48,6 @@ VK_DEFINE_HANDLE(VmaAllocator) // Define all features which may be used by the implementation and require an extension here. #define FOR_EACH_VK_FEATURE_EXT(FEATURE) \ - FEATURE(EXT, ColorWriteEnable, COLOR_WRITE_ENABLE, color_write_enable) \ FEATURE(EXT, CustomBorderColor, CUSTOM_BORDER_COLOR, custom_border_color) \ FEATURE(EXT, DepthBiasControl, DEPTH_BIAS_CONTROL, depth_bias_control) \ FEATURE(EXT, DepthClipControl, DEPTH_CLIP_CONTROL, depth_clip_control) \ @@ -75,7 +74,6 @@ VK_DEFINE_HANDLE(VmaAllocator) // Define miscellaneous extensions which may be used by the implementation here. #define FOR_EACH_VK_EXTENSION(EXTENSION) \ - EXTENSION(EXT, ASTC_DECODE_MODE, astc_decode_mode) \ EXTENSION(EXT, CONDITIONAL_RENDERING, conditional_rendering) \ EXTENSION(EXT, CONSERVATIVE_RASTERIZATION, conservative_rasterization) \ EXTENSION(EXT, DEPTH_RANGE_UNRESTRICTED, depth_range_unrestricted) \ @@ -559,16 +557,6 @@ public: return extensions.custom_border_color; } - /// Returns true if the device supports VK_EXT_color_write_enable. - bool IsExtColorWriteEnableSupported() const { - return extensions.color_write_enable; - } - - /// Returns true if the device supports VK_EXT_astc_decode_mode. - bool IsExtASTCDecodeModeSupported() const { - return extensions.astc_decode_mode; - } - /// Returns true if the device supports VK_EXT_image_robustness. bool IsExtImageRobustnessSupported() const { return extensions.image_robustness; diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp index fdf40fde87..8fc5e8e063 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.cpp +++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp @@ -165,7 +165,6 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept { X(vkCmdSetColorWriteMaskEXT); X(vkCmdSetColorBlendEnableEXT); X(vkCmdSetColorBlendEquationEXT); - X(vkCmdSetColorWriteEnableEXT); X(vkCmdResolveImage); X(vkCreateBuffer); X(vkCreateBufferView); diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h index fdd045a7de..630ce5b5c7 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.h +++ b/src/video_core/vulkan_common/vulkan_wrapper.h @@ -265,8 +265,7 @@ struct DeviceDispatch : InstanceDispatch { PFN_vkCmdSetColorWriteMaskEXT vkCmdSetColorWriteMaskEXT{}; PFN_vkCmdSetColorBlendEnableEXT vkCmdSetColorBlendEnableEXT{}; PFN_vkCmdSetColorBlendEquationEXT vkCmdSetColorBlendEquationEXT{}; - PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT{}; - PFN_vkCmdWaitEvents vkCmdWaitEvents{}; + PFN_vkCmdWaitEvents vkCmdWaitEvents{} PFN_vkCreateBuffer vkCreateBuffer{}; PFN_vkCreateBufferView vkCreateBufferView{}; PFN_vkCreateCommandPool vkCreateCommandPool{}; @@ -1522,10 +1521,6 @@ public: dld->vkCmdSetColorBlendEquationEXT(handle, first, equations.size(), equations.data()); } - void SetColorWriteEnableEXT(Span enables) const noexcept { - dld->vkCmdSetColorWriteEnableEXT(handle, enables.size(), enables.data()); - } - void SetLineWidth(float line_width) const noexcept { dld->vkCmdSetLineWidth(handle, line_width); }