[shader_recompiler] macro-ify flow_test and attribute (#2900)
Of course - macros my beloved :) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2900 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
@@ -81,14 +81,12 @@ add_library(shader_recompiler STATIC
|
||||
environment.h
|
||||
exception.h
|
||||
frontend/ir/abstract_syntax_list.h
|
||||
frontend/ir/attribute.cpp
|
||||
frontend/ir/attribute.h
|
||||
frontend/ir/basic_block.cpp
|
||||
frontend/ir/basic_block.h
|
||||
frontend/ir/breadth_first_search.h
|
||||
frontend/ir/condition.cpp
|
||||
frontend/ir/condition.h
|
||||
frontend/ir/flow_test.cpp
|
||||
frontend/ir/flow_test.h
|
||||
frontend/ir/ir_emitter.cpp
|
||||
frontend/ir/ir_emitter.h
|
||||
|
||||
@@ -1,459 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "shader_recompiler/exception.h"
|
||||
#include "shader_recompiler/frontend/ir/attribute.h"
|
||||
|
||||
namespace Shader::IR {
|
||||
|
||||
bool IsGeneric(Attribute attribute) noexcept {
|
||||
return attribute >= Attribute::Generic0X && attribute <= Attribute::Generic31X;
|
||||
}
|
||||
|
||||
u32 GenericAttributeIndex(Attribute attribute) {
|
||||
if (!IsGeneric(attribute)) {
|
||||
throw InvalidArgument("Attribute is not generic {}", attribute);
|
||||
}
|
||||
return (static_cast<u32>(attribute) - static_cast<u32>(Attribute::Generic0X)) / 4u;
|
||||
}
|
||||
|
||||
u32 GenericAttributeElement(Attribute attribute) {
|
||||
if (!IsGeneric(attribute)) {
|
||||
throw InvalidArgument("Attribute is not generic {}", attribute);
|
||||
}
|
||||
return static_cast<u32>(attribute) % 4;
|
||||
}
|
||||
|
||||
std::string NameOf(Attribute attribute) {
|
||||
switch (attribute) {
|
||||
case Attribute::PrimitiveId:
|
||||
return "PrimitiveId";
|
||||
case Attribute::Layer:
|
||||
return "Layer";
|
||||
case Attribute::ViewportIndex:
|
||||
return "ViewportIndex";
|
||||
case Attribute::PointSize:
|
||||
return "PointSize";
|
||||
case Attribute::PositionX:
|
||||
return "Position.X";
|
||||
case Attribute::PositionY:
|
||||
return "Position.Y";
|
||||
case Attribute::PositionZ:
|
||||
return "Position.Z";
|
||||
case Attribute::PositionW:
|
||||
return "Position.W";
|
||||
case Attribute::Generic0X:
|
||||
return "Generic[0].X";
|
||||
case Attribute::Generic0Y:
|
||||
return "Generic[0].Y";
|
||||
case Attribute::Generic0Z:
|
||||
return "Generic[0].Z";
|
||||
case Attribute::Generic0W:
|
||||
return "Generic[0].W";
|
||||
case Attribute::Generic1X:
|
||||
return "Generic[1].X";
|
||||
case Attribute::Generic1Y:
|
||||
return "Generic[1].Y";
|
||||
case Attribute::Generic1Z:
|
||||
return "Generic[1].Z";
|
||||
case Attribute::Generic1W:
|
||||
return "Generic[1].W";
|
||||
case Attribute::Generic2X:
|
||||
return "Generic[2].X";
|
||||
case Attribute::Generic2Y:
|
||||
return "Generic[2].Y";
|
||||
case Attribute::Generic2Z:
|
||||
return "Generic[2].Z";
|
||||
case Attribute::Generic2W:
|
||||
return "Generic[2].W";
|
||||
case Attribute::Generic3X:
|
||||
return "Generic[3].X";
|
||||
case Attribute::Generic3Y:
|
||||
return "Generic[3].Y";
|
||||
case Attribute::Generic3Z:
|
||||
return "Generic[3].Z";
|
||||
case Attribute::Generic3W:
|
||||
return "Generic[3].W";
|
||||
case Attribute::Generic4X:
|
||||
return "Generic[4].X";
|
||||
case Attribute::Generic4Y:
|
||||
return "Generic[4].Y";
|
||||
case Attribute::Generic4Z:
|
||||
return "Generic[4].Z";
|
||||
case Attribute::Generic4W:
|
||||
return "Generic[4].W";
|
||||
case Attribute::Generic5X:
|
||||
return "Generic[5].X";
|
||||
case Attribute::Generic5Y:
|
||||
return "Generic[5].Y";
|
||||
case Attribute::Generic5Z:
|
||||
return "Generic[5].Z";
|
||||
case Attribute::Generic5W:
|
||||
return "Generic[5].W";
|
||||
case Attribute::Generic6X:
|
||||
return "Generic[6].X";
|
||||
case Attribute::Generic6Y:
|
||||
return "Generic[6].Y";
|
||||
case Attribute::Generic6Z:
|
||||
return "Generic[6].Z";
|
||||
case Attribute::Generic6W:
|
||||
return "Generic[6].W";
|
||||
case Attribute::Generic7X:
|
||||
return "Generic[7].X";
|
||||
case Attribute::Generic7Y:
|
||||
return "Generic[7].Y";
|
||||
case Attribute::Generic7Z:
|
||||
return "Generic[7].Z";
|
||||
case Attribute::Generic7W:
|
||||
return "Generic[7].W";
|
||||
case Attribute::Generic8X:
|
||||
return "Generic[8].X";
|
||||
case Attribute::Generic8Y:
|
||||
return "Generic[8].Y";
|
||||
case Attribute::Generic8Z:
|
||||
return "Generic[8].Z";
|
||||
case Attribute::Generic8W:
|
||||
return "Generic[8].W";
|
||||
case Attribute::Generic9X:
|
||||
return "Generic[9].X";
|
||||
case Attribute::Generic9Y:
|
||||
return "Generic[9].Y";
|
||||
case Attribute::Generic9Z:
|
||||
return "Generic[9].Z";
|
||||
case Attribute::Generic9W:
|
||||
return "Generic[9].W";
|
||||
case Attribute::Generic10X:
|
||||
return "Generic[10].X";
|
||||
case Attribute::Generic10Y:
|
||||
return "Generic[10].Y";
|
||||
case Attribute::Generic10Z:
|
||||
return "Generic[10].Z";
|
||||
case Attribute::Generic10W:
|
||||
return "Generic[10].W";
|
||||
case Attribute::Generic11X:
|
||||
return "Generic[11].X";
|
||||
case Attribute::Generic11Y:
|
||||
return "Generic[11].Y";
|
||||
case Attribute::Generic11Z:
|
||||
return "Generic[11].Z";
|
||||
case Attribute::Generic11W:
|
||||
return "Generic[11].W";
|
||||
case Attribute::Generic12X:
|
||||
return "Generic[12].X";
|
||||
case Attribute::Generic12Y:
|
||||
return "Generic[12].Y";
|
||||
case Attribute::Generic12Z:
|
||||
return "Generic[12].Z";
|
||||
case Attribute::Generic12W:
|
||||
return "Generic[12].W";
|
||||
case Attribute::Generic13X:
|
||||
return "Generic[13].X";
|
||||
case Attribute::Generic13Y:
|
||||
return "Generic[13].Y";
|
||||
case Attribute::Generic13Z:
|
||||
return "Generic[13].Z";
|
||||
case Attribute::Generic13W:
|
||||
return "Generic[13].W";
|
||||
case Attribute::Generic14X:
|
||||
return "Generic[14].X";
|
||||
case Attribute::Generic14Y:
|
||||
return "Generic[14].Y";
|
||||
case Attribute::Generic14Z:
|
||||
return "Generic[14].Z";
|
||||
case Attribute::Generic14W:
|
||||
return "Generic[14].W";
|
||||
case Attribute::Generic15X:
|
||||
return "Generic[15].X";
|
||||
case Attribute::Generic15Y:
|
||||
return "Generic[15].Y";
|
||||
case Attribute::Generic15Z:
|
||||
return "Generic[15].Z";
|
||||
case Attribute::Generic15W:
|
||||
return "Generic[15].W";
|
||||
case Attribute::Generic16X:
|
||||
return "Generic[16].X";
|
||||
case Attribute::Generic16Y:
|
||||
return "Generic[16].Y";
|
||||
case Attribute::Generic16Z:
|
||||
return "Generic[16].Z";
|
||||
case Attribute::Generic16W:
|
||||
return "Generic[16].W";
|
||||
case Attribute::Generic17X:
|
||||
return "Generic[17].X";
|
||||
case Attribute::Generic17Y:
|
||||
return "Generic[17].Y";
|
||||
case Attribute::Generic17Z:
|
||||
return "Generic[17].Z";
|
||||
case Attribute::Generic17W:
|
||||
return "Generic[17].W";
|
||||
case Attribute::Generic18X:
|
||||
return "Generic[18].X";
|
||||
case Attribute::Generic18Y:
|
||||
return "Generic[18].Y";
|
||||
case Attribute::Generic18Z:
|
||||
return "Generic[18].Z";
|
||||
case Attribute::Generic18W:
|
||||
return "Generic[18].W";
|
||||
case Attribute::Generic19X:
|
||||
return "Generic[19].X";
|
||||
case Attribute::Generic19Y:
|
||||
return "Generic[19].Y";
|
||||
case Attribute::Generic19Z:
|
||||
return "Generic[19].Z";
|
||||
case Attribute::Generic19W:
|
||||
return "Generic[19].W";
|
||||
case Attribute::Generic20X:
|
||||
return "Generic[20].X";
|
||||
case Attribute::Generic20Y:
|
||||
return "Generic[20].Y";
|
||||
case Attribute::Generic20Z:
|
||||
return "Generic[20].Z";
|
||||
case Attribute::Generic20W:
|
||||
return "Generic[20].W";
|
||||
case Attribute::Generic21X:
|
||||
return "Generic[21].X";
|
||||
case Attribute::Generic21Y:
|
||||
return "Generic[21].Y";
|
||||
case Attribute::Generic21Z:
|
||||
return "Generic[21].Z";
|
||||
case Attribute::Generic21W:
|
||||
return "Generic[21].W";
|
||||
case Attribute::Generic22X:
|
||||
return "Generic[22].X";
|
||||
case Attribute::Generic22Y:
|
||||
return "Generic[22].Y";
|
||||
case Attribute::Generic22Z:
|
||||
return "Generic[22].Z";
|
||||
case Attribute::Generic22W:
|
||||
return "Generic[22].W";
|
||||
case Attribute::Generic23X:
|
||||
return "Generic[23].X";
|
||||
case Attribute::Generic23Y:
|
||||
return "Generic[23].Y";
|
||||
case Attribute::Generic23Z:
|
||||
return "Generic[23].Z";
|
||||
case Attribute::Generic23W:
|
||||
return "Generic[23].W";
|
||||
case Attribute::Generic24X:
|
||||
return "Generic[24].X";
|
||||
case Attribute::Generic24Y:
|
||||
return "Generic[24].Y";
|
||||
case Attribute::Generic24Z:
|
||||
return "Generic[24].Z";
|
||||
case Attribute::Generic24W:
|
||||
return "Generic[24].W";
|
||||
case Attribute::Generic25X:
|
||||
return "Generic[25].X";
|
||||
case Attribute::Generic25Y:
|
||||
return "Generic[25].Y";
|
||||
case Attribute::Generic25Z:
|
||||
return "Generic[25].Z";
|
||||
case Attribute::Generic25W:
|
||||
return "Generic[25].W";
|
||||
case Attribute::Generic26X:
|
||||
return "Generic[26].X";
|
||||
case Attribute::Generic26Y:
|
||||
return "Generic[26].Y";
|
||||
case Attribute::Generic26Z:
|
||||
return "Generic[26].Z";
|
||||
case Attribute::Generic26W:
|
||||
return "Generic[26].W";
|
||||
case Attribute::Generic27X:
|
||||
return "Generic[27].X";
|
||||
case Attribute::Generic27Y:
|
||||
return "Generic[27].Y";
|
||||
case Attribute::Generic27Z:
|
||||
return "Generic[27].Z";
|
||||
case Attribute::Generic27W:
|
||||
return "Generic[27].W";
|
||||
case Attribute::Generic28X:
|
||||
return "Generic[28].X";
|
||||
case Attribute::Generic28Y:
|
||||
return "Generic[28].Y";
|
||||
case Attribute::Generic28Z:
|
||||
return "Generic[28].Z";
|
||||
case Attribute::Generic28W:
|
||||
return "Generic[28].W";
|
||||
case Attribute::Generic29X:
|
||||
return "Generic[29].X";
|
||||
case Attribute::Generic29Y:
|
||||
return "Generic[29].Y";
|
||||
case Attribute::Generic29Z:
|
||||
return "Generic[29].Z";
|
||||
case Attribute::Generic29W:
|
||||
return "Generic[29].W";
|
||||
case Attribute::Generic30X:
|
||||
return "Generic[30].X";
|
||||
case Attribute::Generic30Y:
|
||||
return "Generic[30].Y";
|
||||
case Attribute::Generic30Z:
|
||||
return "Generic[30].Z";
|
||||
case Attribute::Generic30W:
|
||||
return "Generic[30].W";
|
||||
case Attribute::Generic31X:
|
||||
return "Generic[31].X";
|
||||
case Attribute::Generic31Y:
|
||||
return "Generic[31].Y";
|
||||
case Attribute::Generic31Z:
|
||||
return "Generic[31].Z";
|
||||
case Attribute::Generic31W:
|
||||
return "Generic[31].W";
|
||||
case Attribute::ColorFrontDiffuseR:
|
||||
return "ColorFrontDiffuse.R";
|
||||
case Attribute::ColorFrontDiffuseG:
|
||||
return "ColorFrontDiffuse.G";
|
||||
case Attribute::ColorFrontDiffuseB:
|
||||
return "ColorFrontDiffuse.B";
|
||||
case Attribute::ColorFrontDiffuseA:
|
||||
return "ColorFrontDiffuse.A";
|
||||
case Attribute::ColorFrontSpecularR:
|
||||
return "ColorFrontSpecular.R";
|
||||
case Attribute::ColorFrontSpecularG:
|
||||
return "ColorFrontSpecular.G";
|
||||
case Attribute::ColorFrontSpecularB:
|
||||
return "ColorFrontSpecular.B";
|
||||
case Attribute::ColorFrontSpecularA:
|
||||
return "ColorFrontSpecular.A";
|
||||
case Attribute::ColorBackDiffuseR:
|
||||
return "ColorBackDiffuse.R";
|
||||
case Attribute::ColorBackDiffuseG:
|
||||
return "ColorBackDiffuse.G";
|
||||
case Attribute::ColorBackDiffuseB:
|
||||
return "ColorBackDiffuse.B";
|
||||
case Attribute::ColorBackDiffuseA:
|
||||
return "ColorBackDiffuse.A";
|
||||
case Attribute::ColorBackSpecularR:
|
||||
return "ColorBackSpecular.R";
|
||||
case Attribute::ColorBackSpecularG:
|
||||
return "ColorBackSpecular.G";
|
||||
case Attribute::ColorBackSpecularB:
|
||||
return "ColorBackSpecular.B";
|
||||
case Attribute::ColorBackSpecularA:
|
||||
return "ColorBackSpecular.A";
|
||||
case Attribute::ClipDistance0:
|
||||
return "ClipDistance[0]";
|
||||
case Attribute::ClipDistance1:
|
||||
return "ClipDistance[1]";
|
||||
case Attribute::ClipDistance2:
|
||||
return "ClipDistance[2]";
|
||||
case Attribute::ClipDistance3:
|
||||
return "ClipDistance[3]";
|
||||
case Attribute::ClipDistance4:
|
||||
return "ClipDistance[4]";
|
||||
case Attribute::ClipDistance5:
|
||||
return "ClipDistance[5]";
|
||||
case Attribute::ClipDistance6:
|
||||
return "ClipDistance[6]";
|
||||
case Attribute::ClipDistance7:
|
||||
return "ClipDistance[7]";
|
||||
case Attribute::PointSpriteS:
|
||||
return "PointSprite.S";
|
||||
case Attribute::PointSpriteT:
|
||||
return "PointSprite.T";
|
||||
case Attribute::FogCoordinate:
|
||||
return "FogCoordinate";
|
||||
case Attribute::TessellationEvaluationPointU:
|
||||
return "TessellationEvaluationPoint.U";
|
||||
case Attribute::TessellationEvaluationPointV:
|
||||
return "TessellationEvaluationPoint.V";
|
||||
case Attribute::InstanceId:
|
||||
return "InstanceId";
|
||||
case Attribute::VertexId:
|
||||
return "VertexId";
|
||||
case Attribute::FixedFncTexture0S:
|
||||
return "FixedFncTexture[0].S";
|
||||
case Attribute::FixedFncTexture0T:
|
||||
return "FixedFncTexture[0].T";
|
||||
case Attribute::FixedFncTexture0R:
|
||||
return "FixedFncTexture[0].R";
|
||||
case Attribute::FixedFncTexture0Q:
|
||||
return "FixedFncTexture[0].Q";
|
||||
case Attribute::FixedFncTexture1S:
|
||||
return "FixedFncTexture[1].S";
|
||||
case Attribute::FixedFncTexture1T:
|
||||
return "FixedFncTexture[1].T";
|
||||
case Attribute::FixedFncTexture1R:
|
||||
return "FixedFncTexture[1].R";
|
||||
case Attribute::FixedFncTexture1Q:
|
||||
return "FixedFncTexture[1].Q";
|
||||
case Attribute::FixedFncTexture2S:
|
||||
return "FixedFncTexture[2].S";
|
||||
case Attribute::FixedFncTexture2T:
|
||||
return "FixedFncTexture[2].T";
|
||||
case Attribute::FixedFncTexture2R:
|
||||
return "FixedFncTexture[2].R";
|
||||
case Attribute::FixedFncTexture2Q:
|
||||
return "FixedFncTexture[2].Q";
|
||||
case Attribute::FixedFncTexture3S:
|
||||
return "FixedFncTexture[3].S";
|
||||
case Attribute::FixedFncTexture3T:
|
||||
return "FixedFncTexture[3].T";
|
||||
case Attribute::FixedFncTexture3R:
|
||||
return "FixedFncTexture[3].R";
|
||||
case Attribute::FixedFncTexture3Q:
|
||||
return "FixedFncTexture[3].Q";
|
||||
case Attribute::FixedFncTexture4S:
|
||||
return "FixedFncTexture[4].S";
|
||||
case Attribute::FixedFncTexture4T:
|
||||
return "FixedFncTexture[4].T";
|
||||
case Attribute::FixedFncTexture4R:
|
||||
return "FixedFncTexture[4].R";
|
||||
case Attribute::FixedFncTexture4Q:
|
||||
return "FixedFncTexture[4].Q";
|
||||
case Attribute::FixedFncTexture5S:
|
||||
return "FixedFncTexture[5].S";
|
||||
case Attribute::FixedFncTexture5T:
|
||||
return "FixedFncTexture[5].T";
|
||||
case Attribute::FixedFncTexture5R:
|
||||
return "FixedFncTexture[5].R";
|
||||
case Attribute::FixedFncTexture5Q:
|
||||
return "FixedFncTexture[5].Q";
|
||||
case Attribute::FixedFncTexture6S:
|
||||
return "FixedFncTexture[6].S";
|
||||
case Attribute::FixedFncTexture6T:
|
||||
return "FixedFncTexture[6].T";
|
||||
case Attribute::FixedFncTexture6R:
|
||||
return "FixedFncTexture[6].R";
|
||||
case Attribute::FixedFncTexture6Q:
|
||||
return "FixedFncTexture[6].Q";
|
||||
case Attribute::FixedFncTexture7S:
|
||||
return "FixedFncTexture[7].S";
|
||||
case Attribute::FixedFncTexture7T:
|
||||
return "FixedFncTexture[7].T";
|
||||
case Attribute::FixedFncTexture7R:
|
||||
return "FixedFncTexture[7].R";
|
||||
case Attribute::FixedFncTexture7Q:
|
||||
return "FixedFncTexture[7].Q";
|
||||
case Attribute::FixedFncTexture8S:
|
||||
return "FixedFncTexture[8].S";
|
||||
case Attribute::FixedFncTexture8T:
|
||||
return "FixedFncTexture[8].T";
|
||||
case Attribute::FixedFncTexture8R:
|
||||
return "FixedFncTexture[8].R";
|
||||
case Attribute::FixedFncTexture8Q:
|
||||
return "FixedFncTexture[8].Q";
|
||||
case Attribute::FixedFncTexture9S:
|
||||
return "FixedFncTexture[9].S";
|
||||
case Attribute::FixedFncTexture9T:
|
||||
return "FixedFncTexture[9].T";
|
||||
case Attribute::FixedFncTexture9R:
|
||||
return "FixedFncTexture[9].R";
|
||||
case Attribute::FixedFncTexture9Q:
|
||||
return "FixedFncTexture[9].Q";
|
||||
case Attribute::ViewportMask:
|
||||
return "ViewportMask";
|
||||
case Attribute::FrontFace:
|
||||
return "FrontFace";
|
||||
case Attribute::BaseInstance:
|
||||
return "BaseInstance";
|
||||
case Attribute::BaseVertex:
|
||||
return "BaseVertex";
|
||||
case Attribute::DrawID:
|
||||
return "DrawID";
|
||||
}
|
||||
return fmt::format("<reserved attribute {}>", static_cast<int>(attribute));
|
||||
}
|
||||
|
||||
} // namespace Shader::IR
|
||||
@@ -1,3 +1,6 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -6,240 +9,261 @@
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "common/common_types.h"
|
||||
#include "shader_recompiler/exception.h"
|
||||
|
||||
namespace Shader::IR {
|
||||
|
||||
enum class Attribute : u64 {
|
||||
PrimitiveId = 24,
|
||||
Layer = 25,
|
||||
ViewportIndex = 26,
|
||||
PointSize = 27,
|
||||
PositionX = 28,
|
||||
PositionY = 29,
|
||||
PositionZ = 30,
|
||||
PositionW = 31,
|
||||
Generic0X = 32,
|
||||
Generic0Y = 33,
|
||||
Generic0Z = 34,
|
||||
Generic0W = 35,
|
||||
Generic1X = 36,
|
||||
Generic1Y = 37,
|
||||
Generic1Z = 38,
|
||||
Generic1W = 39,
|
||||
Generic2X = 40,
|
||||
Generic2Y = 41,
|
||||
Generic2Z = 42,
|
||||
Generic2W = 43,
|
||||
Generic3X = 44,
|
||||
Generic3Y = 45,
|
||||
Generic3Z = 46,
|
||||
Generic3W = 47,
|
||||
Generic4X = 48,
|
||||
Generic4Y = 49,
|
||||
Generic4Z = 50,
|
||||
Generic4W = 51,
|
||||
Generic5X = 52,
|
||||
Generic5Y = 53,
|
||||
Generic5Z = 54,
|
||||
Generic5W = 55,
|
||||
Generic6X = 56,
|
||||
Generic6Y = 57,
|
||||
Generic6Z = 58,
|
||||
Generic6W = 59,
|
||||
Generic7X = 60,
|
||||
Generic7Y = 61,
|
||||
Generic7Z = 62,
|
||||
Generic7W = 63,
|
||||
Generic8X = 64,
|
||||
Generic8Y = 65,
|
||||
Generic8Z = 66,
|
||||
Generic8W = 67,
|
||||
Generic9X = 68,
|
||||
Generic9Y = 69,
|
||||
Generic9Z = 70,
|
||||
Generic9W = 71,
|
||||
Generic10X = 72,
|
||||
Generic10Y = 73,
|
||||
Generic10Z = 74,
|
||||
Generic10W = 75,
|
||||
Generic11X = 76,
|
||||
Generic11Y = 77,
|
||||
Generic11Z = 78,
|
||||
Generic11W = 79,
|
||||
Generic12X = 80,
|
||||
Generic12Y = 81,
|
||||
Generic12Z = 82,
|
||||
Generic12W = 83,
|
||||
Generic13X = 84,
|
||||
Generic13Y = 85,
|
||||
Generic13Z = 86,
|
||||
Generic13W = 87,
|
||||
Generic14X = 88,
|
||||
Generic14Y = 89,
|
||||
Generic14Z = 90,
|
||||
Generic14W = 91,
|
||||
Generic15X = 92,
|
||||
Generic15Y = 93,
|
||||
Generic15Z = 94,
|
||||
Generic15W = 95,
|
||||
Generic16X = 96,
|
||||
Generic16Y = 97,
|
||||
Generic16Z = 98,
|
||||
Generic16W = 99,
|
||||
Generic17X = 100,
|
||||
Generic17Y = 101,
|
||||
Generic17Z = 102,
|
||||
Generic17W = 103,
|
||||
Generic18X = 104,
|
||||
Generic18Y = 105,
|
||||
Generic18Z = 106,
|
||||
Generic18W = 107,
|
||||
Generic19X = 108,
|
||||
Generic19Y = 109,
|
||||
Generic19Z = 110,
|
||||
Generic19W = 111,
|
||||
Generic20X = 112,
|
||||
Generic20Y = 113,
|
||||
Generic20Z = 114,
|
||||
Generic20W = 115,
|
||||
Generic21X = 116,
|
||||
Generic21Y = 117,
|
||||
Generic21Z = 118,
|
||||
Generic21W = 119,
|
||||
Generic22X = 120,
|
||||
Generic22Y = 121,
|
||||
Generic22Z = 122,
|
||||
Generic22W = 123,
|
||||
Generic23X = 124,
|
||||
Generic23Y = 125,
|
||||
Generic23Z = 126,
|
||||
Generic23W = 127,
|
||||
Generic24X = 128,
|
||||
Generic24Y = 129,
|
||||
Generic24Z = 130,
|
||||
Generic24W = 131,
|
||||
Generic25X = 132,
|
||||
Generic25Y = 133,
|
||||
Generic25Z = 134,
|
||||
Generic25W = 135,
|
||||
Generic26X = 136,
|
||||
Generic26Y = 137,
|
||||
Generic26Z = 138,
|
||||
Generic26W = 139,
|
||||
Generic27X = 140,
|
||||
Generic27Y = 141,
|
||||
Generic27Z = 142,
|
||||
Generic27W = 143,
|
||||
Generic28X = 144,
|
||||
Generic28Y = 145,
|
||||
Generic28Z = 146,
|
||||
Generic28W = 147,
|
||||
Generic29X = 148,
|
||||
Generic29Y = 149,
|
||||
Generic29Z = 150,
|
||||
Generic29W = 151,
|
||||
Generic30X = 152,
|
||||
Generic30Y = 153,
|
||||
Generic30Z = 154,
|
||||
Generic30W = 155,
|
||||
Generic31X = 156,
|
||||
Generic31Y = 157,
|
||||
Generic31Z = 158,
|
||||
Generic31W = 159,
|
||||
ColorFrontDiffuseR = 160,
|
||||
ColorFrontDiffuseG = 161,
|
||||
ColorFrontDiffuseB = 162,
|
||||
ColorFrontDiffuseA = 163,
|
||||
ColorFrontSpecularR = 164,
|
||||
ColorFrontSpecularG = 165,
|
||||
ColorFrontSpecularB = 166,
|
||||
ColorFrontSpecularA = 167,
|
||||
ColorBackDiffuseR = 168,
|
||||
ColorBackDiffuseG = 169,
|
||||
ColorBackDiffuseB = 170,
|
||||
ColorBackDiffuseA = 171,
|
||||
ColorBackSpecularR = 172,
|
||||
ColorBackSpecularG = 173,
|
||||
ColorBackSpecularB = 174,
|
||||
ColorBackSpecularA = 175,
|
||||
ClipDistance0 = 176,
|
||||
ClipDistance1 = 177,
|
||||
ClipDistance2 = 178,
|
||||
ClipDistance3 = 179,
|
||||
ClipDistance4 = 180,
|
||||
ClipDistance5 = 181,
|
||||
ClipDistance6 = 182,
|
||||
ClipDistance7 = 183,
|
||||
PointSpriteS = 184,
|
||||
PointSpriteT = 185,
|
||||
FogCoordinate = 186,
|
||||
TessellationEvaluationPointU = 188,
|
||||
TessellationEvaluationPointV = 189,
|
||||
InstanceId = 190,
|
||||
VertexId = 191,
|
||||
FixedFncTexture0S = 192,
|
||||
FixedFncTexture0T = 193,
|
||||
FixedFncTexture0R = 194,
|
||||
FixedFncTexture0Q = 195,
|
||||
FixedFncTexture1S = 196,
|
||||
FixedFncTexture1T = 197,
|
||||
FixedFncTexture1R = 198,
|
||||
FixedFncTexture1Q = 199,
|
||||
FixedFncTexture2S = 200,
|
||||
FixedFncTexture2T = 201,
|
||||
FixedFncTexture2R = 202,
|
||||
FixedFncTexture2Q = 203,
|
||||
FixedFncTexture3S = 204,
|
||||
FixedFncTexture3T = 205,
|
||||
FixedFncTexture3R = 206,
|
||||
FixedFncTexture3Q = 207,
|
||||
FixedFncTexture4S = 208,
|
||||
FixedFncTexture4T = 209,
|
||||
FixedFncTexture4R = 210,
|
||||
FixedFncTexture4Q = 211,
|
||||
FixedFncTexture5S = 212,
|
||||
FixedFncTexture5T = 213,
|
||||
FixedFncTexture5R = 214,
|
||||
FixedFncTexture5Q = 215,
|
||||
FixedFncTexture6S = 216,
|
||||
FixedFncTexture6T = 217,
|
||||
FixedFncTexture6R = 218,
|
||||
FixedFncTexture6Q = 219,
|
||||
FixedFncTexture7S = 220,
|
||||
FixedFncTexture7T = 221,
|
||||
FixedFncTexture7R = 222,
|
||||
FixedFncTexture7Q = 223,
|
||||
FixedFncTexture8S = 224,
|
||||
FixedFncTexture8T = 225,
|
||||
FixedFncTexture8R = 226,
|
||||
FixedFncTexture8Q = 227,
|
||||
FixedFncTexture9S = 228,
|
||||
FixedFncTexture9T = 229,
|
||||
FixedFncTexture9R = 230,
|
||||
FixedFncTexture9Q = 231,
|
||||
ViewportMask = 232,
|
||||
FrontFace = 255,
|
||||
|
||||
// Implementation attributes
|
||||
BaseInstance = 256,
|
||||
BaseVertex = 257,
|
||||
DrawID = 258,
|
||||
#define SRIR_ATTRIBUTE_LIST \
|
||||
SRIR_ATTRIBUTE_ELEM(PrimitiveId, 24) \
|
||||
SRIR_ATTRIBUTE_ELEM(Layer, 25) \
|
||||
SRIR_ATTRIBUTE_ELEM(ViewportIndex, 26) \
|
||||
SRIR_ATTRIBUTE_ELEM(PointSize, 27) \
|
||||
SRIR_ATTRIBUTE_ELEM(PositionX, 28) \
|
||||
SRIR_ATTRIBUTE_ELEM(PositionY, 29) \
|
||||
SRIR_ATTRIBUTE_ELEM(PositionZ, 30) \
|
||||
SRIR_ATTRIBUTE_ELEM(PositionW, 31) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic0X, 32) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic0Y, 33) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic0Z, 34) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic0W, 35) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic1X, 36) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic1Y, 37) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic1Z, 38) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic1W, 39) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic2X, 40) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic2Y, 41) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic2Z, 42) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic2W, 43) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic3X, 44) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic3Y, 45) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic3Z, 46) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic3W, 47) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic4X, 48) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic4Y, 49) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic4Z, 50) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic4W, 51) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic5X, 52) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic5Y, 53) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic5Z, 54) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic5W, 55) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic6X, 56) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic6Y, 57) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic6Z, 58) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic6W, 59) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic7X, 60) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic7Y, 61) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic7Z, 62) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic7W, 63) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic8X, 64) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic8Y, 65) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic8Z, 66) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic8W, 67) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic9X, 68) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic9Y, 69) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic9Z, 70) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic9W, 71) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic10X, 72) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic10Y, 73) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic10Z, 74) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic10W, 75) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic11X, 76) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic11Y, 77) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic11Z, 78) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic11W, 79) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic12X, 80) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic12Y, 81) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic12Z, 82) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic12W, 83) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic13X, 84) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic13Y, 85) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic13Z, 86) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic13W, 87) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic14X, 88) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic14Y, 89) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic14Z, 90) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic14W, 91) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic15X, 92) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic15Y, 93) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic15Z, 94) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic15W, 95) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic16X, 96) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic16Y, 97) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic16Z, 98) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic16W, 99) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic17X, 100) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic17Y, 101) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic17Z, 102) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic17W, 103) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic18X, 104) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic18Y, 105) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic18Z, 106) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic18W, 107) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic19X, 108) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic19Y, 109) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic19Z, 110) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic19W, 111) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic20X, 112) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic20Y, 113) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic20Z, 114) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic20W, 115) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic21X, 116) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic21Y, 117) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic21Z, 118) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic21W, 119) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic22X, 120) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic22Y, 121) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic22Z, 122) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic22W, 123) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic23X, 124) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic23Y, 125) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic23Z, 126) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic23W, 127) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic24X, 128) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic24Y, 129) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic24Z, 130) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic24W, 131) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic25X, 132) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic25Y, 133) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic25Z, 134) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic25W, 135) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic26X, 136) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic26Y, 137) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic26Z, 138) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic26W, 139) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic27X, 140) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic27Y, 141) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic27Z, 142) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic27W, 143) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic28X, 144) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic28Y, 145) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic28Z, 146) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic28W, 147) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic29X, 148) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic29Y, 149) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic29Z, 150) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic29W, 151) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic30X, 152) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic30Y, 153) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic30Z, 154) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic30W, 155) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic31X, 156) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic31Y, 157) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic31Z, 158) \
|
||||
SRIR_ATTRIBUTE_ELEM(Generic31W, 159) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontDiffuseR, 160) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontDiffuseG, 161) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontDiffuseB, 162) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontDiffuseA, 163) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontSpecularR, 164) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontSpecularG, 165) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontSpecularB, 166) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorFrontSpecularA, 167) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackDiffuseR, 168) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackDiffuseG, 169) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackDiffuseB, 170) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackDiffuseA, 171) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackSpecularR, 172) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackSpecularG, 173) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackSpecularB, 174) \
|
||||
SRIR_ATTRIBUTE_ELEM(ColorBackSpecularA, 175) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance0, 176) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance1, 177) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance2, 178) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance3, 179) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance4, 180) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance5, 181) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance6, 182) \
|
||||
SRIR_ATTRIBUTE_ELEM(ClipDistance7, 183) \
|
||||
SRIR_ATTRIBUTE_ELEM(PointSpriteS, 184) \
|
||||
SRIR_ATTRIBUTE_ELEM(PointSpriteT, 185) \
|
||||
SRIR_ATTRIBUTE_ELEM(FogCoordinate, 186) \
|
||||
SRIR_ATTRIBUTE_ELEM(TessellationEvaluationPointU, 188) \
|
||||
SRIR_ATTRIBUTE_ELEM(TessellationEvaluationPointV, 189) \
|
||||
SRIR_ATTRIBUTE_ELEM(InstanceId, 190) \
|
||||
SRIR_ATTRIBUTE_ELEM(VertexId, 191) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture0S, 192) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture0T, 193) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture0R, 194) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture0Q, 195) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture1S, 196) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture1T, 197) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture1R, 198) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture1Q, 199) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture2S, 200) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture2T, 201) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture2R, 202) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture2Q, 203) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture3S, 204) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture3T, 205) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture3R, 206) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture3Q, 207) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture4S, 208) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture4T, 209) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture4R, 210) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture4Q, 211) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture5S, 212) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture5T, 213) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture5R, 214) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture5Q, 215) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture6S, 216) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture6T, 217) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture6R, 218) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture6Q, 219) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture7S, 220) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture7T, 221) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture7R, 222) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture7Q, 223) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture8S, 224) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture8T, 225) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture8R, 226) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture8Q, 227) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture9S, 228) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture9T, 229) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture9R, 230) \
|
||||
SRIR_ATTRIBUTE_ELEM(FixedFncTexture9Q, 231) \
|
||||
SRIR_ATTRIBUTE_ELEM(ViewportMask, 232) \
|
||||
SRIR_ATTRIBUTE_ELEM(FrontFace, 255) \
|
||||
/* Implementation attributes */ \
|
||||
SRIR_ATTRIBUTE_ELEM(BaseInstance, 256) \
|
||||
SRIR_ATTRIBUTE_ELEM(BaseVertex, 257) \
|
||||
SRIR_ATTRIBUTE_ELEM(DrawID, 258)
|
||||
#define SRIR_ATTRIBUTE_ELEM(n, v) n = v,
|
||||
SRIR_ATTRIBUTE_LIST
|
||||
#undef SRIR_ATTRIBUTE_ELEM
|
||||
};
|
||||
|
||||
constexpr size_t NUM_GENERICS = 32;
|
||||
|
||||
constexpr size_t NUM_FIXEDFNCTEXTURE = 10;
|
||||
|
||||
[[nodiscard]] bool IsGeneric(Attribute attribute) noexcept;
|
||||
[[nodiscard]] inline bool IsGeneric(Attribute attribute) noexcept {
|
||||
return attribute >= Attribute::Generic0X && attribute <= Attribute::Generic31X;
|
||||
}
|
||||
|
||||
[[nodiscard]] u32 GenericAttributeIndex(Attribute attribute);
|
||||
[[nodiscard]] inline u32 GenericAttributeIndex(Attribute attribute) {
|
||||
if (!IsGeneric(attribute))
|
||||
throw InvalidArgument("Attribute is not generic {}", attribute);
|
||||
return (u32(attribute) - u32(Attribute::Generic0X)) / 4u;
|
||||
}
|
||||
|
||||
[[nodiscard]] u32 GenericAttributeElement(Attribute attribute);
|
||||
[[nodiscard]] inline u32 GenericAttributeElement(Attribute attribute) {
|
||||
if (!IsGeneric(attribute))
|
||||
throw InvalidArgument("Attribute is not generic {}", attribute);
|
||||
return u32(attribute) % 4;
|
||||
}
|
||||
|
||||
[[nodiscard]] std::string NameOf(Attribute attribute);
|
||||
[[nodiscard]] inline std::string NameOf(Attribute attribute) {
|
||||
switch (attribute) {
|
||||
#define SRIR_ATTRIBUTE_ELEM(n, v) case Attribute::n: return #n;
|
||||
SRIR_ATTRIBUTE_LIST
|
||||
#undef SRIR_ATTRIBUTE_ELEM
|
||||
default:
|
||||
return fmt::format("<reserved attribute {}>", int(attribute));
|
||||
}
|
||||
}
|
||||
|
||||
[[nodiscard]] constexpr IR::Attribute operator+(IR::Attribute attribute, size_t value) noexcept {
|
||||
return static_cast<IR::Attribute>(static_cast<size_t>(attribute) + value);
|
||||
return IR::Attribute(size_t(attribute) + value);
|
||||
}
|
||||
|
||||
} // namespace Shader::IR
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "shader_recompiler/frontend/ir/flow_test.h"
|
||||
|
||||
namespace Shader::IR {
|
||||
|
||||
std::string NameOf(FlowTest flow_test) {
|
||||
switch (flow_test) {
|
||||
case FlowTest::F:
|
||||
return "F";
|
||||
case FlowTest::LT:
|
||||
return "LT";
|
||||
case FlowTest::EQ:
|
||||
return "EQ";
|
||||
case FlowTest::LE:
|
||||
return "LE";
|
||||
case FlowTest::GT:
|
||||
return "GT";
|
||||
case FlowTest::NE:
|
||||
return "NE";
|
||||
case FlowTest::GE:
|
||||
return "GE";
|
||||
case FlowTest::NUM:
|
||||
return "NUM";
|
||||
case FlowTest::NaN:
|
||||
return "NAN";
|
||||
case FlowTest::LTU:
|
||||
return "LTU";
|
||||
case FlowTest::EQU:
|
||||
return "EQU";
|
||||
case FlowTest::LEU:
|
||||
return "LEU";
|
||||
case FlowTest::GTU:
|
||||
return "GTU";
|
||||
case FlowTest::NEU:
|
||||
return "NEU";
|
||||
case FlowTest::GEU:
|
||||
return "GEU";
|
||||
case FlowTest::T:
|
||||
return "T";
|
||||
case FlowTest::OFF:
|
||||
return "OFF";
|
||||
case FlowTest::LO:
|
||||
return "LO";
|
||||
case FlowTest::SFF:
|
||||
return "SFF";
|
||||
case FlowTest::LS:
|
||||
return "LS";
|
||||
case FlowTest::HI:
|
||||
return "HI";
|
||||
case FlowTest::SFT:
|
||||
return "SFT";
|
||||
case FlowTest::HS:
|
||||
return "HS";
|
||||
case FlowTest::OFT:
|
||||
return "OFT";
|
||||
case FlowTest::CSM_TA:
|
||||
return "CSM_TA";
|
||||
case FlowTest::CSM_TR:
|
||||
return "CSM_TR";
|
||||
case FlowTest::CSM_MX:
|
||||
return "CSM_MX";
|
||||
case FlowTest::FCSM_TA:
|
||||
return "FCSM_TA";
|
||||
case FlowTest::FCSM_TR:
|
||||
return "FCSM_TR";
|
||||
case FlowTest::FCSM_MX:
|
||||
return "FCSM_MX";
|
||||
case FlowTest::RLE:
|
||||
return "RLE";
|
||||
case FlowTest::RGT:
|
||||
return "RGT";
|
||||
}
|
||||
return fmt::format("<invalid flow test {}>", static_cast<int>(flow_test));
|
||||
}
|
||||
|
||||
} // namespace Shader::IR
|
||||
@@ -1,3 +1,6 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -7,45 +10,58 @@
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "common/common_types.h"
|
||||
#include "shader_recompiler/exception.h"
|
||||
|
||||
namespace Shader::IR {
|
||||
|
||||
enum class FlowTest : u64 {
|
||||
F,
|
||||
LT,
|
||||
EQ,
|
||||
LE,
|
||||
GT,
|
||||
NE,
|
||||
GE,
|
||||
NUM,
|
||||
NaN,
|
||||
LTU,
|
||||
EQU,
|
||||
LEU,
|
||||
GTU,
|
||||
NEU,
|
||||
GEU,
|
||||
T,
|
||||
OFF,
|
||||
LO,
|
||||
SFF,
|
||||
LS,
|
||||
HI,
|
||||
SFT,
|
||||
HS,
|
||||
OFT,
|
||||
CSM_TA,
|
||||
CSM_TR,
|
||||
CSM_MX,
|
||||
FCSM_TA,
|
||||
FCSM_TR,
|
||||
FCSM_MX,
|
||||
RLE,
|
||||
RGT,
|
||||
#define SRIR_FLOW_TEST_LIST \
|
||||
SRIR_FLOW_TEST_ELEM(F) \
|
||||
SRIR_FLOW_TEST_ELEM(LT) \
|
||||
SRIR_FLOW_TEST_ELEM(EQ) \
|
||||
SRIR_FLOW_TEST_ELEM(LE) \
|
||||
SRIR_FLOW_TEST_ELEM(GT) \
|
||||
SRIR_FLOW_TEST_ELEM(NE) \
|
||||
SRIR_FLOW_TEST_ELEM(GE) \
|
||||
SRIR_FLOW_TEST_ELEM(NUM) \
|
||||
SRIR_FLOW_TEST_ELEM(NaN) \
|
||||
SRIR_FLOW_TEST_ELEM(LTU) \
|
||||
SRIR_FLOW_TEST_ELEM(EQU) \
|
||||
SRIR_FLOW_TEST_ELEM(LEU) \
|
||||
SRIR_FLOW_TEST_ELEM(GTU) \
|
||||
SRIR_FLOW_TEST_ELEM(NEU) \
|
||||
SRIR_FLOW_TEST_ELEM(GEU) \
|
||||
SRIR_FLOW_TEST_ELEM(T) \
|
||||
SRIR_FLOW_TEST_ELEM(OFF) \
|
||||
SRIR_FLOW_TEST_ELEM(LO) \
|
||||
SRIR_FLOW_TEST_ELEM(SFF) \
|
||||
SRIR_FLOW_TEST_ELEM(LS) \
|
||||
SRIR_FLOW_TEST_ELEM(HI) \
|
||||
SRIR_FLOW_TEST_ELEM(SFT) \
|
||||
SRIR_FLOW_TEST_ELEM(HS) \
|
||||
SRIR_FLOW_TEST_ELEM(OFT) \
|
||||
SRIR_FLOW_TEST_ELEM(CSM_TA) \
|
||||
SRIR_FLOW_TEST_ELEM(CSM_TR) \
|
||||
SRIR_FLOW_TEST_ELEM(CSM_MX) \
|
||||
SRIR_FLOW_TEST_ELEM(FCSM_TA) \
|
||||
SRIR_FLOW_TEST_ELEM(FCSM_TR) \
|
||||
SRIR_FLOW_TEST_ELEM(FCSM_MX) \
|
||||
SRIR_FLOW_TEST_ELEM(RLE) \
|
||||
SRIR_FLOW_TEST_ELEM(RGT)
|
||||
#define SRIR_FLOW_TEST_ELEM(n) n,
|
||||
SRIR_FLOW_TEST_LIST
|
||||
#undef SRIR_FLOW_TEST_ELEM
|
||||
};
|
||||
|
||||
[[nodiscard]] std::string NameOf(FlowTest flow_test);
|
||||
[[nodiscard]] inline std::string NameOf(FlowTest flow_test) {
|
||||
switch (flow_test) {
|
||||
#define SRIR_FLOW_TEST_ELEM(n) case FlowTest::n: return #n;
|
||||
SRIR_FLOW_TEST_LIST
|
||||
#undef SRIR_FLOW_TEST_ELEM
|
||||
default:
|
||||
return fmt::format("<invalid flow test {}>", int(flow_test));
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Shader::IR
|
||||
|
||||
|
||||
Reference in New Issue
Block a user