mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
Merge pull request #9945 from OatmealDome/intel-broken-discard
DriverDetails: Add broken dual source blending bug to MoltenVK on Intel GPUs
This commit is contained in:
commit
a47b91e946
@ -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,
|
||||
|
@ -869,8 +869,8 @@ void VulkanContext::InitDriverDetails()
|
||||
{
|
||||
// Apart from the driver version, Intel does not appear to provide a way to
|
||||
// differentiate between anv and the binary driver (Skylake+). Assume to be
|
||||
// using anv if we not running on Windows.
|
||||
#ifdef WIN32
|
||||
// using anv if we're not running on Windows or macOS.
|
||||
#if defined(WIN32) || defined(__APPLE__)
|
||||
vendor = DriverDetails::VENDOR_INTEL;
|
||||
driver = DriverDetails::DRIVER_INTEL;
|
||||
#else
|
||||
|
@ -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
Block a user