#ifndef EMULATOR_INCLUDE_EMULATOR_GRAPHICS_SHADER_RECOMPILER_SPIRVEMITTER_H_
#define EMULATOR_INCLUDE_EMULATOR_GRAPHICS_SHADER_RECOMPILER_SPIRVEMITTER_H_

#include "common/common.h"
#include "common/stringUtils.h"
#include "graphics/shader/recompiler/ResourceMaterialization.h"

#include <vector>

namespace Libs::Graphics::ShaderRecompiler::Spirv {

bool ProgramRequiresExactSubgroupSize(const IR::Program& program);

bool EmitProgram(const IR::Program& program, const IR::ResourceSnapshot& resources,
	             const ShaderVertexInputInfo*  vertex_input_info,
	             const ShaderPixelInputInfo*   pixel_input_info,
	             const ShaderComputeInputInfo* compute_input_info, std::vector<uint32_t>& spirv,
                 std::string* error);

} // namespace Libs::Graphics::ShaderRecompiler::Spirv

#endif /* EMULATOR_INCLUDE_EMULATOR_GRAPHICS_SHADER_RECOMPILER_SPIRVEMITTER_H_ */
