From acf84349a99f668cdfd179a8f2da49530a98e7e8 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 23 Nov 2019 19:16:59 -0400 Subject: [PATCH] Move some Lua code around to work around VS2013's 16kB limitation for C++ raw string literals. --HG-- branch : minor --- src/modules/graphics/wrap_Graphics.lua | 38 ++++++++++++++++++++ src/modules/graphics/wrap_GraphicsShader.lua | 35 ------------------ 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/modules/graphics/wrap_Graphics.lua b/src/modules/graphics/wrap_Graphics.lua index 621305f05..3c00ff8cb 100644 --- a/src/modules/graphics/wrap_Graphics.lua +++ b/src/modules/graphics/wrap_Graphics.lua @@ -22,6 +22,9 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. --]] +local table_concat = table.concat +local ipairs = ipairs + function love.graphics.newVideo(file, settings) settings = settings == nil and {} or settings if type(settings) ~= "table" then error("bad argument #2 to newVideo (expected table)", 2) end @@ -47,5 +50,40 @@ function love.graphics.newVideo(file, settings) return video end +function love.graphics._transformGLSLErrorMessages(message) + local shadertype = message:match("Cannot compile (%a+) shader code") + local compiling = shadertype ~= nil + if not shadertype then + shadertype = message:match("Error validating (%a+) shader") + end + if not shadertype then return message end + local lines = {} + local prefix = compiling and "Cannot compile " or "Error validating " + lines[#lines+1] = prefix..shadertype.." shader code:" + for l in message:gmatch("[^\n]+") do + -- nvidia: 0() : error/warning [NUMBER]: + local linenumber, what, message = l:match("^0%((%d+)%)%s*:%s*(%w+)[^:]+:%s*(.+)$") + if not linenumber then + -- AMD: ERROR 0:: error/warning(#[NUMBER]) [ERRORNAME]: + linenumber, what, message = l:match("^%w+: 0:(%d+):%s*(%w+)%([^%)]+%)%s*(.+)$") + end + if not linenumber then + -- macOS (?): ERROR: 0:: + what, linenumber, message = l:match("^(%w+): %d+:(%d+): (.+)$") + end + if not linenumber and l:match("^ERROR:") then + what = l + end + if linenumber and what and message then + lines[#lines+1] = ("Line %d: %s: %s"):format(linenumber, what, message) + elseif what then + lines[#lines+1] = what + end + end + -- did not match any known error messages + if #lines == 1 then return message end + return table_concat(lines, "\n") +end + -- DO NOT REMOVE THE NEXT LINE. It is used to load this file as a C++ string. --)luastring"--" diff --git a/src/modules/graphics/wrap_GraphicsShader.lua b/src/modules/graphics/wrap_GraphicsShader.lua index 48b6fb69f..61a03b3c0 100644 --- a/src/modules/graphics/wrap_GraphicsShader.lua +++ b/src/modules/graphics/wrap_GraphicsShader.lua @@ -434,41 +434,6 @@ function love.graphics._shaderCodeToGLSL(gles, arg1, arg2) return vertexcode, pixelcode end -function love.graphics._transformGLSLErrorMessages(message) - local shadertype = message:match("Cannot compile (%a+) shader code") - local compiling = shadertype ~= nil - if not shadertype then - shadertype = message:match("Error validating (%a+) shader") - end - if not shadertype then return message end - local lines = {} - local prefix = compiling and "Cannot compile " or "Error validating " - lines[#lines+1] = prefix..shadertype.." shader code:" - for l in message:gmatch("[^\n]+") do - -- nvidia: 0() : error/warning [NUMBER]: - local linenumber, what, message = l:match("^0%((%d+)%)%s*:%s*(%w+)[^:]+:%s*(.+)$") - if not linenumber then - -- AMD: ERROR 0:: error/warning(#[NUMBER]) [ERRORNAME]: - linenumber, what, message = l:match("^%w+: 0:(%d+):%s*(%w+)%([^%)]+%)%s*(.+)$") - end - if not linenumber then - -- macOS (?): ERROR: 0:: - what, linenumber, message = l:match("^(%w+): %d+:(%d+): (.+)$") - end - if not linenumber and l:match("^ERROR:") then - what = l - end - if linenumber and what and message then - lines[#lines+1] = ("Line %d: %s: %s"):format(linenumber, what, message) - elseif what then - lines[#lines+1] = what - end - end - -- did not match any known error messages - if #lines == 1 then return message end - return table_concat(lines, "\n") -end - local defaultcode = { vertex = [[ vec4 position(mat4 clipSpaceFromLocal, vec4 localPosition) {