From 2b5746a1fcc410a31e68f742c9c08f1f201f43d6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 20 Jun 2023 20:52:59 +0530 Subject: [PATCH] DRYer --- kitty/graphics_fragment.glsl | 5 ++++- kitty/graphics_vertex.glsl | 1 + kitty/shaders.c | 9 ++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/kitty/graphics_fragment.glsl b/kitty/graphics_fragment.glsl index 95ce0cbbb..b4562b379 100644 --- a/kitty/graphics_fragment.glsl +++ b/kitty/graphics_fragment.glsl @@ -1,3 +1,5 @@ +#extension GL_ARB_explicit_attrib_location : require +#extension GL_ARB_explicit_uniform_location : require #pragma kitty_include_shader #define ALPHA_TYPE @@ -6,7 +8,8 @@ uniform sampler2D image; uniform vec3 amask_fg; uniform vec4 amask_bg_premult; #else -uniform float inactive_text_alpha; +// Have to use fixed locations here as all non-alpha mask variants of the program share the same uniform +layout(location=3000) uniform float inactive_text_alpha; #endif in vec2 texcoord; diff --git a/kitty/graphics_vertex.glsl b/kitty/graphics_vertex.glsl index 3319f841a..482a6acf2 100644 --- a/kitty/graphics_vertex.glsl +++ b/kitty/graphics_vertex.glsl @@ -1,4 +1,5 @@ #extension GL_ARB_explicit_attrib_location : require +#extension GL_ARB_explicit_uniform_location : require // Have to use fixed locations here as all variants of the program share the same VAO layout(location=0) in vec4 src; diff --git a/kitty/shaders.c b/kitty/shaders.c index 3f68629ed..2f09e25a6 100644 --- a/kitty/shaders.c +++ b/kitty/shaders.c @@ -273,7 +273,7 @@ create_graphics_vao(void) { struct CellUniformData { bool constants_set; - GLint gploc, gpploc, cploc, cfploc, fg_loc, amask_bg_premult_loc, amask_fg_loc, amask_image_loc; + GLint gploc, cploc, cfploc, fg_loc, amask_bg_premult_loc, amask_fg_loc, amask_image_loc; GLfloat prev_inactive_text_alpha; }; @@ -574,7 +574,6 @@ static void set_cell_uniforms(float current_inactive_text_alpha, bool force) { if (!cell_uniform_data.constants_set || force) { cell_uniform_data.gploc = glGetUniformLocation(program_id(GRAPHICS_PROGRAM), "inactive_text_alpha"); - cell_uniform_data.gpploc = glGetUniformLocation(program_id(GRAPHICS_PREMULT_PROGRAM), "inactive_text_alpha"); cell_uniform_data.cploc = glGetUniformLocation(program_id(CELL_PROGRAM), "inactive_text_alpha"); cell_uniform_data.cfploc = glGetUniformLocation(program_id(CELL_FG_PROGRAM), "inactive_text_alpha"); cell_uniform_data.amask_bg_premult_loc = glGetUniformLocation(program_id(GRAPHICS_ALPHA_MASK_PROGRAM), "amask_bg_premult"); @@ -600,7 +599,7 @@ set_cell_uniforms(float current_inactive_text_alpha, bool force) { if (current_inactive_text_alpha != cell_uniform_data.prev_inactive_text_alpha || force) { cell_uniform_data.prev_inactive_text_alpha = current_inactive_text_alpha; #define S(prog, loc) { bind_program(prog); glUniform1f(cell_uniform_data.loc, current_inactive_text_alpha); } - S(CELL_PROGRAM, cploc); S(CELL_FG_PROGRAM, cfploc); S(GRAPHICS_PROGRAM, gploc); S(GRAPHICS_PREMULT_PROGRAM, gpploc); + S(CELL_PROGRAM, cploc); S(CELL_FG_PROGRAM, cfploc); S(GRAPHICS_PROGRAM, gploc); #undef S } } @@ -692,9 +691,9 @@ draw_window_logo(ssize_t vao_idx, OSWindow *os_window, const WindowLogoRenderDat gpu_data_for_image(&ird, logo_left_gl, logo_top_gl, logo_left_gl + logo_width_gl, logo_top_gl - logo_height_gl); send_graphics_data_to_gpu(1, os_window->gvao_idx, &ird); bind_program(GRAPHICS_PREMULT_PROGRAM); - glUniform1f(cell_uniform_data.gpploc, cell_uniform_data.prev_inactive_text_alpha * wl->alpha); + glUniform1f(cell_uniform_data.gploc, cell_uniform_data.prev_inactive_text_alpha * wl->alpha); draw_graphics(GRAPHICS_PREMULT_PROGRAM, vao_idx, os_window->gvao_idx, &ird, 0, 1); - glUniform1f(cell_uniform_data.gpploc, cell_uniform_data.prev_inactive_text_alpha); + glUniform1f(cell_uniform_data.gploc, cell_uniform_data.prev_inactive_text_alpha); } static void