diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2015-12-28 10:09:11 +0100 |
|---|---|---|
| committer | Markus Wick <degasus@users.noreply.github.com> | 2015-12-28 10:09:11 +0100 |
| commit | 281860eafa65d7f65b02cc449ac94397d0f111f4 (patch) | |
| tree | 23cfbe61f97089c1806eeb1e1d249d0b43fa622a /Source/Core/VideoCommon/GeometryShaderGen.cpp | |
| parent | cec1a759769bea2d7a224f99d6ee34ad9a602bed (diff) | |
| parent | c5f123a70b2bb9db5721383b07a7343b78693883 (diff) | |
Merge pull request #3400 from lioncash/shadergen
ShaderGen: Get rid of static buffers
Diffstat (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/GeometryShaderGen.cpp | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp index bf054464c2..9c1ccd3071 100644 --- a/Source/Core/VideoCommon/GeometryShaderGen.cpp +++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp @@ -7,10 +7,8 @@ #include "VideoCommon/BPMemory.h" #include "VideoCommon/GeometryShaderGen.h" #include "VideoCommon/LightingShaderGen.h" -#include "VideoCommon/VertexShaderGen.h" #include "VideoCommon/VideoConfig.h" -static char text[16384]; static const char* primitives_ogl[] = { @@ -26,11 +24,11 @@ static const char* primitives_d3d[] = "triangle" }; -template<class T> static inline void EmitVertex(T& out, const char* vertex, API_TYPE ApiType, bool first_vertex = false); -template<class T> static inline void EndPrimitive(T& out, API_TYPE ApiType); +template<class T> static void EmitVertex(T& out, const char* vertex, API_TYPE ApiType, bool first_vertex = false); +template<class T> static void EndPrimitive(T& out, API_TYPE ApiType); template<class T> -static inline T GenerateGeometryShader(u32 primitive_type, API_TYPE ApiType) +static T GenerateGeometryShader(u32 primitive_type, API_TYPE ApiType) { T out; // Non-uid template parameters will write to the dummy data (=> gets optimized out) @@ -39,12 +37,6 @@ static inline T GenerateGeometryShader(u32 primitive_type, API_TYPE ApiType) if (uid_data == nullptr) uid_data = &dummy_data; - out.SetBuffer(text); - const bool is_writing_shadercode = (out.GetBuffer() != nullptr); - - if (is_writing_shadercode) - text[sizeof(text) - 1] = 0x7C; // canary - uid_data->primitive_type = primitive_type; const unsigned int vertex_in = primitive_type + 1; unsigned int vertex_out = primitive_type == PRIMITIVE_TRIANGLES ? 3 : 4; @@ -288,17 +280,11 @@ static inline T GenerateGeometryShader(u32 primitive_type, API_TYPE ApiType) out.Write("}\n"); - if (is_writing_shadercode) - { - if (text[sizeof(text) - 1] != 0x7C) - PanicAlert("GeometryShader generator - buffer too small, canary has been eaten!"); - } - return out; } template<class T> -static inline void EmitVertex(T& out, const char* vertex, API_TYPE ApiType, bool first_vertex) +static void EmitVertex(T& out, const char* vertex, API_TYPE ApiType, bool first_vertex) { if (g_ActiveConfig.bWireFrame && first_vertex) out.Write("\tif (i == 0) first = %s;\n", vertex); @@ -319,7 +305,7 @@ static inline void EmitVertex(T& out, const char* vertex, API_TYPE ApiType, bool out.Write("\toutput.Append(ps);\n"); } template<class T> -static inline void EndPrimitive(T& out, API_TYPE ApiType) +static void EndPrimitive(T& out, API_TYPE ApiType) { if (g_ActiveConfig.bWireFrame) EmitVertex<T>(out, "first", ApiType); |
