Skip to content

Commit 5d7f10d

Browse files
committed
Add utility function for assigning labels to OpenGL objects
1 parent 9013d39 commit 5d7f10d

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

code/graphics/opengl/gropengl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1658,6 +1658,11 @@ void gr_opengl_pop_debug_group() {
16581658
glPopDebugGroup();
16591659
}
16601660
}
1661+
void opengl_set_object_label(GLenum type, GLuint handle, const SCP_string& name) {
1662+
if (GLAD_GL_KHR_debug) {
1663+
glObjectLabelKHR(type, handle, (GLsizei) name.size(), name.c_str());
1664+
}
1665+
}
16611666

16621667
uint opengl_data_type_size(GLenum data_type)
16631668
{

code/graphics/opengl/gropengl.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@ int opengl_check_for_errors(const char *err_at = NULL);
2424
bool gr_opengl_is_capable(gr_capability capability);
2525
void gr_opengl_push_debug_group(const char* name);
2626
void gr_opengl_pop_debug_group();
27+
28+
/**
29+
* @brief Assigns a string name to the specified handle
30+
* @details This uses @c GL_KHR_debug for assigning a human readable name to an OpenGL object. This can help with debugging
31+
* since it makes it easier to identify which object is currently being used.
32+
* @param type The type of the handle, e.g. GL_FRAMEBUFFER
33+
* @param handle The handle of the object
34+
* @param name The name of the object
35+
*/
36+
void opengl_set_object_label(GLenum type, GLuint handle, const SCP_string& name);
37+
2738
uint opengl_data_type_size(GLenum data_type);
2839

2940
#ifndef NDEBUG

code/graphics/opengl/gropengldraw.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1577,7 +1577,7 @@ void opengl_setup_scene_textures()
15771577
// create framebuffer
15781578
glGenFramebuffers(1, &Scene_framebuffer);
15791579
GL_state.BindFrameBuffer(Scene_framebuffer);
1580-
glObjectLabelKHR(GL_FRAMEBUFFER, Scene_framebuffer, -1, "Scene framebuffer");
1580+
opengl_set_object_label(GL_FRAMEBUFFER, Scene_framebuffer, "Scene framebuffer");
15811581

15821582
// setup main render texture
15831583

@@ -1597,7 +1597,7 @@ void opengl_setup_scene_textures()
15971597
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, Scene_texture_width, Scene_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
15981598

15991599
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, Scene_color_texture, 0);
1600-
glObjectLabelKHR(GL_TEXTURE, Scene_color_texture, -1, "Scene color texture");
1600+
opengl_set_object_label(GL_TEXTURE, Scene_color_texture, "Scene color texture");
16011601

16021602
// setup low dynamic range color texture
16031603
glGenTextures(1, &Scene_ldr_texture);
@@ -1613,7 +1613,7 @@ void opengl_setup_scene_textures()
16131613
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
16141614

16151615
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, Scene_texture_width, Scene_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
1616-
glObjectLabelKHR(GL_TEXTURE, Scene_ldr_texture, -1, "Scene LDR texture");
1616+
opengl_set_object_label(GL_TEXTURE, Scene_ldr_texture, "Scene LDR texture");
16171617

16181618
// setup position render texture
16191619
glGenTextures(1, &Scene_position_texture);
@@ -1629,7 +1629,7 @@ void opengl_setup_scene_textures()
16291629
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
16301630

16311631
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, Scene_texture_width, Scene_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
1632-
glObjectLabelKHR(GL_TEXTURE, Scene_position_texture, -1, "Scene Position texture");
1632+
opengl_set_object_label(GL_TEXTURE, Scene_position_texture, "Scene Position texture");
16331633

16341634
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, Scene_position_texture, 0);
16351635

@@ -1647,7 +1647,7 @@ void opengl_setup_scene_textures()
16471647
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
16481648

16491649
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, Scene_texture_width, Scene_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
1650-
glObjectLabelKHR(GL_TEXTURE, Scene_normal_texture, -1, "Scene Normal texture");
1650+
opengl_set_object_label(GL_TEXTURE, Scene_normal_texture, "Scene Normal texture");
16511651

16521652
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT2, GL_TEXTURE_2D, Scene_normal_texture, 0);
16531653

@@ -1665,7 +1665,7 @@ void opengl_setup_scene_textures()
16651665
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
16661666

16671667
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, Scene_texture_width, Scene_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
1668-
glObjectLabelKHR(GL_TEXTURE, Scene_specular_texture, -1, "Scene Specular texture");
1668+
opengl_set_object_label(GL_TEXTURE, Scene_specular_texture, "Scene Specular texture");
16691669

16701670
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT3, GL_TEXTURE_2D, Scene_specular_texture, 0);
16711671

@@ -1684,7 +1684,7 @@ void opengl_setup_scene_textures()
16841684
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
16851685

16861686
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, Scene_texture_width, Scene_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
1687-
glObjectLabelKHR(GL_TEXTURE, Scene_luminance_texture, -1, "Scene Luminance texture");
1687+
opengl_set_object_label(GL_TEXTURE, Scene_luminance_texture, "Scene Luminance texture");
16881688

16891689
// setup effect texture
16901690

@@ -1701,7 +1701,7 @@ void opengl_setup_scene_textures()
17011701
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
17021702

17031703
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, Scene_texture_width, Scene_texture_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
1704-
glObjectLabelKHR(GL_TEXTURE, Scene_effect_texture, -1, "Scene Effect texture");
1704+
opengl_set_object_label(GL_TEXTURE, Scene_effect_texture, "Scene Effect texture");
17051705

17061706
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT4, GL_TEXTURE_2D, Scene_effect_texture, 0);
17071707

@@ -1720,7 +1720,7 @@ void opengl_setup_scene_textures()
17201720
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
17211721

17221722
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, Scene_texture_width, Scene_texture_height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
1723-
glObjectLabelKHR(GL_TEXTURE, Cockpit_depth_texture, -1, "Cockpit depth texture");
1723+
opengl_set_object_label(GL_TEXTURE, Cockpit_depth_texture, "Cockpit depth texture");
17241724

17251725
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, Cockpit_depth_texture, 0);
17261726
gr_zbuffer_set(GR_ZBUFF_FULL);
@@ -1741,7 +1741,7 @@ void opengl_setup_scene_textures()
17411741
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
17421742

17431743
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, Scene_texture_width, Scene_texture_height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
1744-
glObjectLabelKHR(GL_TEXTURE, Scene_depth_texture, -1, "Scene depth texture");
1744+
opengl_set_object_label(GL_TEXTURE, Scene_depth_texture, "Scene depth texture");
17451745
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, Scene_depth_texture, 0);
17461746

17471747
//setup main stencil buffer

0 commit comments

Comments
 (0)