Stefan Dirsch
5983ad1591
Patch applied upstream for Mesa 9.1, updated patch description OBS-URL: https://build.opensuse.org/request/show/156766 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=272
45 lines
2.2 KiB
Diff
45 lines
2.2 KiB
Diff
From c41ba5bda9bf7b9c818b5a5ca503afedabad57bd Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <Stefan.Bruens@rwth-aachen.de>
|
|
Date: Tue, 5 Feb 2013 17:29:20 +0100
|
|
Subject: [PATCH] glx: fix glGetTexLevelParameteriv for indirect rendering
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
A single element in a GLX reply is contained in the header itself.
|
|
The number of elements is denoted in the "n" field of the reply.
|
|
If "n" is 1, the length of additional data is 0.
|
|
The XXX_data_length() function of xcb does not return the length of
|
|
the (optional, n>1) data but the number of elements.
|
|
|
|
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=59876
|
|
|
|
Note: This is a candidate for the stable branches.
|
|
|
|
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
|
|
Signed-off-by: Brian Paul <brianp@vmware.com>
|
|
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
|
|
(cherry picked from commit 5876a5dbc0a6ec9ae7f44b5e483d38ae0d24a259)
|
|
---
|
|
src/mapi/glapi/gen/glX_proto_send.py | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py
|
|
index fbc0dd3..f4d519f 100644
|
|
--- a/src/mapi/glapi/gen/glX_proto_send.py
|
|
+++ b/src/mapi/glapi/gen/glX_proto_send.py
|
|
@@ -700,7 +700,9 @@ generic_%u_byte( GLint rop, const void * ptr )
|
|
if f.reply_always_array:
|
|
print ' (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
|
|
else:
|
|
- print ' if (%s_data_length(reply) == 0)' % (xcb_name)
|
|
+ print ' /* the XXX_data_length() xcb function name is misleading, it returns the number */'
|
|
+ print ' /* of elements, not the length of the data part. A single element is embedded. */'
|
|
+ print ' if (%s_data_length(reply) == 1)' % (xcb_name)
|
|
print ' (void)memcpy(%s, &reply->datum, sizeof(reply->datum));' % (output.name)
|
|
print ' else'
|
|
print ' (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
|
|
--
|
|
1.7.10.4
|
|
|