This is an automated email from the git hooks/post-receive script.
git pushed a commit to reference refs/pull/114/head
in repository efl.
View the commit online.
commit da8cf4193d338867eee737259507aa21456205e1
Author: [email protected] <[email protected]>
AuthorDate: Wed May 6 11:56:21 2026 -0600
refactor(evas_ector_gl): order pipe[] span fields by size
The span-buffer batching refactor added fields to pipe[].shader and
pipe[].array, but placed them at the end of their respective substructs.
This violates the project convention of size-descending field ordering
to minimize alignment padding.
Reorder pipe[].shader: the 4-byte span SHD_SPAN GLuint fields
(span_fill_tex, span_stroke_tex, span_grad_atlas_tex, span_mask_tex) and
2 floats (span_inv_tw, span_inv_th) move up to the 4-byte int/float
cluster, immediately after cx, cy, cw, ch. Comments travel with them.
Reorder pipe[].array: the 3 span 8-byte pointers (span_vertex_data,
span_vertex_data_size, span_vertex_data_used) move to the pointer cluster,
immediately after im. The 4-byte span_variant enum moves to the int cluster,
after buffer_use. This clustering matches the convention used elsewhere in
the struct and improves readability.
No semantic change; struct size is unchanged on x86_64 (bitfield block
already ended at an 8-byte boundary). Verified: ector 19/0/0, evas 120/0/0.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
---
.../evas/engines/gl_common/evas_gl_common.h | 34 +++++++++++-----------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/src/modules/evas/engines/gl_common/evas_gl_common.h b/src/modules/evas/engines/gl_common/evas_gl_common.h
index c967fa8a35..715249a8ef 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_common.h
+++ b/src/modules/evas/engines/gl_common/evas_gl_common.h
@@ -365,6 +365,15 @@ struct _Evas_Engine_GL_Context
GLuint cur_tex, cur_texu, cur_texv, cur_texa, cur_texm;
int tex_target;
int cx, cy, cw, ch;
+ /* SHD_SPAN: span-lookup shader parameters.
+ * Only the 6 fields used by the merge predicate and flush survive;
+ * all per-shape data now lives in the per-vertex span_vertex_data buffer. */
+ GLuint span_fill_tex; /* pool GL texture for fill spans (0 = none) */
+ GLuint span_stroke_tex; /* pool GL texture for stroke spans (0 = none) */
+ GLuint span_grad_atlas_tex; /* gradient ramp atlas GL texture name */
+ GLuint span_mask_tex; /* mask FBO texture (0 = no mask) */
+ float span_inv_tw; /* 1.0 / pool_width (shared, same pool) */
+ float span_inv_th; /* 1.0 / pool_height */
signed char render_op;
Eina_Bool smooth : 2;
Eina_Bool blend : 2;
@@ -375,15 +384,6 @@ struct _Evas_Engine_GL_Context
Eina_Bool map_nearest : 1;
Eina_Bool map_delete : 1;
} filter;
- /* SHD_SPAN: span-lookup shader parameters.
- * Only the 6 fields used by the merge predicate and flush survive;
- * all per-shape data now lives in the per-vertex span_vertex_data buffer. */
- GLuint span_fill_tex; /* pool GL texture for fill spans (0 = none) */
- GLuint span_stroke_tex; /* pool GL texture for stroke spans (0 = none) */
- GLuint span_grad_atlas_tex; /* gradient ramp atlas GL texture name */
- GLuint span_mask_tex; /* mask FBO texture (0 = no mask) */
- float span_inv_tw; /* 1.0 / pool_width (shared, same pool) */
- float span_inv_th; /* 1.0 / pool_height */
} shader;
struct {
int num, alloc;
@@ -399,9 +399,17 @@ struct _Evas_Engine_GL_Context
int filter_data_count; // number of vec2
GLfloat *filter_data;
Evas_GL_Image *im;
+ /* Span-buffer attribute batching.
+ * Heap-grown interleaved buffer of Span_Vertex_<variant> structs.
+ * 6 vertices per quad (two triangles). Sole source of truth for
+ * span_shader_pipe_flush; array.vertex is not used by span pipes. */
+ void *span_vertex_data; /* heap-grown; NULL until first push */
+ size_t span_vertex_data_size; /* bytes allocated */
+ size_t span_vertex_data_used; /* bytes filled */
GLuint buffer;
int buffer_alloc;
int buffer_use;
+ Span_Variant span_variant; /* SOLID / SOLID_MASK / GRADIENT / GRADIENT_MASK */
Eina_Bool line : 1;
Eina_Bool use_vertex : 1; // true for all non-span pipes
Eina_Bool use_color : 1;
@@ -413,14 +421,6 @@ struct _Evas_Engine_GL_Context
Eina_Bool use_mask : 1;
Eina_Bool use_masksam : 1;
Eina_Bool anti_alias : 1;
- /* Span-buffer attribute batching.
- * Heap-grown interleaved buffer of Span_Vertex_<variant> structs.
- * 6 vertices per quad (two triangles). Sole source of truth for
- * span_shader_pipe_flush; array.vertex is not used by span pipes. */
- void *span_vertex_data; /* heap-grown; NULL until first push */
- size_t span_vertex_data_size; /* bytes allocated */
- size_t span_vertex_data_used; /* bytes filled */
- Span_Variant span_variant; /* SOLID / SOLID_MASK / GRADIENT / GRADIENT_MASK */
} array;
} pipe[MAX_PIPES];
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.