| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- // Copyright 2021 yuzu Emulator Project
- // Licensed under GPLv2 or any later version
- // Refer to the license.txt file included.
- #pragma once
- #include <fmt/format.h>
- #include "common/common_types.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,
- };
- constexpr size_t NUM_GENERICS = 32;
- [[nodiscard]] bool IsGeneric(Attribute attribute) noexcept;
- [[nodiscard]] u32 GenericAttributeIndex(Attribute attribute);
- [[nodiscard]] u32 GenericAttributeElement(Attribute attribute);
- [[nodiscard]] std::string NameOf(Attribute attribute);
- [[nodiscard]] constexpr IR::Attribute operator+(IR::Attribute attribute, size_t value) noexcept {
- return static_cast<IR::Attribute>(static_cast<size_t>(attribute) + value);
- }
- } // namespace Shader::IR
- template <>
- struct fmt::formatter<Shader::IR::Attribute> {
- constexpr auto parse(format_parse_context& ctx) {
- return ctx.begin();
- }
- template <typename FormatContext>
- auto format(const Shader::IR::Attribute& attribute, FormatContext& ctx) {
- return fmt::format_to(ctx.out(), "{}", Shader::IR::NameOf(attribute));
- }
- };
|