// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h" #include "shader_recompiler/backend/spirv/spirv_emit_context.h" namespace Shader::Backend::SPIRV { void EmitPrologue(EmitContext& ctx) { ctx.DefineBufferOffsets(); } void EmitEpilogue(EmitContext& ctx) {} void EmitDiscard(EmitContext& ctx) { ctx.OpDemoteToHelperInvocationEXT(); } void EmitDiscardCond(EmitContext& ctx, Id condition) { const Id kill_label{ctx.OpLabel()}; const Id merge_label{ctx.OpLabel()}; ctx.OpSelectionMerge(merge_label, spv::SelectionControlMask::MaskNone); ctx.OpBranchConditional(condition, kill_label, merge_label); ctx.AddLabel(kill_label); ctx.OpDemoteToHelperInvocationEXT(); ctx.OpBranch(merge_label); ctx.AddLabel(merge_label); } void EmitEmitVertex(EmitContext& ctx, const IR::Value& stream) { throw NotImplementedException("Geometry streams"); } void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) { throw NotImplementedException("Geometry streams"); } } // namespace Shader::Backend::SPIRV