mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-05-25 12:55:00 +00:00
shader_recompiler: Implement render target swizzles when no format is available (#739)
* shader_recompiler: Use null image when shader is compiled with unbound sharp * video_core: Refactor and render target swizzles * liverpool_to_vk: Add missing swap format from RDR * video_core: Refactor shader recompiler interface * Makes it much easier to pass runtime information to the recompiler and have it treated as part of the shader key. Also pulls out most runtime state from Info struct * shader_recompiler: Avoid some asserts
This commit is contained in:
parent
3f8a8d3a24
commit
f087f43736
30 changed files with 704 additions and 560 deletions
|
@ -10,10 +10,24 @@
|
|||
namespace Shader {
|
||||
|
||||
struct Profile;
|
||||
struct RuntimeInfo;
|
||||
|
||||
[[nodiscard]] IR::Program TranslateProgram(Common::ObjectPool<IR::Inst>& inst_pool,
|
||||
Common::ObjectPool<IR::Block>& block_pool,
|
||||
std::span<const u32> code, Info& info,
|
||||
const Profile& profile);
|
||||
struct Pools {
|
||||
static constexpr u32 InstPoolSize = 8192;
|
||||
static constexpr u32 BlockPoolSize = 32;
|
||||
|
||||
Common::ObjectPool<IR::Inst> inst_pool;
|
||||
Common::ObjectPool<IR::Block> block_pool;
|
||||
|
||||
explicit Pools() : inst_pool{InstPoolSize}, block_pool{BlockPoolSize} {}
|
||||
|
||||
void ReleaseContents() {
|
||||
inst_pool.ReleaseContents();
|
||||
block_pool.ReleaseContents();
|
||||
}
|
||||
};
|
||||
|
||||
[[nodiscard]] IR::Program TranslateProgram(std::span<const u32> code, Pools& pools, Info& info,
|
||||
const RuntimeInfo& runtime_info, const Profile& profile);
|
||||
|
||||
} // namespace Shader
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue