| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2021 yuzu Emulator Project
- // Licensed under GPLv2 or any later version
- // Refer to the license.txt file included.
- #pragma once
- #include <array>
- #include <bitset>
- #include <optional>
- #include <vector>
- #include "common/common_types.h"
- #include "shader_recompiler/varying_state.h"
- namespace Shader {
- enum class AttributeType : u8 {
- Float,
- SignedInt,
- UnsignedInt,
- Disabled,
- };
- enum class InputTopology {
- Points,
- Lines,
- LinesAdjacency,
- Triangles,
- TrianglesAdjacency,
- };
- enum class CompareFunction {
- Never,
- Less,
- Equal,
- LessThanEqual,
- Greater,
- NotEqual,
- GreaterThanEqual,
- Always,
- };
- enum class TessPrimitive {
- Isolines,
- Triangles,
- Quads,
- };
- enum class TessSpacing {
- Equal,
- FractionalOdd,
- FractionalEven,
- };
- struct TransformFeedbackVarying {
- u32 buffer{};
- u32 stride{};
- u32 offset{};
- u32 components{};
- };
- struct RuntimeInfo {
- std::array<AttributeType, 32> generic_input_types{};
- VaryingState previous_stage_stores;
- bool convert_depth_mode{};
- bool force_early_z{};
- TessPrimitive tess_primitive{};
- TessSpacing tess_spacing{};
- bool tess_clockwise{};
- InputTopology input_topology{};
- std::optional<float> fixed_state_point_size;
- std::optional<CompareFunction> alpha_test_func;
- float alpha_test_reference{};
- /// Static Y negate value
- bool y_negate{};
- /// Use storage buffers instead of global pointers on GLASM
- bool glasm_use_storage_buffers{};
- /// Transform feedback state for each varying
- std::vector<TransformFeedbackVarying> xfb_varyings;
- };
- } // namespace Shader
|