mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-06-26 12:26:18 +00:00
* ir: Add heuristic based LDS barrier pass * Attempts to insert barriers after zero-depth divergant conditional blocks in shaders that use shared memory * lds_barriers: Limit to nvidia * Intel has historically had problems with cs barriers, will debug other time
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include "shader_recompiler/ir/basic_block.h"
|
|
#include "shader_recompiler/ir/program.h"
|
|
|
|
namespace Shader {
|
|
struct Profile;
|
|
}
|
|
|
|
namespace Shader::Optimization {
|
|
|
|
void SsaRewritePass(IR::BlockList& program);
|
|
void IdentityRemovalPass(IR::BlockList& program);
|
|
void DeadCodeEliminationPass(IR::Program& program);
|
|
void ConstantPropagationPass(IR::BlockList& program);
|
|
void FlattenExtendedUserdataPass(IR::Program& program);
|
|
void ResourceTrackingPass(IR::Program& program);
|
|
void CollectShaderInfoPass(IR::Program& program);
|
|
void LowerSharedMemToRegisters(IR::Program& program);
|
|
void RingAccessElimination(const IR::Program& program, const RuntimeInfo& runtime_info,
|
|
Stage stage);
|
|
void TessellationPreprocess(IR::Program& program, RuntimeInfo& runtime_info);
|
|
void HullShaderTransform(IR::Program& program, RuntimeInfo& runtime_info);
|
|
void DomainShaderTransform(IR::Program& program, RuntimeInfo& runtime_info);
|
|
void SharedMemoryBarrierPass(IR::Program& program, const Profile& profile);
|
|
|
|
} // namespace Shader::Optimization
|