[Mesa-dev] [PATCH 14/26] mesa: Connect the generated GL command marshalling code to the build.
Steven Newbury
steve at snewbury.org.uk
Fri Feb 10 18:04:46 UTC 2017
On Fri, 2017-02-10 at 17:15 +0000, Emil Velikov wrote:
> On 8 February 2017 at 18:03, Marek Olšák <maraeo at gmail.com> wrote:
> > From: Eric Anholt <eric at anholt.net>
> >
> > v2: Rebase on the Begin/End changes, and just disable this feature
> > on
> > non-GL-core.
> > ---
> > src/mapi/glapi/gen/gl_marshal.py | 10 ++++++++++
> > src/mesa/Makefile.sources | 2 ++
> > src/mesa/main/glthread.c | 25 +++++++++++++++++++++++++
> > 3 files changed, 37 insertions(+)
> >
> > diff --git a/src/mapi/glapi/gen/gl_marshal.py
> > b/src/mapi/glapi/gen/gl_marshal.py
> > index f8dfa00..e4137f4 100644
> > --- a/src/mapi/glapi/gen/gl_marshal.py
> > +++ b/src/mapi/glapi/gen/gl_marshal.py
> > @@ -59,20 +59,30 @@ def indent(delta = 3):
> > class PrintCode(gl_XML.gl_print_base):
> > def __init__(self):
> > super(PrintCode, self).__init__()
> >
> > self.name = 'gl_marshal.py'
> > self.license = license.bsd_license_template % (
> > 'Copyright (C) 2012 Intel Corporation', 'INTEL
> > CORPORATION')
> >
> > def printRealHeader(self):
> > print header
> > + print '#include <X11/Xlib-xcb.h>'
> > + print
> > + print 'static _X_INLINE int safe_mul(int a, int b)'
> > + print '{'
> > + print ' if (a < 0 || b < 0) return -1;'
> > + print ' if (a == 0 || b == 0) return 0;'
> > + print ' if (a > INT_MAX / b) return -1;'
> > + print ' return a * b;'
> > + print '}'
> > + print
> >
>
> Seemingly unrelated hunk ?
>
>
> > --- a/src/mesa/main/glthread.c
> > +++ b/src/mesa/main/glthread.c
> > @@ -47,22 +47,30 @@ glthread_allocate_batch(struct gl_context *ctx)
> > static void
> > glthread_unmarshal_batch(struct gl_context *ctx, struct
> > glthread_batch *batch)
> > {
> > + size_t pos = 0;
> > +
> > _glapi_set_dispatch(ctx->CurrentServerDispatch);
> >
> > + while (pos < batch->used) {
> > + pos += _mesa_unmarshal_dispatch_cmd(ctx, &batch-
> > >buffer[pos]);
> > + }
> > +
>
> Nit: drop the curly brackets.
>
>
> > void
> > _mesa_glthread_init(struct gl_context *ctx)
> > {
> > struct glthread_state *glthread = calloc(1, sizeof(*glthread));
> >
> > if (!glthread)
> > return;
> >
> > + /* The marshalling dispatch table isn't integrated with the
> > Begin/End
> > + * dispatch table for desktop OpenGL, and the drawing functions
> > are
> > + * synchronous to support user vertex arrays on everything but
> > GL core
> > + * (even GLES 2/3) anyway, which means you'll end up with too
> > much overhead
> > + * from threading.
> > + */
> > + if (ctx->API != API_OPENGL_CORE)
> > + return;
>
> Leaking glthread ?
>
This is odd, the version I have locally which I rebased from Marek's
git repo frees glthread.
Marek, what's happened here? Are these patches different from the ones
in your git repo?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170210/a5842d5c/attachment.sig>
More information about the mesa-dev
mailing list