~mmach/netext73/mesa-haswell

« back to all changes in this revision

Viewing changes to src/egl/main/eglglobals.h

  • Committer: mmach
  • Date: 2021-04-17 06:19:36 UTC
  • Revision ID: netbit73@gmail.com-20210417061936-peb5vc5ysl5zeoad
1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**************************************************************************
 
2
 *
 
3
 * Copyright 2008 VMware, Inc.
 
4
 * Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
 
5
 * Copyright 2010-2011 LunarG, Inc.
 
6
 * All Rights Reserved.
 
7
 *
 
8
 * Permission is hereby granted, free of charge, to any person obtaining a
 
9
 * copy of this software and associated documentation files (the
 
10
 * "Software"), to deal in the Software without restriction, including
 
11
 * without limitation the rights to use, copy, modify, merge, publish,
 
12
 * distribute, sub license, and/or sell copies of the Software, and to
 
13
 * permit persons to whom the Software is furnished to do so, subject to
 
14
 * the following conditions:
 
15
 *
 
16
 * The above copyright notice and this permission notice (including the
 
17
 * next paragraph) shall be included in all copies or substantial portions
 
18
 * of the Software.
 
19
 *
 
20
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
21
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
22
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 
23
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
24
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
25
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 
26
 * DEALINGS IN THE SOFTWARE.
 
27
 *
 
28
 **************************************************************************/
 
29
 
 
30
 
 
31
#ifndef EGLGLOBALS_INCLUDED
 
32
#define EGLGLOBALS_INCLUDED
 
33
 
 
34
#include <stdbool.h>
 
35
#include "c11/threads.h"
 
36
 
 
37
#include "egltypedefs.h"
 
38
 
 
39
enum
 
40
{
 
41
    _EGL_DEBUG_BIT_CRITICAL = 0x1,
 
42
    _EGL_DEBUG_BIT_ERROR = 0x2,
 
43
    _EGL_DEBUG_BIT_WARN = 0x4,
 
44
    _EGL_DEBUG_BIT_INFO = 0x8,
 
45
};
 
46
 
 
47
/**
 
48
 * Global library data
 
49
 */
 
50
struct _egl_global
 
51
{
 
52
   mtx_t *Mutex;
 
53
 
 
54
   /* the list of all displays */
 
55
   _EGLDisplay *DisplayList;
 
56
 
 
57
   _EGLDevice *DeviceList;
 
58
 
 
59
   EGLint NumAtExitCalls;
 
60
   void (*AtExitCalls[10])(void);
 
61
 
 
62
   /*
 
63
    * Under libglvnd, the client extension string has to be split into two
 
64
    * strings, one for platform extensions, and one for everything else.
 
65
    * For a non-glvnd build create a concatenated one.
 
66
    */
 
67
#if USE_LIBGLVND
 
68
   const char *ClientOnlyExtensionString;
 
69
   const char *PlatformExtensionString;
 
70
#else
 
71
   const char *ClientExtensionString;
 
72
#endif
 
73
 
 
74
   EGLDEBUGPROCKHR debugCallback;
 
75
   unsigned int debugTypesEnabled;
 
76
};
 
77
 
 
78
 
 
79
extern struct _egl_global _eglGlobal;
 
80
 
 
81
 
 
82
extern void
 
83
_eglAddAtExitCall(void (*func)(void));
 
84
 
 
85
static inline unsigned int DebugBitFromType(EGLenum type)
 
86
{
 
87
   assert(type >= EGL_DEBUG_MSG_CRITICAL_KHR && type <= EGL_DEBUG_MSG_INFO_KHR);
 
88
   return (1 << (type - EGL_DEBUG_MSG_CRITICAL_KHR));
 
89
}
 
90
 
 
91
/**
 
92
 * Perform validity checks on a generic pointer.
 
93
 */
 
94
extern EGLBoolean
 
95
_eglPointerIsDereferencable(void *p);
 
96
 
 
97
#endif /* EGLGLOBALS_INCLUDED */