mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 18:48:28 +02:00
glthread: sort variables in marshal structures to pack them optimally
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4758>
This commit is contained in:
parent
6f8a387b37
commit
6215465842
1 changed files with 39 additions and 1 deletions
|
|
@ -143,12 +143,50 @@ class PrintCode(gl_XML.gl_print_base):
|
|||
# Uncomment this if you want to call _mesa_glthread_finish for debugging
|
||||
#out('_mesa_glthread_finish(ctx);')
|
||||
|
||||
def get_type_size(self, str):
|
||||
if str.find('*') != -1:
|
||||
return 8;
|
||||
|
||||
mapping = {
|
||||
'GLboolean': 1,
|
||||
'GLbyte': 1,
|
||||
'GLubyte': 1,
|
||||
'GLenum': 2, # uses GLenum16
|
||||
'GLshort': 2,
|
||||
'GLushort': 2,
|
||||
'GLint': 4,
|
||||
'GLuint': 4,
|
||||
'GLbitfield': 4,
|
||||
'GLsizei': 4,
|
||||
'GLfloat': 4,
|
||||
'GLclampf': 4,
|
||||
'GLfixed': 4,
|
||||
'GLclampx': 4,
|
||||
'GLhandleARB': 4,
|
||||
'int': 4,
|
||||
'float': 4,
|
||||
'GLdouble': 8,
|
||||
'GLclampd': 8,
|
||||
'GLintptr': 8,
|
||||
'GLsizeiptr': 8,
|
||||
'GLint64': 8,
|
||||
'GLuint64': 8,
|
||||
'GLuint64EXT': 8,
|
||||
'GLsync': 8,
|
||||
}
|
||||
val = mapping.get(str, 9999)
|
||||
if val == 9999:
|
||||
print('Unhandled type in gl_marshal.py.get_type_size: ' + str, file=sys.stderr)
|
||||
return val
|
||||
|
||||
def print_async_struct(self, func):
|
||||
out('struct marshal_cmd_{0}'.format(func.name))
|
||||
out('{')
|
||||
with indent():
|
||||
out('struct marshal_cmd_base cmd_base;')
|
||||
for p in func.fixed_params:
|
||||
|
||||
# Sort the parameters according to their size to pack the structure optimally
|
||||
for p in sorted(func.fixed_params, key=lambda p: self.get_type_size(p.type_string())):
|
||||
if p.count:
|
||||
out('{0} {1}[{2}];'.format(
|
||||
p.get_base_type_string(), p.name, p.count))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue