mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-12-16 12:09:07 +00:00
Some checks are pending
Build and Release / reuse (push) Waiting to run
Build and Release / clang-format (push) Waiting to run
Build and Release / get-info (push) Waiting to run
Build and Release / windows-sdl (push) Blocked by required conditions
Build and Release / macos-sdl (push) Blocked by required conditions
Build and Release / linux-sdl (push) Blocked by required conditions
Build and Release / linux-sdl-gcc (push) Blocked by required conditions
Build and Release / pre-release (push) Blocked by required conditions
* Initial implementation * Fix for crash caused by stale stages data; cosmetics applied * Someone mentioned the assert * Async blob writer * Fix for memory leak * Remain stuff * Async changed to `packaged_task`
35 lines
959 B
C++
35 lines
959 B
C++
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include "common/object_pool.h"
|
|
#include "shader_recompiler/ir/basic_block.h"
|
|
#include "shader_recompiler/ir/program.h"
|
|
|
|
namespace Shader {
|
|
|
|
struct Profile;
|
|
struct RuntimeInfo;
|
|
|
|
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(const std::span<const u32>& code, Pools& pools,
|
|
Info& info, RuntimeInfo& runtime_info,
|
|
const Profile& profile);
|
|
|
|
} // namespace Shader
|