From 71d1eb3c313535b5003884bb862635d4d2f8aae9 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Tue, 3 Nov 2015 03:47:05 +0100 Subject: VideoCommon: return code/uid from shader gens rather than passing in non-const references --- Source/Core/VideoCommon/GeometryShaderGen.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp') diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp index f36aa94a9a..bf054464c2 100644 --- a/Source/Core/VideoCommon/GeometryShaderGen.cpp +++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp @@ -30,8 +30,9 @@ template static inline void EmitVertex(T& out, const char* vertex, API_ template static inline void EndPrimitive(T& out, API_TYPE ApiType); template -static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE ApiType) +static inline T GenerateGeometryShader(u32 primitive_type, API_TYPE ApiType) { + T out; // Non-uid template parameters will write to the dummy data (=> gets optimized out) geometry_shader_uid_data dummy_data; geometry_shader_uid_data* uid_data = out.template GetUidData(); @@ -292,6 +293,8 @@ static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE A if (text[sizeof(text) - 1] != 0x7C) PanicAlert("GeometryShader generator - buffer too small, canary has been eaten!"); } + + return out; } template @@ -327,12 +330,12 @@ static inline void EndPrimitive(T& out, API_TYPE ApiType) out.Write("\toutput.RestartStrip();\n"); } -void GetGeometryShaderUid(GeometryShaderUid& object, u32 primitive_type, API_TYPE ApiType) +GeometryShaderUid GetGeometryShaderUid(u32 primitive_type, API_TYPE ApiType) { - GenerateGeometryShader(object, primitive_type, ApiType); + return GenerateGeometryShader(primitive_type, ApiType); } -void GenerateGeometryShaderCode(ShaderCode& object, u32 primitive_type, API_TYPE ApiType) +ShaderCode GenerateGeometryShaderCode(u32 primitive_type, API_TYPE ApiType) { - GenerateGeometryShader(object, primitive_type, ApiType); + return GenerateGeometryShader(primitive_type, ApiType); } -- cgit v1.2.3