mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 17:19:44 -06:00
VideoCommon: Make dst_alpha state implicit.
This commit is contained in:
@ -920,8 +920,12 @@ void Renderer::RestoreAPIState()
|
||||
static bool s_previous_use_dst_alpha = false;
|
||||
static D3DVertexFormat* s_previous_vertex_format = nullptr;
|
||||
|
||||
void Renderer::ApplyState(bool use_dst_alpha)
|
||||
void Renderer::ApplyState()
|
||||
{
|
||||
// TODO: Refactor this logic here.
|
||||
bool use_dst_alpha = bpmem.dstalpha.enable && bpmem.blendmode.alphaupdate &&
|
||||
bpmem.zcontrol.pixel_format == PEControl::RGBA6_Z24;
|
||||
|
||||
if (use_dst_alpha != s_previous_use_dst_alpha)
|
||||
{
|
||||
s_previous_use_dst_alpha = use_dst_alpha;
|
||||
|
@ -27,7 +27,7 @@ public:
|
||||
void SetViewport() override;
|
||||
|
||||
// TODO: Fix confusing names (see ResetAPIState and RestoreAPIState)
|
||||
void ApplyState(bool use_dst_alpha) override;
|
||||
void ApplyState() override;
|
||||
void RestoreState() override;
|
||||
|
||||
void ApplyCullDisable();
|
||||
|
@ -132,12 +132,12 @@ void ShaderCache::Shutdown()
|
||||
s_vs_disk_cache.Close();
|
||||
}
|
||||
|
||||
void ShaderCache::LoadAndSetActiveShaders(DSTALPHA_MODE ps_dst_alpha_mode, u32 gs_primitive_type)
|
||||
void ShaderCache::LoadAndSetActiveShaders(u32 gs_primitive_type)
|
||||
{
|
||||
SetCurrentPrimitiveTopology(gs_primitive_type);
|
||||
|
||||
GeometryShaderUid gs_uid = GetGeometryShaderUid(gs_primitive_type);
|
||||
PixelShaderUid ps_uid = GetPixelShaderUid(ps_dst_alpha_mode);
|
||||
PixelShaderUid ps_uid = GetPixelShaderUid();
|
||||
VertexShaderUid vs_uid = GetVertexShaderUid();
|
||||
|
||||
bool gs_changed = gs_uid != s_last_geometry_shader_uid;
|
||||
@ -156,7 +156,7 @@ void ShaderCache::LoadAndSetActiveShaders(DSTALPHA_MODE ps_dst_alpha_mode, u32 g
|
||||
|
||||
if (ps_changed)
|
||||
{
|
||||
HandlePSUIDChange(ps_uid, ps_dst_alpha_mode);
|
||||
HandlePSUIDChange(ps_uid);
|
||||
}
|
||||
|
||||
if (vs_changed)
|
||||
@ -219,7 +219,7 @@ void ShaderCache::HandleGSUIDChange(GeometryShaderUid gs_uid, u32 gs_primitive_t
|
||||
}
|
||||
}
|
||||
|
||||
void ShaderCache::HandlePSUIDChange(PixelShaderUid ps_uid, DSTALPHA_MODE ps_dst_alpha_mode)
|
||||
void ShaderCache::HandlePSUIDChange(PixelShaderUid ps_uid)
|
||||
{
|
||||
s_last_pixel_shader_uid = ps_uid;
|
||||
|
||||
|
@ -19,7 +19,7 @@ public:
|
||||
static void Clear();
|
||||
static void Shutdown();
|
||||
|
||||
static void LoadAndSetActiveShaders(DSTALPHA_MODE ps_dst_alpha_mode, u32 gs_primitive_type);
|
||||
static void LoadAndSetActiveShaders(u32 gs_primitive_type);
|
||||
|
||||
template <class UidType, class ShaderCacheType>
|
||||
static D3D12_SHADER_BYTECODE InsertByteCode(const UidType& uid, ShaderCacheType* shader_cache,
|
||||
@ -43,7 +43,7 @@ private:
|
||||
static void SetCurrentPrimitiveTopology(u32 gs_primitive_type);
|
||||
|
||||
static void HandleGSUIDChange(GeometryShaderUid gs_uid, u32 gs_primitive_type);
|
||||
static void HandlePSUIDChange(PixelShaderUid ps_uid, DSTALPHA_MODE ps_dst_alpha_mode);
|
||||
static void HandlePSUIDChange(PixelShaderUid ps_uid);
|
||||
static void HandleVSUIDChange(VertexShaderUid vs_uid);
|
||||
};
|
||||
}
|
||||
|
@ -135,10 +135,9 @@ void VertexManager::Draw(u32 stride)
|
||||
INCSTAT(stats.thisFrame.numDrawCalls);
|
||||
}
|
||||
|
||||
void VertexManager::vFlush(bool use_dst_alpha)
|
||||
void VertexManager::vFlush()
|
||||
{
|
||||
ShaderCache::LoadAndSetActiveShaders(use_dst_alpha ? DSTALPHA_DUAL_SOURCE_BLEND : DSTALPHA_NONE,
|
||||
m_current_primitive_type);
|
||||
ShaderCache::LoadAndSetActiveShaders(m_current_primitive_type);
|
||||
|
||||
if (g_ActiveConfig.backend_info.bSupportsBBox && BoundingBox::active)
|
||||
BBox::Invalidate();
|
||||
@ -147,7 +146,7 @@ void VertexManager::vFlush(bool use_dst_alpha)
|
||||
|
||||
PrepareDrawBuffers(stride);
|
||||
|
||||
g_renderer->ApplyState(use_dst_alpha);
|
||||
g_renderer->ApplyState();
|
||||
|
||||
Draw(stride);
|
||||
|
||||
|
@ -29,7 +29,7 @@ protected:
|
||||
private:
|
||||
void PrepareDrawBuffers(u32 stride);
|
||||
void Draw(u32 stride);
|
||||
void vFlush(bool use_dst_alpha) override;
|
||||
void vFlush() override;
|
||||
|
||||
u32 m_vertex_draw_offset;
|
||||
u32 m_index_draw_offset;
|
||||
|
Reference in New Issue
Block a user