GPU: replace GLEW with libepoxy

With libepoxy we can choose between EGL and GLX at runtime, as well as
dynamically open EGL and GLX libraries without linking to them.

This will make it possible to build with Wayland, EGL, GLVND support while
still running on systems that only have X11, GLX and libGL. It also paves
the way for headless rendering through EGL.

libepoxy is a new library dependency, and is included in the precompiled
libraries. GLEW is no longer a dependency, and WITH_SYSTEM_GLEW was removed.

Includes contributions by Brecht Van Lommel, Ray Molenkamp, Campbell Barton
and Sergey Sharybin.

Ref T76428

Differential Revision: https://developer.blender.org/D15291
This commit is contained in:
2022-08-15 14:58:04 +02:00
committed by Brecht Van Lommel
parent 90be364ca9
commit a296b8f694
141 changed files with 528 additions and 98305 deletions

View File

@@ -10,7 +10,6 @@ set(INC
../imbuf
../makesdna
../makesrna
../../../intern/glew-mx
../../../intern/guardedalloc
)

View File

@@ -25,7 +25,6 @@ set(INC
../simulation
../../../intern/eigen
../../../intern/ghost
../../../intern/glew-mx
../../../intern/guardedalloc
../../../intern/iksolver/extern
../../../intern/atomic

View File

@@ -28,7 +28,6 @@ set(INC
../../../intern/atomic
../../../intern/clog
../../../intern/glew-mx
../../../intern/guardedalloc
../../../intern/opensubdiv

View File

@@ -12,7 +12,6 @@ set(INC
../../sequencer
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -14,7 +14,6 @@ set(INC
../../windowmanager
../../../../intern/clog
../../../../intern/eigen
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -11,7 +11,6 @@ set(INC
../../makesrna
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
../../../../extern/curve_fit_nd
# RNA_prototypes.h

View File

@@ -13,7 +13,6 @@ set(INC
../../windowmanager
../../../../intern/clog
../../../../intern/eigen
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -12,7 +12,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
../../bmesh
# RNA_prototypes.h

View File

@@ -19,7 +19,6 @@ set(INC
../../python
../../render
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
../../bmesh
# RNA_prototypes.h

View File

@@ -10,7 +10,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
)

View File

@@ -17,7 +17,6 @@ set(INC
../../render
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -21,7 +21,6 @@ set(INC
../../shader_fx
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
# dna_type_offsets.h in BLO_read_write.h

View File

@@ -11,7 +11,6 @@ set(INC
../../makesrna
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
../../../../intern/mantaflow/extern
# RNA_prototypes.h

View File

@@ -17,7 +17,6 @@ set(INC
../../render
../../sequencer
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -15,7 +15,6 @@ set(INC
../../makesrna
../../sequencer
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -21,7 +21,6 @@ set(INC
../../../../intern/atomic
../../../../intern/clog
../../../../intern/eigen
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -10,7 +10,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -9,7 +9,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
../../bmesh
# RNA_prototypes.h

View File

@@ -13,7 +13,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# dna_type_offsets.h

View File

@@ -9,7 +9,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
)

View File

@@ -15,7 +15,6 @@ set(INC
../../render
../../windowmanager
../../../../intern/atomic
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -10,7 +10,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -16,7 +16,6 @@ set(INC
../../render
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -14,7 +14,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -10,7 +10,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -17,7 +17,6 @@ set(INC
../../nodes
../../render
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -13,7 +13,6 @@ set(INC
../../sequencer
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -8,7 +8,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
)

View File

@@ -15,7 +15,6 @@ set(INC
../../sequencer
../../windowmanager
../../../../intern/atomic
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -14,7 +14,6 @@ set(INC
../../makesrna
../../nodes
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -10,7 +10,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -10,7 +10,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
)

View File

@@ -10,7 +10,6 @@ set(INC
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -15,7 +15,6 @@ set(INC
../../makesrna
../../render
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
../../../../intern/mantaflow/extern

View File

@@ -15,7 +15,6 @@ set(INC
../../render
../../sequencer
../../windowmanager
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -16,7 +16,6 @@ set(INC
../../sequencer
../../windowmanager
../../../../intern/clog
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -13,7 +13,6 @@ set(INC
../../makesrna
../../windowmanager
../../../../intern/eigen
../../../../intern/glew-mx
../../../../intern/guardedalloc
# RNA_prototypes.h
${CMAKE_BINARY_DIR}/source/blender/makesrna

View File

@@ -548,7 +548,6 @@ set(INC
../python/intern
../render
../render/intern
../../../extern/glew/include
../../../intern/guardedalloc
# RNA_prototypes.h

View File

@@ -34,13 +34,12 @@ set(INC
../../../intern/atomic
../../../intern/clog
../../../intern/ghost
../../../intern/glew-mx
../../../intern/guardedalloc
../../../intern/mantaflow/extern
)
set(INC_SYS
${GLEW_INCLUDE_PATH}
${Epoxy_INCLUDE_DIRS}
)
set(SRC
@@ -93,12 +92,10 @@ set(SRC
GPU_debug.h
GPU_drawlist.h
GPU_framebuffer.h
GPU_glew.h
GPU_immediate.h
GPU_immediate_util.h
GPU_index_buffer.h
GPU_init_exit.h
GPU_legacy_stubs.h
GPU_material.h
GPU_matrix.h
GPU_platform.h
@@ -225,14 +222,9 @@ endif()
set(LIB
${BLENDER_GL_LIBRARIES}
${Epoxy_LIBRARIES}
)
if(NOT WITH_SYSTEM_GLEW)
list(APPEND LIB
${BLENDER_GLEW_LIBRARIES}
)
endif()
set(MSL_SRC
metal/kernels/compute_texture_update.msl

View File

@@ -1,15 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright 2012 Blender Foundation. All rights reserved. */
/** \file
* \ingroup gpu
*/
#pragma once
#if defined(WITH_OPENGL)
# include "glew-mx.h"
# ifndef WITH_LEGACY_OPENGL
# include "GPU_legacy_stubs.h"
# endif
#endif

View File

@@ -1,497 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright 2017 Blender Foundation. All rights reserved. */
/** \file
* \ingroup gpu
*
* This is to mark the transition to OpenGL core profile
* The idea is to allow Blender 2.8 to be built with OpenGL 3.3 even if it means breaking things
*
* This file should be removed in the future
*/
#pragma once
#if defined(__GNUC__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wunused-parameter"
# pragma GCC diagnostic ignored "-Wunused-function"
#endif
#include <stdlib.h> /* for abort(). */
#include "BLI_utildefines.h"
/**
* Empty function, use for break-point when a deprecated
* OpenGL function is called.
*/
static void gl_deprecated(void)
{
BLI_assert(true);
}
#define _GL_BOOL BLI_INLINE GLboolean
#define _GL_BOOL_RET \
{ \
gl_deprecated(); \
return false; \
}
#define _GL_ENUM BLI_INLINE GLenum
#define _GL_ENUM_RET \
{ \
gl_deprecated(); \
return 0; \
}
#define _GL_INT BLI_INLINE GLint
#define _GL_INT_RET \
{ \
gl_deprecated(); \
return 0; \
}
#define _GL_UINT BLI_INLINE GLuint
#define _GL_UINT_RET \
{ \
gl_deprecated(); \
return 0; \
}
#define _GL_VOID BLI_INLINE void
#define _GL_VOID_RET \
{ \
gl_deprecated(); \
}
static bool disable_enable_check(GLenum cap)
{
const bool is_deprecated = ELEM(cap,
GL_ALPHA_TEST,
GL_LINE_STIPPLE,
GL_POINT_SPRITE,
GL_TEXTURE_1D,
GL_TEXTURE_2D,
GL_TEXTURE_GEN_S,
GL_TEXTURE_GEN_T,
-1);
if (is_deprecated) {
gl_deprecated();
}
return is_deprecated;
}
_GL_VOID USE_CAREFULLY_glDisable(GLenum cap)
{
if (!disable_enable_check(cap)) {
glDisable(cap);
}
}
#define glDisable USE_CAREFULLY_glDisable
_GL_VOID USE_CAREFULLY_glEnable(GLenum cap)
{
if (!disable_enable_check(cap)) {
glEnable(cap);
}
}
#define glEnable USE_CAREFULLY_glEnable
/**
* Hand written cases
*/
_GL_VOID DO_NOT_USE_glClientActiveTexture(GLenum texture) _GL_VOID_RET
/**
* List automatically generated from `gl-deprecated.h` and `glew.h`
*/
/**
* ENUM values
*/
#define DO_NOT_USE_GL_CURRENT_FOG_COORDINATE 0
#define DO_NOT_USE_GL_FOG_COORDINATE 0
#define DO_NOT_USE_GL_FOG_COORDINATE_ARRAY 0
#define DO_NOT_USE_GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0
#define DO_NOT_USE_GL_FOG_COORDINATE_ARRAY_POINTER 0
#define DO_NOT_USE_GL_FOG_COORDINATE_ARRAY_STRIDE 0
#define DO_NOT_USE_GL_FOG_COORDINATE_ARRAY_TYPE 0
#define DO_NOT_USE_GL_FOG_COORDINATE_SOURCE 0
#define DO_NOT_USE_GL_POINT_SIZE_GRANULARITY 0
#define DO_NOT_USE_GL_POINT_SIZE_RANGE 0
#define DO_NOT_USE_GL_SOURCE0_ALPHA 0
#define DO_NOT_USE_GL_SOURCE0_RGB 0
#define DO_NOT_USE_GL_SOURCE1_ALPHA 0
#define DO_NOT_USE_GL_SOURCE1_RGB 0
#define DO_NOT_USE_GL_SOURCE2_ALPHA 0
#define DO_NOT_USE_GL_SOURCE2_RGB 0
/**
* Functions
*/
_GL_VOID DO_NOT_USE_glAccum(GLenum op, GLfloat value) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glAlphaFunc(GLenum func, GLclampf ref) _GL_VOID_RET _GL_BOOL
DO_NOT_USE_glAreTexturesResident(GLsizei n,
const GLuint *textures,
GLboolean *residences) _GL_BOOL_RET _GL_VOID
DO_NOT_USE_glArrayElement(GLint i) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glBegin(GLenum mode) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glBitmap(GLsizei width,
GLsizei height,
GLfloat xorig,
GLfloat yorig,
GLfloat xmove,
GLfloat ymove,
const GLubyte *bitmap) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glCallList(GLuint list) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glCallLists(GLsizei n, GLenum type, const void *lists) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glClearIndex(GLfloat c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glClipPlane(GLenum plane, const GLdouble *equation) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3b(GLbyte red, GLbyte green, GLbyte blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3bv(const GLbyte *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3d(GLdouble red, GLdouble green, GLdouble blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3f(GLfloat red, GLfloat green, GLfloat blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3i(GLint red, GLint green, GLint blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3s(GLshort red, GLshort green, GLshort blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3ub(GLubyte red, GLubyte green, GLubyte blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3ubv(const GLubyte *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3ui(GLuint red, GLuint green, GLuint blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3uiv(const GLuint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3us(GLushort red, GLushort green, GLushort blue) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor3usv(const GLushort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4bv(const GLbyte *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glColor4dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glColor4fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4i(GLint red, GLint green, GLint blue, GLint alpha) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glColor4sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glColor4ubv(const GLubyte *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glColor4uiv(const GLuint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glColor4usv(const GLushort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColorMaterial(GLenum face, GLenum mode) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
_GL_VOID_RET _GL_VOID
DO_NOT_USE_glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
_GL_VOID_RET _GL_VOID
DO_NOT_USE_glDeleteLists(GLuint list, GLsizei range) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glDisableClientState(GLenum array) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glDrawPixels(GLsizei width,
GLsizei height,
GLenum format,
GLenum type,
const void *pixels) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEdgeFlag(GLboolean flag) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEdgeFlagPointer(GLsizei stride, const void *pointer) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEdgeFlagv(const GLboolean *flag) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEnableClientState(GLenum array) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEnd(void) _GL_VOID_RET _GL_VOID DO_NOT_USE_glEndList(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord1d(GLdouble u) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord1dv(const GLdouble *u) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord1f(GLfloat u) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord1fv(const GLfloat *u) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord2d(GLdouble u, GLdouble v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord2dv(const GLdouble *u) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord2f(GLfloat u, GLfloat v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalCoord2fv(const GLfloat *u) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalMesh1(GLenum mode, GLint i1, GLint i2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
_GL_VOID_RET _GL_VOID DO_NOT_USE_glEvalPoint1(GLint i) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glEvalPoint2(GLint i, GLint j) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glFogf(GLenum pname, GLfloat param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glFogfv(GLenum pname, const GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glFogi(GLenum pname, GLint param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glFogiv(GLenum pname, const GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glFrustum(GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble zNear,
GLdouble zFar) _GL_VOID_RET _GL_UINT
DO_NOT_USE_glGenLists(GLsizei range) _GL_UINT_RET _GL_VOID
DO_NOT_USE_glGetClipPlane(GLenum plane, GLdouble *equation) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetLightiv(GLenum light, GLenum pname, GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetMapdv(GLenum target, GLenum query, GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetMapfv(GLenum target, GLenum query, GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetMapiv(GLenum target, GLenum query, GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetMaterialiv(GLenum face, GLenum pname, GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetPixelMapfv(GLenum map, GLfloat *values) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetPixelMapuiv(GLenum map, GLuint *values) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetPixelMapusv(GLenum map, GLushort *values) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetPolygonStipple(GLubyte *mask) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetTexEnviv(GLenum target, GLenum pname, GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexMask(GLuint mask) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexPointer(GLenum type,
GLsizei stride,
const void *pointer) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexd(GLdouble c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexdv(const GLdouble *c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexf(GLfloat c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexfv(const GLfloat *c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexi(GLint c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexiv(const GLint *c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexs(GLshort c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexsv(const GLshort *c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexub(GLubyte c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glIndexubv(const GLubyte *c) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glInitNames(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glInterleavedArrays(GLenum format,
GLsizei stride,
const void *pointer) _GL_VOID_RET _GL_BOOL
DO_NOT_USE_glIsList(GLuint list) _GL_BOOL_RET _GL_VOID
DO_NOT_USE_glLightModelf(GLenum pname, GLfloat param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLightModelfv(GLenum pname, const GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLightModeli(GLenum pname, GLint param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLightModeliv(GLenum pname, const GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLightf(GLenum light, GLenum pname, GLfloat param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLightfv(GLenum light, GLenum pname, const GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLighti(GLenum light, GLenum pname, GLint param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLightiv(GLenum light, GLenum pname, const GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLineStipple(GLint factor, GLushort pattern) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glListBase(GLuint base) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLoadIdentity(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLoadMatrixd(const GLdouble *m) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLoadMatrixf(const GLfloat *m) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glLoadName(GLuint name) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMap1d(GLenum target,
GLdouble u1,
GLdouble u2,
GLint stride,
GLint order,
const GLdouble *points) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMap1f(GLenum target,
GLfloat u1,
GLfloat u2,
GLint stride,
GLint order,
const GLfloat *points) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMap2d(GLenum target,
GLdouble u1,
GLdouble u2,
GLint ustride,
GLint uorder,
GLdouble v1,
GLdouble v2,
GLint vstride,
GLint vorder,
const GLdouble *points) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMap2f(GLenum target,
GLfloat u1,
GLfloat u2,
GLint ustride,
GLint uorder,
GLfloat v1,
GLfloat v2,
GLint vstride,
GLint vorder,
const GLfloat *points) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
_GL_VOID_RET _GL_VOID
DO_NOT_USE_glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
_GL_VOID_RET _GL_VOID
DO_NOT_USE_glMaterialf(GLenum face, GLenum pname, GLfloat param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMateriali(GLenum face, GLenum pname, GLint param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMaterialiv(GLenum face, GLenum pname, const GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMatrixMode(GLenum mode) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMultMatrixd(const GLdouble *m) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glMultMatrixf(const GLfloat *m) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNewList(GLuint list, GLenum mode) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3bv(const GLbyte *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3i(GLint nx, GLint ny, GLint nz) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3s(GLshort nx, GLshort ny, GLshort nz) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormal3sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glNormalPointer(GLenum type,
GLsizei stride,
const void *pointer) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glOrtho(GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble zNear,
GLdouble zFar) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPassThrough(GLfloat token) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPixelMapfv(GLenum map,
GLsizei mapsize,
const GLfloat *values) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPixelMapuiv(GLenum map,
GLsizei mapsize,
const GLuint *values) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPixelMapusv(GLenum map,
GLsizei mapsize,
const GLushort *values) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPixelTransferf(GLenum pname, GLfloat param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPixelTransferi(GLenum pname, GLint param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPixelZoom(GLfloat xfactor, GLfloat yfactor) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPolygonStipple(const GLubyte *mask) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPopAttrib(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPopClientAttrib(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPopMatrix(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPopName(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPrioritizeTextures(GLsizei n,
const GLuint *textures,
const GLclampf *priorities) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPushAttrib(GLbitfield mask) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPushClientAttrib(GLbitfield mask) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPushMatrix(void) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glPushName(GLuint name) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2d(GLdouble x, GLdouble y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2f(GLfloat x, GLfloat y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2i(GLint x, GLint y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2s(GLshort x, GLshort y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos2sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3i(GLint x, GLint y, GLint z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3s(GLshort x, GLshort y, GLshort z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos3sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4i(GLint x, GLint y, GLint z, GLint w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRasterPos4sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRectdv(const GLdouble *v1, const GLdouble *v2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRectfv(const GLfloat *v1, const GLfloat *v2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRecti(GLint x1, GLint y1, GLint x2, GLint y2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRectiv(const GLint *v1, const GLint *v2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRectsv(const GLshort *v1, const GLshort *v2) _GL_VOID_RET _GL_INT
DO_NOT_USE_glRenderMode(GLenum mode) _GL_INT_RET _GL_VOID
DO_NOT_USE_glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glScaled(GLdouble x, GLdouble y, GLdouble z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glScalef(GLfloat x, GLfloat y, GLfloat z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glSelectBuffer(GLsizei size, GLuint *buffer) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glShadeModel(GLenum mode) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1d(GLdouble s) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1f(GLfloat s) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1i(GLint s) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1s(GLshort s) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord1sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2d(GLdouble s, GLdouble t) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2f(GLfloat s, GLfloat t) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2i(GLint s, GLint t) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2s(GLshort s, GLshort t) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord2sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3i(GLint s, GLint t, GLint r) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3s(GLshort s, GLshort t, GLshort r) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord3sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4i(GLint s, GLint t, GLint r, GLint q) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoord4sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
_GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexEnvf(GLenum target, GLenum pname, GLfloat param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexEnvi(GLenum target, GLenum pname, GLint param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexEnviv(GLenum target, GLenum pname, const GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexGend(GLenum coord, GLenum pname, GLdouble param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexGenf(GLenum coord, GLenum pname, GLfloat param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexGeni(GLenum coord, GLenum pname, GLint param) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTexGeniv(GLenum coord, GLenum pname, const GLint *params) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTranslated(GLdouble x, GLdouble y, GLdouble z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glTranslatef(GLfloat x, GLfloat y, GLfloat z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2d(GLdouble x, GLdouble y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2f(GLfloat x, GLfloat y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2i(GLint x, GLint y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2s(GLshort x, GLshort y) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex2sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3d(GLdouble x, GLdouble y, GLdouble z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3f(GLfloat x, GLfloat y, GLfloat z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3i(GLint x, GLint y, GLint z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3s(GLshort x, GLshort y, GLshort z) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex3sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4dv(const GLdouble *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4fv(const GLfloat *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4i(GLint x, GLint y, GLint z, GLint w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4iv(const GLint *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertex4sv(const GLshort *v) _GL_VOID_RET _GL_VOID
DO_NOT_USE_glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
_GL_VOID_RET
/**
* End of automatically generated list
*/
#undef _GL_BOOL
#undef _GL_BOOL_RET
#undef _GL_ENUM
#undef _GL_ENUM_RET
#undef _GL_INT
#undef _GL_INT_RET
#undef _GL_UINT
#undef _GL_UINT_RET
#undef _GL_VOID
#undef _GL_VOID_RET
#if defined(__GNUC__)
# pragma GCC diagnostic pop
#endif

View File

@@ -79,11 +79,15 @@ void GPUPlatformGlobal::init(eGPUDeviceType gpu_device,
this->driver = driver_type;
this->support_level = gpu_support_level;
this->vendor = BLI_strdup(vendor_str);
this->renderer = BLI_strdup(renderer_str);
this->version = BLI_strdup(version_str);
this->support_key = create_key(gpu_support_level, vendor_str, renderer_str, version_str);
this->gpu_name = create_gpu_name(vendor_str, renderer_str, version_str);
const char *vendor = vendor_str ? vendor_str : "UNKNOWN";
const char *renderer = renderer_str ? renderer_str : "UNKNOWN";
const char *version = version_str ? version_str : "UNKNOWN";
this->vendor = BLI_strdup(vendor);
this->renderer = BLI_strdup(renderer);
this->version = BLI_strdup(version);
this->support_key = create_key(gpu_support_level, vendor, renderer, version);
this->gpu_name = create_gpu_name(vendor, renderer, version);
this->backend = backend;
}

View File

@@ -51,7 +51,12 @@ void GLBackend::platform_init()
os = GPU_OS_UNIX;
#endif
if (strstr(vendor, "ATI") || strstr(vendor, "AMD")) {
if (!vendor) {
printf("Warning: No OpenGL vendor detected.\n");
device = GPU_DEVICE_UNKNOWN;
driver = GPU_DRIVER_ANY;
}
else if (strstr(vendor, "ATI") || strstr(vendor, "AMD")) {
device = GPU_DEVICE_ATI;
driver = GPU_DRIVER_OFFICIAL;
}
@@ -113,7 +118,7 @@ void GLBackend::platform_init()
}
/* Detect support level */
if (!GLEW_VERSION_3_3) {
if (!(epoxy_gl_version() >= 33)) {
support_level = GPU_SUPPORT_LEVEL_UNSUPPORTED;
}
else {
@@ -243,14 +248,14 @@ static void detect_workarounds()
return;
}
/* Limit support for GLEW_ARB_base_instance to OpenGL 4.0 and higher. NVIDIA Quadro FX 4800
* (TeraScale) report that they support GLEW_ARB_base_instance, but the driver does not support
/* Limit support for GL_ARB_base_instance to OpenGL 4.0 and higher. NVIDIA Quadro FX 4800
* (TeraScale) report that they support GL_ARB_base_instance, but the driver does not support
* GLEW_ARB_draw_indirect as it has an OpenGL3 context what also matches the minimum needed
* requirements.
*
* We use it as a target for glMapBuffer(Range) what is part of the OpenGL 4 API. So better
* disable it when we don't have an OpenGL4 context (See T77657) */
if (!GLEW_VERSION_4_0) {
if (!(epoxy_gl_version() >= 40)) {
GLContext::base_instance_support = false;
}
if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_WIN, GPU_DRIVER_OFFICIAL) &&
@@ -313,7 +318,8 @@ static void detect_workarounds()
/* Limit this fix to older hardware with GL < 4.5. This means Broadwell GPUs are
* covered since they only support GL 4.4 on windows.
* This fixes some issues with workbench anti-aliasing on Win + Intel GPU. (see T76273) */
if (GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_WIN, GPU_DRIVER_OFFICIAL) && !GLEW_VERSION_4_5) {
if (GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_WIN, GPU_DRIVER_OFFICIAL) &&
!(epoxy_gl_version() >= 45)) {
GLContext::copy_image_support = false;
}
/* Special fix for these specific GPUs.
@@ -328,7 +334,7 @@ static void detect_workarounds()
strstr(renderer, "HD Graphics 2500"))) {
GLContext::texture_cube_map_array_support = false;
}
/* Maybe not all of these drivers have problems with `GLEW_ARB_base_instance`.
/* Maybe not all of these drivers have problems with `GL_ARB_base_instance`.
* But it's hard to test each case.
* We get crashes from some crappy Intel drivers don't work well with shaders created in
* different rendering contexts. */
@@ -353,7 +359,8 @@ static void detect_workarounds()
}
/* There is a bug on older Nvidia GPU where GL_ARB_texture_gather
* is reported to be supported but yield a compile error (see T55802). */
if (GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY) && !GLEW_VERSION_4_0) {
if (GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY) &&
!(epoxy_gl_version() >= 40)) {
GLContext::texture_gather_support = false;
}
@@ -457,7 +464,7 @@ float GLContext::derivative_signs[2] = {1.0f, 1.0f};
void GLBackend::capabilities_init()
{
BLI_assert(GLEW_VERSION_3_3);
BLI_assert(epoxy_gl_version() >= 33);
/* Common Capabilities. */
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &GCaps.max_texture_size);
glGetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, &GCaps.max_texture_layers);
@@ -482,9 +489,11 @@ void GLBackend::capabilities_init()
glGetIntegerv(GL_NUM_EXTENSIONS, &GCaps.extensions_len);
GCaps.extension_get = gl_extension_get;
GCaps.mem_stats_support = GLEW_NVX_gpu_memory_info || GLEW_ATI_meminfo;
GCaps.shader_image_load_store_support = GLEW_ARB_shader_image_load_store;
GCaps.compute_shader_support = GLEW_ARB_compute_shader && GLEW_VERSION_4_3;
GCaps.mem_stats_support = epoxy_has_gl_extension("GL_NVX_gpu_memory_info") ||
epoxy_has_gl_extension("GL_ATI_meminfo");
GCaps.shader_image_load_store_support = epoxy_has_gl_extension("GL_ARB_shader_image_load_store");
GCaps.compute_shader_support = epoxy_has_gl_extension("GL_ARB_compute_shader") &&
epoxy_gl_version() >= 43;
if (GCaps.compute_shader_support) {
glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 0, &GCaps.max_work_group_count[0]);
glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 1, &GCaps.max_work_group_count[1]);
@@ -496,7 +505,8 @@ void GLBackend::capabilities_init()
&GCaps.max_shader_storage_buffer_bindings);
glGetIntegerv(GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, &GCaps.max_compute_shader_storage_blocks);
}
GCaps.shader_storage_buffer_objects_support = GLEW_ARB_shader_storage_buffer_object;
GCaps.shader_storage_buffer_objects_support = epoxy_has_gl_extension(
"GL_ARB_shader_storage_buffer_object");
/* GL specific capabilities. */
glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &GLContext::max_texture_3d_size);
glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &GLContext::max_cubemap_size);
@@ -506,25 +516,32 @@ void GLBackend::capabilities_init()
glGetIntegerv(GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, &GLContext::max_ssbo_binds);
glGetIntegerv(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, &GLContext::max_ssbo_size);
}
GLContext::base_instance_support = GLEW_ARB_base_instance;
GLContext::clear_texture_support = GLEW_ARB_clear_texture;
GLContext::copy_image_support = GLEW_ARB_copy_image;
GLContext::debug_layer_support = GLEW_VERSION_4_3 || GLEW_KHR_debug || GLEW_ARB_debug_output;
GLContext::direct_state_access_support = GLEW_ARB_direct_state_access;
GLContext::explicit_location_support = GLEW_VERSION_4_3;
GLContext::geometry_shader_invocations = GLEW_ARB_gpu_shader5;
GLContext::fixed_restart_index_support = GLEW_ARB_ES3_compatibility;
GLContext::layered_rendering_support = GLEW_AMD_vertex_shader_layer;
GLContext::native_barycentric_support = GLEW_AMD_shader_explicit_vertex_parameter;
GLContext::multi_bind_support = GLEW_ARB_multi_bind;
GLContext::multi_draw_indirect_support = GLEW_ARB_multi_draw_indirect;
GLContext::shader_draw_parameters_support = GLEW_ARB_shader_draw_parameters;
GLContext::stencil_texturing_support = GLEW_VERSION_4_3;
GLContext::texture_cube_map_array_support = GLEW_ARB_texture_cube_map_array;
GLContext::texture_filter_anisotropic_support = GLEW_EXT_texture_filter_anisotropic;
GLContext::texture_gather_support = GLEW_ARB_texture_gather;
GLContext::texture_storage_support = GLEW_VERSION_4_3;
GLContext::vertex_attrib_binding_support = GLEW_ARB_vertex_attrib_binding;
GLContext::base_instance_support = epoxy_has_gl_extension("GL_ARB_base_instance");
GLContext::clear_texture_support = epoxy_has_gl_extension("GL_ARB_clear_texture");
GLContext::copy_image_support = epoxy_has_gl_extension("GL_ARB_copy_image");
GLContext::debug_layer_support = epoxy_gl_version() >= 43 ||
epoxy_has_gl_extension("GL_KHR_debug") ||
epoxy_has_gl_extension("GL_ARB_debug_output");
GLContext::direct_state_access_support = epoxy_has_gl_extension("GL_ARB_direct_state_access");
GLContext::explicit_location_support = epoxy_gl_version() >= 43;
GLContext::geometry_shader_invocations = epoxy_has_gl_extension("GL_ARB_gpu_shader5");
GLContext::fixed_restart_index_support = epoxy_has_gl_extension("GL_ARB_ES3_compatibility");
GLContext::layered_rendering_support = epoxy_has_gl_extension("GL_AMD_vertex_shader_layer");
GLContext::native_barycentric_support = epoxy_has_gl_extension(
"GL_AMD_shader_explicit_vertex_parameter");
GLContext::multi_bind_support = epoxy_has_gl_extension("GL_ARB_multi_bind");
GLContext::multi_draw_indirect_support = epoxy_has_gl_extension("GL_ARB_multi_draw_indirect");
GLContext::shader_draw_parameters_support = epoxy_has_gl_extension(
"GL_ARB_shader_draw_parameters");
GLContext::stencil_texturing_support = epoxy_gl_version() >= 43;
GLContext::texture_cube_map_array_support = epoxy_has_gl_extension(
"GL_ARB_texture_cube_map_array");
GLContext::texture_filter_anisotropic_support = epoxy_has_gl_extension(
"GL_EXT_texture_filter_anisotropic");
GLContext::texture_gather_support = epoxy_has_gl_extension("GL_ARB_texture_gather");
GLContext::texture_storage_support = epoxy_gl_version() >= 43;
GLContext::vertex_attrib_binding_support = epoxy_has_gl_extension(
"GL_ARB_vertex_attrib_binding");
detect_workarounds();

View File

@@ -17,8 +17,6 @@
#include "gl_index_buffer.hh"
#include "gl_vertex_buffer.hh"
#include "glew-mx.h"
namespace blender {
namespace gpu {

View File

@@ -304,12 +304,12 @@ void GLContext::vao_cache_unregister(GLVaoCache *cache)
void GLContext::memory_statistics_get(int *r_total_mem, int *r_free_mem)
{
/* TODO(merwin): use Apple's platform API to get this info. */
if (GLEW_NVX_gpu_memory_info) {
if (epoxy_has_gl_extension("GL_NVX_gpu_memory_info")) {
/* Returned value in Kb. */
glGetIntegerv(GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX, r_total_mem);
glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, r_free_mem);
}
else if (GLEW_ATI_meminfo) {
else if (epoxy_has_gl_extension("GL_ATI_meminfo")) {
int stats[4];
glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, stats);

View File

@@ -16,8 +16,6 @@
#include "gl_state.hh"
#include "glew-mx.h"
#include <mutex>
namespace blender {

View File

@@ -19,8 +19,6 @@
#include "CLG_log.h"
#include "glew-mx.h"
#include "gl_context.hh"
#include "gl_uniform_buffer.hh"
@@ -138,8 +136,8 @@ void init_gl_callbacks()
char msg[256] = "";
const char format[] = "Successfully hooked OpenGL debug callback using %s";
if (GLEW_VERSION_4_3 || GLEW_KHR_debug) {
SNPRINTF(msg, format, GLEW_VERSION_4_3 ? "OpenGL 4.3" : "KHR_debug extension");
if (epoxy_gl_version() >= 43 || epoxy_has_gl_extension("GL_KHR_debug")) {
SNPRINTF(msg, format, epoxy_gl_version() >= 43 ? "OpenGL 4.3" : "KHR_debug extension");
glEnable(GL_DEBUG_OUTPUT);
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
glDebugMessageCallback((GLDEBUGPROC)debug_callback, nullptr);
@@ -151,7 +149,7 @@ void init_gl_callbacks()
-1,
msg);
}
else if (GLEW_ARB_debug_output) {
else if (epoxy_has_gl_extension("GL_ARB_debug_output")) {
SNPRINTF(msg, format, "ARB_debug_output");
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
glDebugMessageCallbackARB((GLDEBUGPROCARB)debug_callback, nullptr);
@@ -327,7 +325,8 @@ static const char *to_str_suffix(GLenum type)
void object_label(GLenum type, GLuint object, const char *name)
{
if ((G.debug & G_DEBUG_GPU) && (GLEW_VERSION_4_3 || GLEW_KHR_debug)) {
if ((G.debug & G_DEBUG_GPU) &&
(epoxy_gl_version() >= 43 || epoxy_has_gl_extension("GL_KHR_debug"))) {
char label[64];
SNPRINTF(label, "%s%s%s", to_str_prefix(type), name, to_str_suffix(type));
/* Small convenience for caller. */
@@ -365,7 +364,8 @@ namespace blender::gpu {
void GLContext::debug_group_begin(const char *name, int index)
{
if ((G.debug & G_DEBUG_GPU) && (GLEW_VERSION_4_3 || GLEW_KHR_debug)) {
if ((G.debug & G_DEBUG_GPU) &&
(epoxy_gl_version() >= 43 || epoxy_has_gl_extension("GL_KHR_debug"))) {
/* Add 10 to avoid collision with other indices from other possible callback layers. */
index += 10;
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, index, -1, name);
@@ -374,7 +374,8 @@ void GLContext::debug_group_begin(const char *name, int index)
void GLContext::debug_group_end()
{
if ((G.debug & G_DEBUG_GPU) && (GLEW_VERSION_4_3 || GLEW_KHR_debug)) {
if ((G.debug & G_DEBUG_GPU) &&
(epoxy_gl_version() >= 43 || epoxy_has_gl_extension("GL_KHR_debug"))) {
glPopDebugGroup();
}
}

View File

@@ -8,8 +8,6 @@
#include "gl_context.hh"
#include "glew-mx.h"
/* Manual line breaks for readability. */
/* clang-format off */
#define _VA_ARG_LIST1(t) t

View File

@@ -11,8 +11,6 @@
#include "MEM_guardedalloc.h"
#include "glew-mx.h"
#include "gpu_framebuffer_private.hh"
namespace blender::gpu {

View File

@@ -11,8 +11,6 @@
#include "MEM_guardedalloc.h"
#include "glew-mx.h"
#include "gpu_immediate_private.hh"
namespace blender::gpu {

View File

@@ -11,7 +11,7 @@
#include "gpu_index_buffer_private.hh"
#include "glew-mx.h"
#include <epoxy/gl.h>
namespace blender::gpu {

View File

@@ -13,8 +13,6 @@
#include "GPU_primitive.h"
#include "glew-mx.h"
namespace blender::gpu {
static inline GLenum to_gl(GPUPrimType prim_type)

View File

@@ -11,7 +11,7 @@
#include "gpu_query.hh"
#include "glew-mx.h"
#include <epoxy/gl.h>
namespace blender::gpu {

View File

@@ -545,7 +545,7 @@ std::string GLShader::vertex_interface_declare(const ShaderCreateInfo &info) con
if (!GLContext::native_barycentric_support) {
/* Disabled or unsupported. */
}
else if (GLEW_AMD_shader_explicit_vertex_parameter) {
else if (epoxy_has_gl_extension("GL_AMD_shader_explicit_vertex_parameter")) {
/* Need this for stable barycentric. */
ss << "flat out vec4 gpu_pos_flat;\n";
ss << "out vec4 gpu_pos;\n";
@@ -581,7 +581,7 @@ std::string GLShader::fragment_interface_declare(const ShaderCreateInfo &info) c
ss << "noperspective in vec3 gpu_BaryCoordNoPersp;\n";
ss << "#define gpu_position_at_vertex(v) gpu_pos[v]\n";
}
else if (GLEW_AMD_shader_explicit_vertex_parameter) {
else if (epoxy_has_gl_extension("GL_AMD_shader_explicit_vertex_parameter")) {
std::cout << "native" << std::endl;
/* NOTE(fclem): This won't work with geometry shader. Hopefully, we don't need geometry
* shader workaround if this extension/feature is detected. */
@@ -612,7 +612,7 @@ std::string GLShader::fragment_interface_declare(const ShaderCreateInfo &info) c
if (info.early_fragment_test_) {
ss << "layout(early_fragment_tests) in;\n";
}
if (GLEW_ARB_conservative_depth) {
if (epoxy_has_gl_extension("GL_ARB_conservative_depth")) {
ss << "layout(" << to_string(info.depth_write_) << ") out float gl_FragDepth;\n";
}
ss << "\n/* Outputs. */\n";
@@ -805,7 +805,7 @@ static char *glsl_patch_default_get()
size_t slen = 0;
/* Version need to go first. */
if (GLEW_VERSION_4_3) {
if (epoxy_gl_version() >= 43) {
STR_CONCAT(patch, slen, "#version 430\n");
}
else {
@@ -816,8 +816,8 @@ static char *glsl_patch_default_get()
* don't use an extension for something already available! */
if (GLContext::texture_gather_support) {
STR_CONCAT(patch, slen, "#extension GL_ARB_texture_gather: enable\n");
/* Some drivers don't agree on GLEW_ARB_texture_gather and the actual support in the
* shader so double check the preprocessor define (see T56544). */
/* Some drivers don't agree on epoxy_has_gl_extension("GL_ARB_texture_gather") and the actual
* support in the shader so double check the preprocessor define (see T56544). */
STR_CONCAT(patch, slen, "#ifdef GL_ARB_texture_gather\n");
STR_CONCAT(patch, slen, "# define GPU_ARB_texture_gather\n");
STR_CONCAT(patch, slen, "#endif\n");
@@ -835,7 +835,7 @@ static char *glsl_patch_default_get()
STR_CONCAT(patch, slen, "#extension GL_ARB_texture_cube_map_array : enable\n");
STR_CONCAT(patch, slen, "#define GPU_ARB_texture_cube_map_array\n");
}
if (GLEW_ARB_conservative_depth) {
if (epoxy_has_gl_extension("GL_ARB_conservative_depth")) {
STR_CONCAT(patch, slen, "#extension GL_ARB_conservative_depth : enable\n");
}
if (GPU_shader_image_load_store_support()) {

View File

@@ -9,7 +9,7 @@
#include "MEM_guardedalloc.h"
#include "glew-mx.h"
#include <epoxy/gl.h>
#include "gpu_shader_create_info.hh"
#include "gpu_shader_private.hh"

View File

@@ -16,8 +16,6 @@
#include "BLI_vector.hh"
#include "glew-mx.h"
#include "gpu_shader_create_info.hh"
#include "gpu_shader_interface.hh"

View File

@@ -13,7 +13,7 @@
#include "gpu_state_private.hh"
#include "glew-mx.h"
#include <epoxy/gl.h>
namespace blender {
namespace gpu {

View File

@@ -11,8 +11,6 @@
#include "gpu_storage_buffer_private.hh"
#include "glew-mx.h"
namespace blender {
namespace gpu {

View File

@@ -13,8 +13,6 @@
#include "gpu_texture_private.hh"
#include "glew-mx.h"
struct GPUFrameBuffer;
namespace blender {

View File

@@ -11,8 +11,6 @@
#include "gpu_uniform_buffer_private.hh"
#include "glew-mx.h"
namespace blender {
namespace gpu {

View File

@@ -7,8 +7,6 @@
#pragma once
#include "glew-mx.h"
#include "GPU_batch.h"
#include "gl_shader_interface.hh"

View File

@@ -9,8 +9,6 @@
#include "MEM_guardedalloc.h"
#include "glew-mx.h"
#include "GPU_texture.h"
#include "gpu_vertex_buffer_private.hh"

View File

@@ -14,8 +14,6 @@
#include "gpu_testing.hh"
#include "GPU_glew.h"
namespace blender::gpu::tests {
static void test_gpu_shader_compute_2d()

View File

@@ -387,7 +387,6 @@ blender_include_dirs(
../../render
../../../../intern/cycles/blender
../../../../intern/atomic
../../../../intern/glew-mx
../../../../intern/guardedalloc
../../../../intern/memutil
../../../../intern/mantaflow/extern

View File

@@ -29,7 +29,6 @@ set(INC
../makesrna
../render
../windowmanager
../../../intern/glew-mx
../../../intern/guardedalloc
# dna_type_offsets.h

View File

@@ -7,12 +7,11 @@ set(INC
../../gpu
../../makesdna
../../makesrna
../../../../intern/glew-mx
../../../../intern/guardedalloc
)
set(INC_SYS
${GLEW_INCLUDE_PATH}
${Epoxy_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
)
@@ -41,7 +40,7 @@ set(SRC
)
set(LIB
${GLEW_LIBRARY}
${Epoxy_LIBRARIES}
${PYTHON_LINKFLAGS}
${PYTHON_LIBRARIES}
)

View File

@@ -19,7 +19,7 @@
#include "../generic/py_capi_utils.h"
#include "glew-mx.h"
#include <epoxy/gl.h>
#include "bgl.h"

View File

@@ -8,12 +8,11 @@ set(INC
../../gpu
../../imbuf
../../makesdna
../../../../intern/glew-mx
../../../../intern/guardedalloc
)
set(INC_SYS
${GLEW_INCLUDE_PATH}
${Epoxy_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
)
@@ -59,6 +58,7 @@ set(SRC
)
set(LIB
${Epoxy_LIBRARIES}
${PYTHON_LINKFLAGS}
${PYTHON_LIBRARIES}
)

View File

@@ -23,7 +23,6 @@ set(INC
../sequencer
../../../intern/clog
../../../intern/ghost
../../../intern/glew-mx
../../../intern/guardedalloc
../../../intern/memutil
../bmesh

View File

@@ -3,7 +3,6 @@
blender_include_dirs(
../../intern/clog
../../intern/glew-mx
../../intern/guardedalloc
../blender/blenkernel
../blender/blenlib
@@ -720,6 +719,11 @@ elseif(WIN32)
set(BLENDER_TEXT_FILES_DESTINATION ".")
install(
FILES ${LIBDIR}/epoxy/bin/epoxy-0.dll
DESTINATION "."
)
if(WITH_OPENMP AND MSVC_CLANG)
install(
FILES ${CLANG_OPENMP_DLL}