xserver: Branch 'server-21.1-branch'
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sun Sep 1 19:35:45 UTC 2024
glamor/glamor_glyphblt.c | 8 ++++++++
glamor/glamor_text.c | 8 ++++++++
2 files changed, 16 insertions(+)
New commits:
commit 03bbf4b1214b4e9aad153a5969c32264234fe4da
Author: Alexey <fatton2011 at yandex.ru>
Date: Fri Jun 24 15:12:54 2022 +0000
Fixed mirrored glyphs on big-endian machines
(cherry picked from commit 4cf89222701d73d46c098be9fcc8d9eb6d96f885)
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1605>
diff --git a/glamor/glamor_glyphblt.c b/glamor/glamor_glyphblt.c
index 78315ea9b..2e01cdd19 100644
--- a/glamor/glamor_glyphblt.c
+++ b/glamor/glamor_glyphblt.c
@@ -101,7 +101,11 @@ glamor_poly_glyph_blt_gl(DrawablePtr drawable, GCPtr gc,
int pt_x_i = glyph_x + xx;
int pt_y_i = glyph_y + yy;
+#if BITMAP_BIT_ORDER == MSBFirst
+ if (!(*glyph & (128 >> (xx & 7))))
+#else
if (!(*glyph & (1 << (xx & 7))))
+#endif
continue;
if (!RegionContainsPoint(clip, pt_x_i, pt_y_i, NULL))
@@ -208,7 +212,11 @@ glamor_push_pixels_gl(GCPtr gc, PixmapPtr bitmap,
for (yy = 0; yy < h; yy++) {
uint8_t *bitmap_row = bitmap_data + yy * bitmap_stride;
for (xx = 0; xx < w; xx++) {
+#if BITMAP_BIT_ORDER == MSBFirst
+ if (bitmap_row[xx / 8] & (128 >> xx % 8) &&
+#else
if (bitmap_row[xx / 8] & (1 << xx % 8) &&
+#endif
RegionContainsPoint(clip,
x + xx,
y + yy,
diff --git a/glamor/glamor_text.c b/glamor/glamor_text.c
index cf165cad8..e92f55b3c 100644
--- a/glamor/glamor_text.c
+++ b/glamor/glamor_text.c
@@ -235,7 +235,11 @@ static const char fs_vars_text[] =
static const char fs_exec_text[] =
" ivec2 itile_texture = ivec2(glyph_pos);\n"
+#if BITMAP_BIT_ORDER == MSBFirst
+ " uint x = uint(7) - uint(itile_texture.x & 7);\n"
+#else
" uint x = uint(itile_texture.x & 7);\n"
+#endif
" itile_texture.x >>= 3;\n"
" uint texel = texelFetch(font, itile_texture, 0).x;\n"
" uint bit = (texel >> x) & uint(1);\n"
@@ -244,7 +248,11 @@ static const char fs_exec_text[] =
static const char fs_exec_te[] =
" ivec2 itile_texture = ivec2(glyph_pos);\n"
+#if BITMAP_BIT_ORDER == MSBFirst
+ " uint x = uint(7) - uint(itile_texture.x & 7);\n"
+#else
" uint x = uint(itile_texture.x & 7);\n"
+#endif
" itile_texture.x >>= 3;\n"
" uint texel = texelFetch(font, itile_texture, 0).x;\n"
" uint bit = (texel >> x) & uint(1);\n"
More information about the xorg-commit
mailing list