DriverDetails: Add broken dual source blending bug to MoltenVK on Intel GPUs
This commit is contained in:
parent
aa64f7f14f
commit
a256c11d2f
|
@ -14,6 +14,8 @@
|
|||
#include "VideoBackends/Vulkan/VKVertexFormat.h"
|
||||
#include "VideoBackends/Vulkan/VulkanContext.h"
|
||||
|
||||
#include "VideoCommon/DriverDetails.h"
|
||||
|
||||
namespace Vulkan
|
||||
{
|
||||
VKPipeline::VKPipeline(VkPipeline pipeline, VkPipelineLayout pipeline_layout,
|
||||
|
@ -137,7 +139,11 @@ static VkPipelineColorBlendAttachmentState GetVulkanAttachmentBlendState(const B
|
|||
vk_state.colorBlendOp = state.subtract ? VK_BLEND_OP_REVERSE_SUBTRACT : VK_BLEND_OP_ADD;
|
||||
vk_state.alphaBlendOp = state.subtractAlpha ? VK_BLEND_OP_REVERSE_SUBTRACT : VK_BLEND_OP_ADD;
|
||||
|
||||
if (state.usedualsrc && g_ActiveConfig.backend_info.bSupportsDualSourceBlend)
|
||||
bool use_dual_source =
|
||||
state.usedualsrc && g_ActiveConfig.backend_info.bSupportsDualSourceBlend &&
|
||||
(!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_DUAL_SOURCE_BLENDING) || state.dstalpha);
|
||||
|
||||
if (use_dual_source)
|
||||
{
|
||||
static constexpr std::array<VkBlendFactor, 8> src_factors = {
|
||||
{VK_BLEND_FACTOR_ZERO, VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_DST_COLOR,
|
||||
|
|
|
@ -95,6 +95,8 @@ constexpr BugInfo m_known_bugs[] = {
|
|||
BUG_BROKEN_DUAL_SOURCE_BLENDING, -1.0, -1.0, true},
|
||||
{API_OPENGL, OS_OSX, VENDOR_INTEL, DRIVER_INTEL, Family::UNKNOWN,
|
||||
BUG_BROKEN_DUAL_SOURCE_BLENDING, -1.0, -1.0, true},
|
||||
{API_VULKAN, OS_OSX, VENDOR_INTEL, DRIVER_PORTABILITY, Family::UNKNOWN,
|
||||
BUG_BROKEN_DUAL_SOURCE_BLENDING, -1.0, -1.0, true},
|
||||
{API_OPENGL, OS_ALL, VENDOR_IMGTEC, DRIVER_IMGTEC, Family::UNKNOWN,
|
||||
BUG_BROKEN_BITWISE_OP_NEGATION, -1.0, 108.4693462, true},
|
||||
{API_VULKAN, OS_WINDOWS, VENDOR_ATI, DRIVER_ATI, Family::UNKNOWN, BUG_PRIMITIVE_RESTART, -1.0,
|
||||
|
|
|
@ -229,13 +229,16 @@ enum Bug
|
|||
// index as a MRT location instead, or omit the binding completely.
|
||||
BUG_BROKEN_FRAGMENT_SHADER_INDEX_DECORATION,
|
||||
|
||||
// Bug: Dual-source outputs from fragment shaders are broken on AMD OpenGL drivers
|
||||
// Bug: Dual-source outputs from fragment shaders are broken on some drivers.
|
||||
// Started Version: -1
|
||||
// Ended Version: -1
|
||||
// Fragment shaders that specify dual-source outputs, cause the driver to crash
|
||||
// sometimes this happens in the kernel mode part of the driver resulting in a BSOD.
|
||||
// Disable dual-source blending support for now.
|
||||
// On some AMD drivers, fragment shaders that specify dual-source outputs can cause the driver to
|
||||
// crash. Sometimes this happens in the kernel mode part of the driver, resulting in a BSOD.
|
||||
// These shaders are also particularly problematic on macOS's Intel drivers. On OpenGL, they can
|
||||
// cause depth issues. On Metal, they can cause the driver to not write a primitive to the depth
|
||||
// buffer whenever a fragment is discarded. Disable dual-source blending support on these drivers.
|
||||
BUG_BROKEN_DUAL_SOURCE_BLENDING,
|
||||
|
||||
// BUG: ImgTec GLSL shader compiler fails when negating the input to a bitwise operation
|
||||
// Started version: 1.5
|
||||
// Ended version: 1.8@4693462
|
||||
|
|
Loading…
Reference in New Issue