From b6104da0af1e3713a9d0bd87a322ed95d4b79d13 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 24 May 2019 15:29:33 +0100 Subject: [PATCH] Remove GL shader/program object labels, add support for geometry shaders --- util/test/demos/gl/gl_buffer_updates.cpp | 1 - util/test/demos/gl/gl_cbuffer_zoo.cpp | 1 - util/test/demos/gl/gl_dx_interop.cpp | 1 - util/test/demos/gl/gl_entry_points.cpp | 1 - util/test/demos/gl/gl_large_bcn_arrays.cpp | 1 - util/test/demos/gl/gl_map_overrun.cpp | 1 - .../demos/gl/gl_midframe_context_create.cpp | 1 - util/test/demos/gl/gl_mip_gen_rt.cpp | 1 - util/test/demos/gl/gl_multi_window.cpp | 1 - util/test/demos/gl/gl_overlay_test.cpp | 1 - util/test/demos/gl/gl_simple_triangle.cpp | 1 - util/test/demos/gl/gl_spirv_shader.cpp | 1 - .../demos/gl/gl_structured_buffer_nested.cpp | 1 - util/test/demos/gl/gl_test.cpp | 38 +++++++++++++++++-- util/test/demos/gl/gl_test.h | 2 +- util/test/demos/gl/gl_vao_0.cpp | 1 - 16 files changed, 35 insertions(+), 19 deletions(-) diff --git a/util/test/demos/gl/gl_buffer_updates.cpp b/util/test/demos/gl/gl_buffer_updates.cpp index c2452488d..94a798dbd 100644 --- a/util/test/demos/gl/gl_buffer_updates.cpp +++ b/util/test/demos/gl/gl_buffer_updates.cpp @@ -272,7 +272,6 @@ void main() glBufferStorage(GL_UNIFORM_BUFFER, sizeof(Vec4f), &red, 0); GLuint program = MakeProgram(vertex, pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); while(Running()) { diff --git a/util/test/demos/gl/gl_cbuffer_zoo.cpp b/util/test/demos/gl/gl_cbuffer_zoo.cpp index 890fd74af..a77bf8538 100644 --- a/util/test/demos/gl/gl_cbuffer_zoo.cpp +++ b/util/test/demos/gl/gl_cbuffer_zoo.cpp @@ -334,7 +334,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); Vec4f cbufferdata[684]; diff --git a/util/test/demos/gl/gl_dx_interop.cpp b/util/test/demos/gl/gl_dx_interop.cpp index f7d61a09f..fc1da1c57 100644 --- a/util/test/demos/gl/gl_dx_interop.cpp +++ b/util/test/demos/gl/gl_dx_interop.cpp @@ -200,7 +200,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); GLuint gl_fromd3d = MakeTexture(); HANDLE interop_fromd3d = diff --git a/util/test/demos/gl/gl_entry_points.cpp b/util/test/demos/gl/gl_entry_points.cpp index dbe358209..74086ecb8 100644 --- a/util/test/demos/gl/gl_entry_points.cpp +++ b/util/test/demos/gl/gl_entry_points.cpp @@ -76,7 +76,6 @@ void main() glEnableVertexAttribArray(0); GLuint program = MakeProgram(vertex, pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); while(Running()) { diff --git a/util/test/demos/gl/gl_large_bcn_arrays.cpp b/util/test/demos/gl/gl_large_bcn_arrays.cpp index 781fe611a..0aca751bd 100644 --- a/util/test/demos/gl/gl_large_bcn_arrays.cpp +++ b/util/test/demos/gl/gl_large_bcn_arrays.cpp @@ -96,7 +96,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); const int width = 4; const int height = 4; diff --git a/util/test/demos/gl/gl_map_overrun.cpp b/util/test/demos/gl/gl_map_overrun.cpp index 31d8fc353..702ac018b 100644 --- a/util/test/demos/gl/gl_map_overrun.cpp +++ b/util/test/demos/gl/gl_map_overrun.cpp @@ -101,7 +101,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); while(Running()) { diff --git a/util/test/demos/gl/gl_midframe_context_create.cpp b/util/test/demos/gl/gl_midframe_context_create.cpp index b0ee2a857..7dcc3f009 100644 --- a/util/test/demos/gl/gl_midframe_context_create.cpp +++ b/util/test/demos/gl/gl_midframe_context_create.cpp @@ -103,7 +103,6 @@ void main() glBufferStorage(GL_ELEMENT_ARRAY_BUFFER, sizeof(uint32_t) * 3, idxs, 0); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); GraphicsWindow *win2 = NULL; void *ctx2 = NULL; diff --git a/util/test/demos/gl/gl_mip_gen_rt.cpp b/util/test/demos/gl/gl_mip_gen_rt.cpp index 10aad5375..a1040f8e0 100644 --- a/util/test/demos/gl/gl_mip_gen_rt.cpp +++ b/util/test/demos/gl/gl_mip_gen_rt.cpp @@ -84,7 +84,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(vertex, pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); GLuint tex = MakeTexture(); glBindTexture(GL_TEXTURE_2D, tex); diff --git a/util/test/demos/gl/gl_multi_window.cpp b/util/test/demos/gl/gl_multi_window.cpp index 9c0bbadff..21c1da2fd 100644 --- a/util/test/demos/gl/gl_multi_window.cpp +++ b/util/test/demos/gl/gl_multi_window.cpp @@ -98,7 +98,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); GraphicsWindow *win2 = MakeWindow(300, 200, "Autotesting 2"); void *ctx2 = MakeContext(win2, mainContext); diff --git a/util/test/demos/gl/gl_overlay_test.cpp b/util/test/demos/gl/gl_overlay_test.cpp index b859a7134..87a632600 100644 --- a/util/test/demos/gl/gl_overlay_test.cpp +++ b/util/test/demos/gl/gl_overlay_test.cpp @@ -157,7 +157,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); GLuint fbo = MakeFBO(); glBindFramebuffer(GL_FRAMEBUFFER, fbo); diff --git a/util/test/demos/gl/gl_simple_triangle.cpp b/util/test/demos/gl/gl_simple_triangle.cpp index 2e71bc4f9..495395370 100644 --- a/util/test/demos/gl/gl_simple_triangle.cpp +++ b/util/test/demos/gl/gl_simple_triangle.cpp @@ -97,7 +97,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); while(Running()) { diff --git a/util/test/demos/gl/gl_spirv_shader.cpp b/util/test/demos/gl/gl_spirv_shader.cpp index b34c97473..679fa6484 100644 --- a/util/test/demos/gl/gl_spirv_shader.cpp +++ b/util/test/demos/gl/gl_spirv_shader.cpp @@ -134,7 +134,6 @@ void main() glBindBufferBase(GL_UNIFORM_BUFFER, 1, fsbuf); GLuint glslprogram = MakeProgram(vertex, pixel); - glObjectLabel(GL_PROGRAM, glslprogram, -1, "Full program"); GLuint spirvprogram = MakeProgram(); diff --git a/util/test/demos/gl/gl_structured_buffer_nested.cpp b/util/test/demos/gl/gl_structured_buffer_nested.cpp index 82654c955..2dceadb07 100644 --- a/util/test/demos/gl/gl_structured_buffer_nested.cpp +++ b/util/test/demos/gl/gl_structured_buffer_nested.cpp @@ -153,7 +153,6 @@ void main() glEnableVertexAttribArray(2); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); float data[16 * 100]; diff --git a/util/test/demos/gl/gl_test.cpp b/util/test/demos/gl/gl_test.cpp index b36993d0c..df7bd0c4f 100644 --- a/util/test/demos/gl/gl_test.cpp +++ b/util/test/demos/gl/gl_test.cpp @@ -70,10 +70,11 @@ void OpenGLGraphicsTest::Shutdown() DestroyContext(mainContext); } -GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, bool sep) +GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, std::string geomSrc) { GLuint vs = vertSrc.empty() ? 0 : glCreateShader(GL_VERTEX_SHADER); GLuint fs = fragSrc.empty() ? 0 : glCreateShader(GL_FRAGMENT_SHADER); + GLuint gs = geomSrc.empty() ? 0 : glCreateShader(GL_GEOMETRY_SHADER); const char *cstr = NULL; @@ -81,7 +82,6 @@ GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, { cstr = vertSrc.c_str(); glShaderSource(vs, 1, &cstr, NULL); - glObjectLabel(GL_SHADER, vs, -1, "VS doodad"); glCompileShader(vs); } @@ -89,10 +89,16 @@ GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, { cstr = fragSrc.c_str(); glShaderSource(fs, 1, &cstr, NULL); - glObjectLabel(GL_SHADER, fs, -1, "FS thingy"); glCompileShader(fs); } + if(gs) + { + cstr = geomSrc.c_str(); + glShaderSource(gs, 1, &cstr, NULL); + glCompileShader(gs); + } + char buffer[1024]; GLint status = 0; @@ -107,6 +113,7 @@ GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, TEST_ERROR("Shader error: %s", buffer); glDeleteShader(vs); glDeleteShader(fs); + glDeleteShader(gs); return 0; } @@ -121,6 +128,22 @@ GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, TEST_ERROR("Shader error: %s", buffer); glDeleteShader(vs); glDeleteShader(fs); + glDeleteShader(gs); + return 0; + } + + if(gs) + glGetShaderiv(gs, GL_COMPILE_STATUS, &status); + else + status = 1; + + if(status == 0) + { + glGetShaderInfoLog(gs, 1024, NULL, buffer); + TEST_ERROR("Shader error: %s", buffer); + glDeleteShader(vs); + glDeleteShader(fs); + glDeleteShader(gs); return 0; } @@ -130,8 +153,10 @@ GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, glAttachShader(program, vs); if(fs) glAttachShader(program, fs); + if(gs) + glAttachShader(program, gs); - if(!vs || !fs || sep) + if(!vs || !fs) glProgramParameteri(program, GL_PROGRAM_SEPARABLE, GL_TRUE); glLinkProgram(program); @@ -156,6 +181,11 @@ GLuint OpenGLGraphicsTest::MakeProgram(std::string vertSrc, std::string fragSrc, glDetachShader(program, fs); glDeleteShader(fs); } + if(gs) + { + glDetachShader(program, gs); + glDeleteShader(gs); + } if(program) managedResources.progs.push_back(program); diff --git a/util/test/demos/gl/gl_test.h b/util/test/demos/gl/gl_test.h index 8c392d680..e16e49cba 100644 --- a/util/test/demos/gl/gl_test.h +++ b/util/test/demos/gl/gl_test.h @@ -44,7 +44,7 @@ struct OpenGLGraphicsTest : public GraphicsTest void PostInit(); - GLuint MakeProgram(std::string vertSrc, std::string fragSrc, bool sep = false); + GLuint MakeProgram(std::string vertSrc, std::string fragSrc, std::string geomSrc = ""); GLuint MakeProgram(); GLuint MakePipeline(); GLuint MakeBuffer(); diff --git a/util/test/demos/gl/gl_vao_0.cpp b/util/test/demos/gl/gl_vao_0.cpp index 369da6758..cfd45d51e 100644 --- a/util/test/demos/gl/gl_vao_0.cpp +++ b/util/test/demos/gl/gl_vao_0.cpp @@ -101,7 +101,6 @@ void main() glBufferStorage(GL_ELEMENT_ARRAY_BUFFER, sizeof(uint32_t) * 3, idxs, 0); GLuint program = MakeProgram(common + vertex, common + pixel); - glObjectLabel(GL_PROGRAM, program, -1, "Full program"); while(Running()) {