mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 19:40:10 +01:00
mesa: Add support for asynchronous glDraw* on GL core.
Acked-by: Timothy Arceri <tarceri@itsqueeze.com> Acked-by: Marek Olšák <maraeo@gmail.com> Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de> Tested-by: Mike Lothian <mike@fireburn.co.uk>
This commit is contained in:
parent
b18755a457
commit
43d4f7a227
2 changed files with 6 additions and 7 deletions
|
|
@ -244,6 +244,10 @@ class PrintCode(gl_XML.gl_print_base):
|
|||
self.print_sync_dispatch(func)
|
||||
out('}')
|
||||
|
||||
if func.marshal == 'draw':
|
||||
out('/* We relied on all vertex and index data being in VBOs */')
|
||||
out('assert(ctx->API == API_OPENGL_CORE);')
|
||||
|
||||
out('}')
|
||||
|
||||
def print_async_body(self, func):
|
||||
|
|
|
|||
|
|
@ -64,12 +64,7 @@ class marshal_function(gl_XML.gl_function):
|
|||
client and server threads."""
|
||||
# If a "marshal" attribute was present, that overrides any
|
||||
# determination that would otherwise be made by this function.
|
||||
if self.marshal != None:
|
||||
if self.marshal == 'draw':
|
||||
# TODO: as a temporary measure, do draw functions
|
||||
# synchronously, since they may access client memory
|
||||
# via vertex attribute pointers.
|
||||
return 'sync'
|
||||
if self.marshal not in (None, 'draw'):
|
||||
return self.marshal
|
||||
|
||||
if self.exec_flavor == 'skip':
|
||||
|
|
@ -82,7 +77,7 @@ class marshal_function(gl_XML.gl_function):
|
|||
for p in self.parameters:
|
||||
if p.is_output:
|
||||
return 'sync'
|
||||
if p.is_pointer() and not (p.count or p.counter):
|
||||
if p.is_pointer() and not (p.count or p.counter) and not (self.marshal == 'draw' and p.name == 'indices'):
|
||||
return 'sync'
|
||||
if p.count_parameter_list:
|
||||
# Parameter size is determined by enums; haven't
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue