mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-08-03 11:23:49 +00:00
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
#ifndef EMULATOR_SRC_GRAPHICS_HOST_GPU_RENDERER_SHADERSUBGROUP_H_
|
|
#define EMULATOR_SRC_GRAPHICS_HOST_GPU_RENDERER_SHADERSUBGROUP_H_
|
|
|
|
#include "graphics/host_gpu/graphicContext.h"
|
|
#include "graphics/shader/recompiler/ir/ShaderIR.h"
|
|
|
|
namespace Libs::Graphics {
|
|
|
|
enum class ShaderSubgroupMode {
|
|
Natural,
|
|
Controlled,
|
|
PerInvocationGraphics,
|
|
FlattenedMasks,
|
|
Unsupported
|
|
};
|
|
|
|
struct ShaderSubgroupConfiguration {
|
|
ShaderSubgroupMode mode = ShaderSubgroupMode::Unsupported;
|
|
uint32_t required_size = 0;
|
|
};
|
|
|
|
struct ShaderSubgroupCapabilities {
|
|
explicit ShaderSubgroupCapabilities(const GraphicContext& graphics);
|
|
|
|
uint32_t subgroup_size = 0;
|
|
uint32_t min_subgroup_size = 0;
|
|
uint32_t max_subgroup_size = 0;
|
|
vk::ShaderStageFlags required_subgroup_size_stages;
|
|
bool subgroup_size_control_enabled = false;
|
|
};
|
|
|
|
ShaderLaneMaskMode SelectGraphicsLaneMaskMode(uint32_t guest_wave_size);
|
|
|
|
ShaderSubgroupConfiguration ConfigureShaderSubgroup(const ShaderSubgroupCapabilities& capabilities,
|
|
vk::ShaderStageFlagBits stage,
|
|
const ShaderRecompiler::IR::Program& program);
|
|
|
|
} // namespace Libs::Graphics
|
|
|
|
#endif // EMULATOR_SRC_GRAPHICS_HOST_GPU_RENDERER_SHADERSUBGROUP_H_
|