|
|
|
@ -4,59 +4,10 @@ |
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
|
|
#include <array> |
|
|
|
#include <optional> |
|
|
|
#include <vector> |
|
|
|
|
|
|
|
#include "common/common_types.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 Profile { |
|
|
|
u32 supported_spirv{0x00010000}; |
|
|
|
|
|
|
|
@ -114,27 +65,4 @@ struct Profile { |
|
|
|
bool ignore_nan_fp_comparisons{}; |
|
|
|
}; |
|
|
|
|
|
|
|
struct RuntimeInfo { |
|
|
|
std::array<AttributeType, 32> generic_input_types{}; |
|
|
|
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{}; |
|
|
|
|
|
|
|
std::vector<TransformFeedbackVarying> xfb_varyings; |
|
|
|
}; |
|
|
|
|
|
|
|
} // namespace Shader |