summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GeometryShaderGen.cpp
diff options
context:
space:
mode:
authorMarkus Wick <degasus@users.noreply.github.com>2015-12-28 10:09:11 +0100
committerMarkus Wick <degasus@users.noreply.github.com>2015-12-28 10:09:11 +0100
commit281860eafa65d7f65b02cc449ac94397d0f111f4 (patch)
tree23cfbe61f97089c1806eeb1e1d249d0b43fa622a /Source/Core/VideoCommon/GeometryShaderGen.cpp
parentcec1a759769bea2d7a224f99d6ee34ad9a602bed (diff)
parentc5f123a70b2bb9db5721383b07a7343b78693883 (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.cpp24
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);