[Mesa-dev] [PATCH 02/11] mesa/glthread: remove HAVE_PTHREAD guards

Kyriazis, George george.kyriazis at intel.com
Mon Jun 26 21:09:13 UTC 2017


I can verify that the fix works.

Thank you!

George

> On Jun 26, 2017, at 3:24 PM, Marek Olšák <maraeo at gmail.com> wrote:
> 
> I just pushed the fix.
> 
> Marek
> 
> On Mon, Jun 26, 2017 at 10:01 PM, Kyriazis, George
> <george.kyriazis at intel.com> wrote:
>> Marek
>> 
>> Our windows mesa build broke with your checkin: "mesa/glthread: remove HAVE_PTHREAD guards”.
>> 
>> Namely:
>> 
>>  Compiling src\mesa\main\context.c ...
>> context.c
>> c:\users\gkyriazi\src\mesa\src\mesa\main\glthread.h(34): fatal error C1083: Cannot open include file: 'pthread.h': No such file or directory
>> scons: *** [build\windows-x86_64-debug\mesa\main\context.obj] Error 2
>> scons: building terminated because of errors.
>> 
>> Ideas?
>> 
>> George
>> 
>>> On Jun 21, 2017, at 8:02 PM, Marek Olšák <maraeo at gmail.com> wrote:
>>> 
>>> From: Marek Olšák <marek.olsak at amd.com>
>>> 
>>> we are switching to util_queue.
>>> ---
>>> src/mapi/glapi/gen/gl_marshal.py |  5 +----
>>> src/mesa/main/glthread.c         |  4 ----
>>> src/mesa/main/glthread.h         | 30 ------------------------------
>>> src/mesa/main/marshal.c          |  4 ----
>>> src/mesa/main/marshal.h          | 27 ---------------------------
>>> 5 files changed, 1 insertion(+), 69 deletions(-)
>>> 
>>> diff --git a/src/mapi/glapi/gen/gl_marshal.py b/src/mapi/glapi/gen/gl_marshal.py
>>> index f52b9b7..062afe5 100644
>>> --- a/src/mapi/glapi/gen/gl_marshal.py
>>> +++ b/src/mapi/glapi/gen/gl_marshal.py
>>> @@ -59,34 +59,31 @@ 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 '#ifdef HAVE_PTHREAD'
>>> -        print
>>>        print 'static 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
>>> 
>>>    def printRealFooter(self):
>>> -        print
>>> -        print '#endif'
>>> +        pass
>>> 
>>>    def print_sync_call(self, func):
>>>        call = 'CALL_{0}(ctx->CurrentServerDispatch, ({1}))'.format(
>>>            func.name, func.get_called_parameter_string())
>>>        if func.return_type == 'void':
>>>            out('{0};'.format(call))
>>>        else:
>>>            out('return {0};'.format(call))
>>> 
>>>    def print_sync_dispatch(self, func):
>>> diff --git a/src/mesa/main/glthread.c b/src/mesa/main/glthread.c
>>> index 455b829..e90709c 100644
>>> --- a/src/mesa/main/glthread.c
>>> +++ b/src/mesa/main/glthread.c
>>> @@ -31,22 +31,20 @@
>>> * quickly logs the GL commands to a buffer to be processed by a worker
>>> * thread.
>>> */
>>> 
>>> #include "main/mtypes.h"
>>> #include "main/glthread.h"
>>> #include "main/marshal.h"
>>> #include "main/marshal_generated.h"
>>> #include "util/u_thread.h"
>>> 
>>> -#ifdef HAVE_PTHREAD
>>> -
>>> static void
>>> glthread_allocate_batch(struct gl_context *ctx)
>>> {
>>>   struct glthread_state *glthread = ctx->GLThread;
>>> 
>>>   /* TODO: handle memory allocation failure. */
>>>   glthread->batch = malloc(sizeof(*glthread->batch));
>>>   if (!glthread->batch)
>>>      return;
>>>   memset(glthread->batch, 0, offsetof(struct glthread_batch, buffer));
>>> @@ -277,12 +275,10 @@ _mesa_glthread_finish(struct gl_context *ctx)
>>>         _glapi_set_dispatch(dispatch);
>>>      }
>>>   } else {
>>>      _mesa_glthread_flush_batch_locked(ctx);
>>>      while (glthread->batch_queue || glthread->busy)
>>>         pthread_cond_wait(&glthread->work_done, &glthread->mutex);
>>>   }
>>> 
>>>   pthread_mutex_unlock(&glthread->mutex);
>>> }
>>> -
>>> -#endif
>>> diff --git a/src/mesa/main/glthread.h b/src/mesa/main/glthread.h
>>> index 50c1db2..07bed38 100644
>>> --- a/src/mesa/main/glthread.h
>>> +++ b/src/mesa/main/glthread.h
>>> @@ -22,22 +22,20 @@
>>> */
>>> 
>>> #ifndef _GLTHREAD_H
>>> #define _GLTHREAD_H
>>> 
>>> #include "main/mtypes.h"
>>> 
>>> /* Command size is a number of bytes stored in a short. */
>>> #define MARSHAL_MAX_CMD_SIZE 65535
>>> 
>>> -#ifdef HAVE_PTHREAD
>>> -
>>> #include <inttypes.h>
>>> #include <stdbool.h>
>>> #include <pthread.h>
>>> 
>>> enum marshal_dispatch_cmd_id;
>>> 
>>> struct glthread_state
>>> {
>>>   /** The worker thread that asynchronously processes our GL commands. */
>>>   pthread_t thread;
>>> @@ -117,39 +115,11 @@ struct glthread_batch
>>>   uint8_t buffer[MARSHAL_MAX_CMD_SIZE];
>>> };
>>> 
>>> void _mesa_glthread_init(struct gl_context *ctx);
>>> void _mesa_glthread_destroy(struct gl_context *ctx);
>>> 
>>> void _mesa_glthread_restore_dispatch(struct gl_context *ctx);
>>> void _mesa_glthread_flush_batch(struct gl_context *ctx);
>>> void _mesa_glthread_finish(struct gl_context *ctx);
>>> 
>>> -#else /* HAVE_PTHREAD */
>>> -
>>> -static inline void
>>> -_mesa_glthread_init(struct gl_context *ctx)
>>> -{
>>> -}
>>> -
>>> -static inline void
>>> -_mesa_glthread_destroy(struct gl_context *ctx)
>>> -{
>>> -}
>>> -
>>> -static inline void
>>> -_mesa_glthread_finish(struct gl_context *ctx)
>>> -{
>>> -}
>>> -
>>> -static inline void
>>> -_mesa_glthread_restore_dispatch(struct gl_context *ctx)
>>> -{
>>> -}
>>> -
>>> -static inline void
>>> -_mesa_glthread_flush_batch(struct gl_context *ctx)
>>> -{
>>> -}
>>> -
>>> -#endif /* !HAVE_PTHREAD */
>>> #endif /* _GLTHREAD_H*/
>>> diff --git a/src/mesa/main/marshal.c b/src/mesa/main/marshal.c
>>> index ae4efb5..4840f32 100644
>>> --- a/src/mesa/main/marshal.c
>>> +++ b/src/mesa/main/marshal.c
>>> @@ -26,22 +26,20 @@
>>> * Custom functions for marshalling GL calls from the main thread to a worker
>>> * thread when automatic code generation isn't appropriate.
>>> */
>>> 
>>> #include "main/enums.h"
>>> #include "main/macros.h"
>>> #include "marshal.h"
>>> #include "dispatch.h"
>>> #include "marshal_generated.h"
>>> 
>>> -#ifdef HAVE_PTHREAD
>>> -
>>> struct marshal_cmd_Flush
>>> {
>>>   struct marshal_cmd_base cmd_base;
>>> };
>>> 
>>> 
>>> void
>>> _mesa_unmarshal_Flush(struct gl_context *ctx,
>>>                      const struct marshal_cmd_Flush *cmd)
>>> {
>>> @@ -474,12 +472,10 @@ _mesa_marshal_ClearBufferfv(GLenum buffer, GLint drawbuffer,
>>>         *variable_data = *value;
>>> 
>>>      _mesa_post_marshal_hook(ctx);
>>>   } else {
>>>      debug_print_sync("ClearBufferfv");
>>>      _mesa_glthread_finish(ctx);
>>>      CALL_ClearBufferfv(ctx->CurrentServerDispatch,
>>>                         (buffer, drawbuffer, value));
>>>   }
>>> }
>>> -
>>> -#endif
>>> diff --git a/src/mesa/main/marshal.h b/src/mesa/main/marshal.h
>>> index 4842d27..e9ecaf9 100644
>>> --- a/src/mesa/main/marshal.h
>>> +++ b/src/mesa/main/marshal.h
>>> @@ -40,22 +40,20 @@ struct marshal_cmd_base
>>>    * Type of command.  See enum marshal_dispatch_cmd_id.
>>>    */
>>>   uint16_t cmd_id;
>>> 
>>>   /**
>>>    * Size of command, in multiples of 4 bytes, including cmd_base.
>>>    */
>>>   uint16_t cmd_size;
>>> };
>>> 
>>> -#ifdef HAVE_PTHREAD
>>> -
>>> static inline void *
>>> _mesa_glthread_allocate_command(struct gl_context *ctx,
>>>                                uint16_t cmd_id,
>>>                                size_t size)
>>> {
>>>   struct glthread_state *glthread = ctx->GLThread;
>>>   struct marshal_cmd_base *cmd_base;
>>>   const size_t aligned_size = ALIGN(size, 8);
>>> 
>>>   if (unlikely(glthread->batch->used + size > MARSHAL_MAX_CMD_SIZE))
>>> @@ -87,45 +85,20 @@ _mesa_glthread_is_non_vbo_vertex_attrib_pointer(const struct gl_context *ctx)
>>> * calls (deprecated and removed in GL core), we just disable threading.
>>> */
>>> static inline bool
>>> _mesa_glthread_is_non_vbo_draw_elements(const struct gl_context *ctx)
>>> {
>>>   struct glthread_state *glthread = ctx->GLThread;
>>> 
>>>   return ctx->API != API_OPENGL_CORE && !glthread->element_array_is_vbo;
>>> }
>>> 
>>> -#else
>>> -
>>> -/* FIXME: dummy functions for non PTHREAD platforms */
>>> -static inline void *
>>> -_mesa_glthread_allocate_command(struct gl_context *ctx,
>>> -                                uint16_t cmd_id,
>>> -                                size_t size)
>>> -{
>>> -   return NULL;
>>> -}
>>> -
>>> -static inline bool
>>> -_mesa_glthread_is_non_vbo_vertex_attrib_pointer(const struct gl_context *ctx)
>>> -{
>>> -   return false;
>>> -}
>>> -
>>> -static inline bool
>>> -_mesa_glthread_is_non_vbo_draw_elements(const struct gl_context *ctx)
>>> -{
>>> -   return false;
>>> -}
>>> -
>>> -#endif
>>> -
>>> #define DEBUG_MARSHAL_PRINT_CALLS 0
>>> 
>>> /**
>>> * This is printed when we have fallen back to a sync. This can happen when
>>> * MARSHAL_MAX_CMD_SIZE is exceeded.
>>> */
>>> static inline void
>>> debug_print_sync_fallback(const char *func)
>>> {
>>> #if DEBUG_MARSHAL_PRINT_CALLS
>>> --
>>> 2.7.4
>>> 
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>> 



More information about the mesa-dev mailing list