Enabled use of client-side memory in vertex, element, indirect, and count buffer
Added support for glArrayElement(EXT|) to the immediate mode layer.
Support NUM_EXTENSIONS in glGet(Integer|Float|Double|Boolean|Integer64)v(EXT|)
Added interception for glGetStringi and glGetIntergerv
Improve loading of GLES and EGL libraries on Android
Various bug fixes...
Merged pull requests:
#131 NaCL Pepper now uses GLES2 prefix for ES2.0 functions, rather than gl
#130 Copyright bump to 2014
#129 NaCL-related build tweaks for regaltest, nacl example and pnacl.
#128 GLEW refresh
#126 boost::print fix for mapping 'long' and 'long long' to 32-bit or 64-bit for length purposes
#125 Resolve clang compilation error: lookup of 'Depth' in member access expression is ambiguous
#124 Add Makefile support for gcc-4.4, gcc-4.6 and clang toolchains on Linux.
#116 Make it compile with Visual Studio 2013 (VC12)
This commit is contained in:
parent
1ba938a5f0
commit
bc7e48247e
79 changed files with 2379 additions and 585 deletions
1
Makefile
1
Makefile
|
|
@ -39,6 +39,7 @@ include Makefile.dreamtorus
|
|||
include Makefile.dreamtorus_static
|
||||
include Makefile.alphatorus
|
||||
include Makefile.tiger
|
||||
include Makefile.nacl
|
||||
|
||||
# Testing
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ MAKEFILE_NACL_INCLUDED := 1
|
|||
#
|
||||
|
||||
ifneq ($(filter nacl%,$(SYSTEM)),)
|
||||
ifeq ($(filter nacl-pnacl,$(SYSTEM)),)
|
||||
|
||||
.PHONY: nacl.bin nacl.clean
|
||||
|
||||
|
|
@ -36,8 +37,9 @@ NACL.SRCS.NAMES := $(notdir $(NACL.SRCS))
|
|||
NACL.OBJS := $(addprefix tmp/$(SYSTEM)/nacl/static/,$(NACL.SRCS.NAMES))
|
||||
NACL.OBJS := $(NACL.OBJS:.c=.o)
|
||||
NACL.CFLAGS := -Iinclude
|
||||
NACL.LIBS += -Llib/$(SYSTEM) -lRegal
|
||||
NACL.LIBS += -lpng -lz -lm -pthread -lppapi -lppapi_gles2 -lstdc++
|
||||
NACL.CFLAGS += -DREGAL_NAMESPACE=1
|
||||
NACL.LIBS += -Llib/$(SYSTEM) -lRegallib -lglslopt -lpnglib -lzlib
|
||||
NACL.LIBS += -lm -pthread -lppapi -lppapi_gles2 -lstdc++
|
||||
|
||||
-include $(NACL.DEPS)
|
||||
|
||||
|
|
@ -45,7 +47,7 @@ tmp/$(SYSTEM)/nacl/static/%.o: examples/nacl/%.c
|
|||
@mkdir -p $(dir $@)
|
||||
$(LOG_CC)$(CC) $(CFLAGS) -std=gnu99 $(NACL.CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
||||
|
||||
bin/$(SYSTEM)/nacl$(BIN_EXTENSION): lib/$(SYSTEM)/$(REGAL.STATIC) $(NACL.OBJS)
|
||||
bin/$(SYSTEM)/nacl$(BIN_EXTENSION): lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(GLSLOPT.STATIC) $(NACL.OBJS)
|
||||
@mkdir -p $(dir $@)
|
||||
$(LOG_LD)$(LD) $(LDFLAGS.EXTRA) -o $@ $(NACL.OBJS) $(NACL.LIBS)
|
||||
ifneq ($(STRIP),)
|
||||
|
|
@ -57,3 +59,4 @@ examples/nacl/nacl.nmf: bin/$(SYSTEM)/nacl$(BIN_EXTENSION)
|
|||
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -35,7 +35,13 @@ all:: regal.lib
|
|||
|
||||
clean:: regal.clean
|
||||
|
||||
REGAL.LDFLAGS := -lstdc++ -pthread -lm
|
||||
REGAL.LDFLAGS :=
|
||||
|
||||
ifeq ($(filter nacl%,$(SYSTEM)),)
|
||||
REGAL.LDFLAGS += -lstdc++
|
||||
endif
|
||||
|
||||
REGAL.LDFLAGS += -pthread -lm
|
||||
REGAL.LIBS :=
|
||||
|
||||
ifeq ($(filter nacl%,$(SYSTEM)),)
|
||||
|
|
@ -103,16 +109,16 @@ endif
|
|||
ifeq ($(MODE),custom)
|
||||
endif
|
||||
|
||||
# Emscripten options
|
||||
# NaCL options
|
||||
|
||||
ifneq ($(filter nacl% emscripten%,$(SYSTEM)),)
|
||||
REGAL.CFLAGS += -DREGAL_SYS_EMSCRIPTEN=1 -DREGAL_SYS_EGL=1 -DREGAL_SYS_ES2=1
|
||||
ifneq ($(filter nacl%,$(SYSTEM)),)
|
||||
REGAL.CFLAGS += -DREGAL_SYS_ES2=1
|
||||
REGAL.CFLAGS += -DREGAL_HTTP=0
|
||||
REGAL.CFLAGS += -DREGAL_STATISTICS=0
|
||||
REGAL.CFLAGS += -Wno-constant-logical-operand
|
||||
REGAL.CFLAGS += -DREGAL_PLUGIN=0
|
||||
REGAL.CFLAGS += -DREGAL_TRACE=0
|
||||
REGAL.CFLAGS += -DREGAL_NAMESPACE=1 -DREGAL_STATIC_ES2 -DREGAL_STATIC_EGL
|
||||
REGAL.CFLAGS += -DREGAL_NAMESPACE=1 -DREGAL_STATIC_ES2
|
||||
REGAL_LOG = 0
|
||||
REGAL_NO_TLS = 1
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ MAKEFILE_REGALTEST_INCLUDED := 1
|
|||
|
||||
include build/common.inc
|
||||
|
||||
# Not supported for NaCL - Revisit
|
||||
# Not supported for Emscripten - Revisit
|
||||
|
||||
ifeq ($(filter nacl% emscripten%,$(SYSTEM)),)
|
||||
ifeq ($(filter emscripten% nacl-pnacl,$(SYSTEM)),)
|
||||
|
||||
include build/regaltest.inc
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ REGALTEST.LIBS := -Llib/$(SYSTEM) $(LDFLAGS.X11) -lm
|
|||
ifeq ($(filter nacl%,$(SYSTEM)),)
|
||||
REGALTEST.LIBS += -ldl
|
||||
else
|
||||
REGALTEST.LIBS += -lnacl_io
|
||||
REGALTEST.LIBS += -lnacl_io -lppapi -lppapi_gles2
|
||||
endif
|
||||
|
||||
-include $(REGALTEST.DEPS)
|
||||
|
|
@ -61,9 +61,9 @@ tmp/$(SYSTEM)/regaltest/static/%.o: tests/%.cpp
|
|||
bin/$(SYSTEM)/regaltest$(BIN_EXTENSION): $(REGALTEST.OBJS) lib/$(SYSTEM)/$(GTEST.STATIC) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) $(REGAL.SHARED.DEPEND)
|
||||
@mkdir -p $(dir $@)
|
||||
ifdef APITRACE.STATIC
|
||||
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(REGALTEST.LIBS) $(LDFLAGS.STARTGROUP) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(APITRACE.STATIC) $(LDFLAGS.ENDGROUP) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS)
|
||||
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(LDFLAGS.STARTGROUP) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(APITRACE.STATIC) $(LDFLAGS.ENDGROUP) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) $(REGALTEST.LIBS) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS)
|
||||
else
|
||||
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(REGALTEST.LIBS) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS)
|
||||
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) lib/$(SYSTEM)/$(REGAL.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) $(REGALTEST.LIBS) lib/$(SYSTEM)/$(GTEST.STATIC) $(REGAL.LDFLAGS)
|
||||
endif
|
||||
ifneq ($(STRIP),)
|
||||
$(LOG_STRIP)$(STRIP) -x $@
|
||||
|
|
@ -75,7 +75,7 @@ test: bin/$(SYSTEM)/regaltest$(BIN_EXTENSION)
|
|||
ifeq ($(filter nacl%,$(SYSTEM)),)
|
||||
$^
|
||||
else
|
||||
"$(NACL_SEL_LDR)" -a -B "$(NACL_IRT)" -- $^
|
||||
"$(NACL_SDK_ROOT)/tools/sel_ldr.py" $^
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
|
|||
|
|
@ -380,9 +380,7 @@ PPAPI and NaCl
|
|||
|
||||
* NACL_SDK_ROOT needs to be set
|
||||
|
||||
* NACL_LIBC=newlib is the default, specify NACL_LIBC=glibc as an alternative
|
||||
|
||||
* regaltest requires pepper_26 or newer
|
||||
* NACL_LIBC=newlib is the default, specify glibc or pnacl as alternatives
|
||||
|
||||
Questions and Answers
|
||||
=====================
|
||||
|
|
|
|||
|
|
@ -51,12 +51,12 @@ OPT ?= $(CFLAGS.RELEASE)
|
|||
endif
|
||||
|
||||
ifndef V
|
||||
LOG_CXX ?= @echo " [CXX] $@";
|
||||
LOG_CC ?= @echo " [CC] $@";
|
||||
LOG_LD ?= @echo " [LD] $@";
|
||||
LOG_AR ?= @echo " [AR] $@";
|
||||
LOG_CXX ?= @echo " [CXX] $@";
|
||||
LOG_CC ?= @echo " [CC] $@";
|
||||
LOG_LD ?= @echo " [LD] $@";
|
||||
LOG_AR ?= @echo " [AR] $@";
|
||||
LOG_RANLIB ?= @echo " [RANLIB] $@";
|
||||
LOG_STRIP ?= @echo " [STRIP] $@";
|
||||
LOG_STRIP ?= @echo " [STRIP] $@";
|
||||
endif
|
||||
|
||||
INCLUDE ?= -Iinclude
|
||||
|
|
|
|||
|
|
@ -93,15 +93,14 @@ GLSLOPT.CXX += src/glsl/src/glsl/../mesa/program/symbol_table.c
|
|||
GLSLOPT.CXX += src/glsl/src/glsl/../mesa/program/prog_hash_table.c
|
||||
|
||||
# Internal Headers
|
||||
# seth: is this used for dependencies?
|
||||
GLSLOPT.H :=
|
||||
|
||||
# Other Headers
|
||||
# seth: do all of these need to be specified?
|
||||
GLSLOPT.H.OTHER :=
|
||||
|
||||
#
|
||||
# Includes
|
||||
#
|
||||
|
||||
GLSLOPT.INCLUDE :=
|
||||
GLSLOPT.INCLUDE += -Isrc/glsl/include
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ PCRE.C += src/pcre/pcre_get.c
|
|||
PCRE.C += src/pcre/pcre_globals.c
|
||||
#PCRE.C += src/pcre/pcregrep.c
|
||||
PCRE.C += src/pcre/pcre_jit_compile.c
|
||||
PCRE.C += src/pcre/pcre_jit_test.c
|
||||
#PCRE.C += src/pcre/pcre_jit_test.c
|
||||
PCRE.C += src/pcre/pcre_maketables.c
|
||||
PCRE.C += src/pcre/pcre_newline.c
|
||||
PCRE.C += src/pcre/pcre_ord2utf8.c
|
||||
|
|
|
|||
9
config/Makefile.linux-clang
Normal file
9
config/Makefile.linux-clang
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Use clang 3.5 toolchain on Ubuntu 14.04 / Debian
|
||||
|
||||
include config/Makefile.linux
|
||||
|
||||
CC = clang
|
||||
CXX = clang++
|
||||
LD = clang
|
||||
|
||||
WARN += -Wno-constant-logical-operand
|
||||
7
config/Makefile.linux-gcc44
Normal file
7
config/Makefile.linux-gcc44
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Use gcc 4.4 toolchain on Ubuntu 14.04 / Debian
|
||||
|
||||
include config/Makefile.linux
|
||||
|
||||
CC = gcc-4.4
|
||||
CXX = g++-4.4
|
||||
LD = gcc-4.4
|
||||
7
config/Makefile.linux-gcc46
Normal file
7
config/Makefile.linux-gcc46
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Use gcc 4.6 toolchain on Ubuntu 14.04 / Debian
|
||||
|
||||
include config/Makefile.linux
|
||||
|
||||
CC = gcc-4.6
|
||||
CXX = g++-4.6
|
||||
LD = gcc-4.6
|
||||
|
|
@ -2,7 +2,7 @@ NACL_ARCH := pnacl
|
|||
|
||||
include config/nacl.inc
|
||||
|
||||
NACL_TOOLCHAIN := $(NACL_SDK_ROOT)/toolchain/$(NACL_OS)_x86_pnacl/$(NACL_LIBC)
|
||||
NACL_TOOLCHAIN := $(NACL_SDK_ROOT)/toolchain/$(NACL_OS)_pnacl
|
||||
|
||||
CC := $(NACL_TOOLCHAIN)/bin/pnacl-clang
|
||||
CXX := $(NACL_TOOLCHAIN)/bin/pnacl-clang++
|
||||
|
|
@ -13,7 +13,6 @@ STRIP ?=
|
|||
|
||||
BIN_EXTENSION = .pexe
|
||||
EXT.DYNAMIC = so
|
||||
LDFLAGS.EXTRA =
|
||||
LIBDIR =
|
||||
CFLAGS.EXTRA +=
|
||||
LDFLAGS.EXTRA +=
|
||||
|
|
|
|||
|
|
@ -48,8 +48,12 @@ export CCACHE_COMPILERCHECK=echo $(SYSTEM)$(NACL_LIBC)$(NACL_SDK_ROOT)
|
|||
ifeq ($(NACL_ARCH),i686)
|
||||
NACL_LIBTYPE=$(NACL_LIBC)_x86_32
|
||||
else
|
||||
ifeq ($(NACL_ARCH),pnacl)
|
||||
NACL_LIBTYPE=$(NACL_ARCH)
|
||||
else
|
||||
NACL_LIBTYPE=$(NACL_LIBC)_$(NACL_ARCH)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(MODE),debug)
|
||||
LDFLAGS.EXTRA += -L$(NACL_SDK_ROOT)/ports/lib/$(NACL_LIBTYPE)/Debug
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
@ -1184,6 +1184,15 @@ GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei heigh
|
|||
|
||||
/* ---------------------------------- GLU ---------------------------------- */
|
||||
|
||||
#ifndef GLEW_NO_GLU
|
||||
# ifdef __APPLE__
|
||||
# include <Availability.h>
|
||||
# if defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
|
||||
# define GLEW_NO_GLU
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef GLEW_NO_GLU
|
||||
/* this is where we can safely include GLU */
|
||||
# if defined(__APPLE__) && defined(__MACH__)
|
||||
|
|
@ -1612,18 +1621,18 @@ typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p);
|
|||
#ifndef GL_VERSION_1_5
|
||||
#define GL_VERSION_1_5 1
|
||||
|
||||
#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
|
||||
#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
|
||||
#define GL_FOG_COORD GL_FOG_COORDINATE
|
||||
#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
|
||||
#define GL_SRC0_RGB GL_SOURCE0_RGB
|
||||
#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
|
||||
#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
|
||||
#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
|
||||
#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
|
||||
#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
|
||||
#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
|
||||
#define GL_SRC1_RGB GL_SOURCE1_RGB
|
||||
#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
|
||||
#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
|
||||
#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
|
||||
#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
|
||||
#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
|
||||
#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
|
||||
#define GL_SRC0_RGB GL_SOURCE0_RGB
|
||||
#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
|
||||
#define GL_SRC1_RGB GL_SOURCE1_RGB
|
||||
#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
|
||||
#define GL_SRC2_RGB GL_SOURCE2_RGB
|
||||
#define GL_BUFFER_SIZE 0x8764
|
||||
|
|
@ -2044,14 +2053,14 @@ typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei
|
|||
#ifndef GL_VERSION_3_0
|
||||
#define GL_VERSION_3_0 1
|
||||
|
||||
#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES
|
||||
#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5
|
||||
#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1
|
||||
#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3
|
||||
#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB
|
||||
#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0
|
||||
#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4
|
||||
#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1
|
||||
#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2
|
||||
#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3
|
||||
#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4
|
||||
#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5
|
||||
#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB
|
||||
#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES
|
||||
#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS
|
||||
#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001
|
||||
#define GL_MAJOR_VERSION 0x821B
|
||||
|
|
@ -2585,6 +2594,24 @@ typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GL
|
|||
|
||||
#endif /* GL_AMD_draw_buffers_blend */
|
||||
|
||||
/* --------------------------- GL_AMD_gcn_shader --------------------------- */
|
||||
|
||||
#ifndef GL_AMD_gcn_shader
|
||||
#define GL_AMD_gcn_shader 1
|
||||
|
||||
#define GLEW_AMD_gcn_shader GLEW_GET_VAR(__GLEW_AMD_gcn_shader)
|
||||
|
||||
#endif /* GL_AMD_gcn_shader */
|
||||
|
||||
/* ------------------------ GL_AMD_gpu_shader_int64 ------------------------ */
|
||||
|
||||
#ifndef GL_AMD_gpu_shader_int64
|
||||
#define GL_AMD_gpu_shader_int64 1
|
||||
|
||||
#define GLEW_AMD_gpu_shader_int64 GLEW_GET_VAR(__GLEW_AMD_gpu_shader_int64)
|
||||
|
||||
#endif /* GL_AMD_gpu_shader_int64 */
|
||||
|
||||
/* ---------------------- GL_AMD_interleaved_elements ---------------------- */
|
||||
|
||||
#ifndef GL_AMD_interleaved_elements
|
||||
|
|
@ -2854,6 +2881,17 @@ typedef void (GLAPIENTRY * PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint valu
|
|||
|
||||
#endif /* GL_AMD_transform_feedback3_lines_triangles */
|
||||
|
||||
/* ----------------------- GL_AMD_transform_feedback4 ---------------------- */
|
||||
|
||||
#ifndef GL_AMD_transform_feedback4
|
||||
#define GL_AMD_transform_feedback4 1
|
||||
|
||||
#define GL_STREAM_RASTERIZATION_AMD 0x91A0
|
||||
|
||||
#define GLEW_AMD_transform_feedback4 GLEW_GET_VAR(__GLEW_AMD_transform_feedback4)
|
||||
|
||||
#endif /* GL_AMD_transform_feedback4 */
|
||||
|
||||
/* ----------------------- GL_AMD_vertex_shader_layer ---------------------- */
|
||||
|
||||
#ifndef GL_AMD_vertex_shader_layer
|
||||
|
|
@ -6807,6 +6845,7 @@ typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint s
|
|||
#define GL_VERTEX_BINDING_STRIDE 0x82D8
|
||||
#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
|
||||
#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
|
||||
#define GL_VERTEX_BINDING_BUFFER 0x8F4F
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
|
||||
|
|
@ -7547,13 +7586,13 @@ typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint
|
|||
#ifndef GL_ATI_fragment_shader
|
||||
#define GL_ATI_fragment_shader 1
|
||||
|
||||
#define GL_RED_BIT_ATI 0x00000001
|
||||
#define GL_2X_BIT_ATI 0x00000001
|
||||
#define GL_RED_BIT_ATI 0x00000001
|
||||
#define GL_4X_BIT_ATI 0x00000002
|
||||
#define GL_GREEN_BIT_ATI 0x00000002
|
||||
#define GL_COMP_BIT_ATI 0x00000002
|
||||
#define GL_BLUE_BIT_ATI 0x00000004
|
||||
#define GL_GREEN_BIT_ATI 0x00000002
|
||||
#define GL_8X_BIT_ATI 0x00000004
|
||||
#define GL_BLUE_BIT_ATI 0x00000004
|
||||
#define GL_NEGATE_BIT_ATI 0x00000004
|
||||
#define GL_BIAS_BIT_ATI 0x00000008
|
||||
#define GL_HALF_BIT_ATI 0x00000008
|
||||
|
|
@ -9748,6 +9787,15 @@ typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint pr
|
|||
|
||||
#endif /* GL_EXT_separate_specular_color */
|
||||
|
||||
/* ------------------- GL_EXT_shader_image_load_formatted ------------------ */
|
||||
|
||||
#ifndef GL_EXT_shader_image_load_formatted
|
||||
#define GL_EXT_shader_image_load_formatted 1
|
||||
|
||||
#define GLEW_EXT_shader_image_load_formatted GLEW_GET_VAR(__GLEW_EXT_shader_image_load_formatted)
|
||||
|
||||
#endif /* GL_EXT_shader_image_load_formatted */
|
||||
|
||||
/* --------------------- GL_EXT_shader_image_load_store -------------------- */
|
||||
|
||||
#ifndef GL_EXT_shader_image_load_store
|
||||
|
|
@ -12449,8 +12497,8 @@ typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target,
|
|||
#define GL_ITALIC_BIT_NV 0x02
|
||||
#define GL_MOVE_TO_NV 0x02
|
||||
#define GL_RELATIVE_MOVE_TO_NV 0x03
|
||||
#define GL_LINE_TO_NV 0x04
|
||||
#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
|
||||
#define GL_LINE_TO_NV 0x04
|
||||
#define GL_RELATIVE_LINE_TO_NV 0x05
|
||||
#define GL_HORIZONTAL_LINE_TO_NV 0x06
|
||||
#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
|
||||
|
|
@ -12938,6 +12986,28 @@ typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei cou
|
|||
|
||||
#endif /* GL_NV_shader_storage_buffer_object */
|
||||
|
||||
/* ----------------------- GL_NV_shader_thread_group ----------------------- */
|
||||
|
||||
#ifndef GL_NV_shader_thread_group
|
||||
#define GL_NV_shader_thread_group 1
|
||||
|
||||
#define GL_WARP_SIZE_NV 0x9339
|
||||
#define GL_WARPS_PER_SM_NV 0x933A
|
||||
#define GL_SM_COUNT_NV 0x933B
|
||||
|
||||
#define GLEW_NV_shader_thread_group GLEW_GET_VAR(__GLEW_NV_shader_thread_group)
|
||||
|
||||
#endif /* GL_NV_shader_thread_group */
|
||||
|
||||
/* ---------------------- GL_NV_shader_thread_shuffle ---------------------- */
|
||||
|
||||
#ifndef GL_NV_shader_thread_shuffle
|
||||
#define GL_NV_shader_thread_shuffle 1
|
||||
|
||||
#define GLEW_NV_shader_thread_shuffle GLEW_GET_VAR(__GLEW_NV_shader_thread_shuffle)
|
||||
|
||||
#endif /* GL_NV_shader_thread_shuffle */
|
||||
|
||||
/* ---------------------- GL_NV_tessellation_program5 ---------------------- */
|
||||
|
||||
#ifndef GL_NV_tessellation_program5
|
||||
|
|
@ -13086,8 +13156,8 @@ typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture
|
|||
#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
|
||||
#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
|
||||
#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
|
||||
#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
|
||||
#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
|
||||
#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
|
||||
#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
|
||||
#define GL_CONST_EYE_NV 0x86E5
|
||||
#define GL_PASS_THROUGH_NV 0x86E6
|
||||
|
|
@ -14556,9 +14626,9 @@ typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);
|
|||
#ifndef GL_SGIX_fog_texture
|
||||
#define GL_SGIX_fog_texture 1
|
||||
|
||||
#define GL_TEXTURE_FOG_SGIX 0
|
||||
#define GL_FOG_PATCHY_FACTOR_SGIX 0
|
||||
#define GL_FRAGMENT_FOG_SGIX 0
|
||||
#define GL_TEXTURE_FOG_SGIX 0
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname);
|
||||
|
||||
|
|
@ -17722,6 +17792,8 @@ GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth;
|
|||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_debug_output;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_depth_clamp_separate;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gcn_shader;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_gpu_shader_int64;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_interleaved_elements;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_multi_draw_indirect;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_name_gen_delete;
|
||||
|
|
@ -17739,6 +17811,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_AMD_sparse_texture;
|
|||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_stencil_operation_extended;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback3_lines_triangles;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_transform_feedback4;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_layer;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_viewport_index;
|
||||
|
|
@ -17995,6 +18068,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker;
|
|||
GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_formatted;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_integer_mix;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs;
|
||||
|
|
@ -18117,6 +18191,8 @@ GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_counters;
|
|||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_atomic_float;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_storage_buffer_object;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_group;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_thread_shuffle;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss;
|
||||
GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
@ -201,18 +201,18 @@ typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
|
|||
#ifndef GLX_VERSION_1_3
|
||||
#define GLX_VERSION_1_3 1
|
||||
|
||||
#define GLX_RGBA_BIT 0x00000001
|
||||
#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
|
||||
#define GLX_RGBA_BIT 0x00000001
|
||||
#define GLX_WINDOW_BIT 0x00000001
|
||||
#define GLX_COLOR_INDEX_BIT 0x00000002
|
||||
#define GLX_PIXMAP_BIT 0x00000002
|
||||
#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
|
||||
#define GLX_PIXMAP_BIT 0x00000002
|
||||
#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
|
||||
#define GLX_PBUFFER_BIT 0x00000004
|
||||
#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
|
||||
#define GLX_AUX_BUFFERS_BIT 0x00000010
|
||||
#define GLX_CONFIG_CAVEAT 0x20
|
||||
#define GLX_DEPTH_BUFFER_BIT 0x00000020
|
||||
#define GLX_CONFIG_CAVEAT 0x20
|
||||
#define GLX_X_VISUAL_TYPE 0x22
|
||||
#define GLX_TRANSPARENT_TYPE 0x23
|
||||
#define GLX_TRANSPARENT_INDEX_VALUE 0x24
|
||||
|
|
@ -666,6 +666,19 @@ typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context
|
|||
|
||||
#endif /* GLX_EXT_scene_marker */
|
||||
|
||||
/* -------------------------- GLX_EXT_stereo_tree -------------------------- */
|
||||
|
||||
#ifndef GLX_EXT_stereo_tree
|
||||
#define GLX_EXT_stereo_tree 1
|
||||
|
||||
#define GLX_STEREO_NOTIFY_EXT 0x00000000
|
||||
#define GLX_STEREO_NOTIFY_MASK_EXT 0x00000001
|
||||
#define GLX_STEREO_TREE_EXT 0x20F5
|
||||
|
||||
#define GLXEW_EXT_stereo_tree GLXEW_GET_VAR(__GLXEW_EXT_stereo_tree)
|
||||
|
||||
#endif /* GLX_EXT_stereo_tree */
|
||||
|
||||
/* -------------------------- GLX_EXT_swap_control ------------------------- */
|
||||
|
||||
#ifndef GLX_EXT_swap_control
|
||||
|
|
@ -1039,10 +1052,10 @@ typedef void ( * PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display* dpy, GLXVideoC
|
|||
|
||||
#endif /* GLX_NV_video_capture */
|
||||
|
||||
/* -------------------------- GLX_NV_video_output -------------------------- */
|
||||
/* ---------------------------- GLX_NV_video_out --------------------------- */
|
||||
|
||||
#ifndef GLX_NV_video_output
|
||||
#define GLX_NV_video_output 1
|
||||
#ifndef GLX_NV_video_out
|
||||
#define GLX_NV_video_out 1
|
||||
|
||||
#define GLX_VIDEO_OUT_COLOR_NV 0x20C3
|
||||
#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4
|
||||
|
|
@ -1069,9 +1082,9 @@ typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf,
|
|||
#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV)
|
||||
#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV)
|
||||
|
||||
#define GLXEW_NV_video_output GLXEW_GET_VAR(__GLXEW_NV_video_output)
|
||||
#define GLXEW_NV_video_out GLXEW_GET_VAR(__GLXEW_NV_video_out)
|
||||
|
||||
#endif /* GLX_NV_video_output */
|
||||
#endif /* GLX_NV_video_out */
|
||||
|
||||
/* -------------------------- GLX_OML_swap_method -------------------------- */
|
||||
|
||||
|
|
@ -1157,10 +1170,10 @@ typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, i
|
|||
#ifndef GLX_SGIX_fbconfig
|
||||
#define GLX_SGIX_fbconfig 1
|
||||
|
||||
#define GLX_WINDOW_BIT_SGIX 0x00000001
|
||||
#define GLX_RGBA_BIT_SGIX 0x00000001
|
||||
#define GLX_PIXMAP_BIT_SGIX 0x00000002
|
||||
#define GLX_WINDOW_BIT_SGIX 0x00000001
|
||||
#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
|
||||
#define GLX_PIXMAP_BIT_SGIX 0x00000002
|
||||
#define GLX_SCREEN_EXT 0x800C
|
||||
#define GLX_DRAWABLE_TYPE_SGIX 0x8010
|
||||
#define GLX_RENDER_TYPE_SGIX 0x8011
|
||||
|
|
@ -1197,8 +1210,8 @@ typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLX
|
|||
|
||||
#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
|
||||
#define GLX_PIPE_RECT_SGIX 0x00000001
|
||||
#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
|
||||
#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
|
||||
#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
|
||||
#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
|
||||
#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
|
||||
#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
|
||||
|
|
@ -1264,8 +1277,8 @@ typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Disp
|
|||
|
||||
#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
|
||||
#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
|
||||
#define GLX_PBUFFER_BIT_SGIX 0x00000004
|
||||
#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
|
||||
#define GLX_PBUFFER_BIT_SGIX 0x00000004
|
||||
#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
|
||||
#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
|
||||
#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
|
||||
|
|
@ -1646,6 +1659,7 @@ GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float;
|
|||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_import_context;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_scene_marker;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_stereo_tree;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_swap_control_tear;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap;
|
||||
|
|
@ -1667,7 +1681,7 @@ GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_present_video;
|
|||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_swap_group;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_vertex_array_range;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_capture;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_output;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_NV_video_out;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_swap_method;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_OML_sync_control;
|
||||
GLXEW_VAR_EXPORT GLboolean __GLXEW_SGIS_blended_overlay;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
|
|||
|
|
@ -26,3 +26,6 @@ if [ "$NACL_LIBC" != "glibc" ]; then
|
|||
echo "Building ARM"
|
||||
make -f Makefile SYSTEM=nacl-arm $*
|
||||
fi
|
||||
|
||||
echo "Building pnacl"
|
||||
make -f Makefile SYSTEM=nacl-pnacl $*
|
||||
|
|
|
|||
|
|
@ -365,11 +365,7 @@ dsaFormulae = {
|
|||
},
|
||||
'BindVertexArray' : {
|
||||
'entries' : [ 'glBindVertexArray' ],
|
||||
'impl' : [
|
||||
'if (!_context->dsa->ShadowVao( ${arg0} )) {',
|
||||
' _dispatch.call(&_dispatch.glBindVertexArray)( ${arg0} );',
|
||||
'}',
|
||||
],
|
||||
'impl' : [ '_context->dsa->ShadowVao( _context, ${arg0} ); '],
|
||||
},
|
||||
# TODO - GL_ARB_base_instance ?
|
||||
'RestoreEverything' : {
|
||||
|
|
|
|||
|
|
@ -212,7 +212,12 @@ return;'''
|
|||
'glDrawRangeElementsBaseVertex' : {
|
||||
'entries' : [ 'glDrawRangeElementsBaseVertex' ],
|
||||
'impl' : [
|
||||
'if (REGAL_FORCE_ES2_PROFILE || !_context->info->gl_arb_draw_elements_base_vertex)',
|
||||
'// WAR: Our Tegra driver GL 4 core profile supports DrawRangeElementsBaseVertex but does not',
|
||||
'// advertise ARB_draw_elements_base_vertex in the extension list so here we check whether the',
|
||||
'// driver has glDrawRangeElementsBaseVertex instead of looking for the extension flag.',
|
||||
'// (leaving original line here, just commented out)',
|
||||
'// if (REGAL_FORCE_ES2_PROFILE || !_context->info->gl_arb_draw_elements_base_vertex)',
|
||||
'if (REGAL_FORCE_ES2_PROFILE || !_context->dispatcher.driver.glDrawRangeElementsBaseVertex)',
|
||||
'{',
|
||||
' if (basevertex==0)',
|
||||
' {',
|
||||
|
|
@ -222,7 +227,7 @@ return;'''
|
|||
' }',
|
||||
' else',
|
||||
' {',
|
||||
' Warning("Regal does not support ${name} (GL_ARB_draw_elements_base_vertex extension not available) for basevertex!=0 for ES 2.0 - skipping.");',
|
||||
' Warning("Regal does not support ${name} (GL_ARB_draw_elements_base_vertex extension not available) for basevertex!=0 - skipping.");',
|
||||
' return;',
|
||||
' }',
|
||||
'}'
|
||||
|
|
@ -284,7 +289,7 @@ return;'''
|
|||
# ARB assembly programs not supported or emulated for ES 2.0 (yet)
|
||||
|
||||
'GL_ARB_vertex_program' : {
|
||||
'entries' : [ 'glGenProgramsARB', 'glBindProgramARB', 'glProgramStringARB', 'glGetProgramivARB' ],
|
||||
'entries' : [ 'glGenProgramsARB', 'glBindProgramARB', 'glGetProgramivARB' ],
|
||||
'impl' : [
|
||||
'if (_context->isES2())',
|
||||
'{',
|
||||
|
|
@ -294,6 +299,20 @@ return;'''
|
|||
]
|
||||
},
|
||||
|
||||
'glProgramStringARB' : {
|
||||
'entries' : [ 'glProgramStringARB' ],
|
||||
'impl' : [
|
||||
'// nothing to do if len <= 0 so just return',
|
||||
'if (${arg2} <= 0)',
|
||||
' return;',
|
||||
'if (_context->isES2())',
|
||||
'{',
|
||||
' Warning("Regal does not support ${name} (GL_ARB_vertex_program) for ES 2.0 context - skipping.");',
|
||||
' return;',
|
||||
'}'
|
||||
]
|
||||
},
|
||||
|
||||
# Remap GL_ARB_shader_objects to GL 2.0 API
|
||||
# http://www.opengl.org/registry/specs/ARB/shader_objects.txt
|
||||
#
|
||||
|
|
|
|||
|
|
@ -11,7 +11,37 @@ switch (name)
|
|||
case GL_VENDOR: return reinterpret_cast<const GLubyte *>(_context->emuInfo->vendor.c_str());
|
||||
case GL_RENDERER: return reinterpret_cast<const GLubyte *>(_context->emuInfo->renderer.c_str());
|
||||
case GL_VERSION: return reinterpret_cast<const GLubyte *>(_context->emuInfo->version.c_str());
|
||||
case GL_EXTENSIONS: return reinterpret_cast<const GLubyte *>(_context->emuInfo->extensions.c_str());
|
||||
case GL_EXTENSIONS: return reinterpret_cast<const GLubyte *>(_context->extensions.c_str());
|
||||
default:
|
||||
break;
|
||||
}'''
|
||||
},
|
||||
'GetStringi' : {
|
||||
'entries' : [ 'glGetStringi' ],
|
||||
'impl' : '''
|
||||
// Regal interceptions
|
||||
switch (name)
|
||||
{
|
||||
case GL_EXTENSIONS:
|
||||
{
|
||||
std::set<std::string>::iterator it = _context->extensionsSet.begin();
|
||||
std::advance(it, index);
|
||||
return reinterpret_cast<const GLubyte *>(it->c_str());
|
||||
};
|
||||
default:
|
||||
break;
|
||||
}'''
|
||||
},
|
||||
'Get' : {
|
||||
'entries' : [ 'glGet(Integer|Float|Double|Boolean|Integer64)v(EXT|)' ],
|
||||
'impl' : '''
|
||||
// Regal interceptions
|
||||
switch (pname)
|
||||
{
|
||||
case GL_NUM_EXTENSIONS:
|
||||
_context->numExtensions( ${arg1} );
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}'''
|
||||
|
|
|
|||
|
|
@ -76,6 +76,10 @@ iffFormulae = {
|
|||
'entries' : [ 'gl(SecondaryColor|Color|Normal)(2|3|4)(b|i|s|ub|ui|us)(v|)(EXT|)?' ],
|
||||
'impl' : [ '_context->iff->AttrN<${m2}>( _context, _context->iff->AttrIndex( RFF2A_${m1} ), ${arg0plus} );', ],
|
||||
},
|
||||
'ImmArrayElement' : {
|
||||
'entries' : [ 'glArrayElement(EXT|)' ],
|
||||
'impl' : [ '_context->iff->ProvokeElement( _context, ${arg0} );', ],
|
||||
},
|
||||
'ImmTexCoord' : {
|
||||
'entries' : [ 'glTexCoord(1|2|3|4)(d|f|i|s)(v|)' ],
|
||||
'impl' : [ '_context->iff->Attr<${m1}>( _context, _context->iff->AttrIndex( RFF2A_TexCoord ), ${arg0plus} );', ],
|
||||
|
|
|
|||
|
|
@ -30,9 +30,7 @@ quadsFormulae = {
|
|||
'impl' : [
|
||||
'''
|
||||
if ( ! _context->quads->glDrawArrays( _context, ${arg0plus} ) ) {
|
||||
DispatchTableGL *_next = _context->dispatcher.emulation.next();
|
||||
RegalAssert(_next);
|
||||
return _next->call(&_next->glDrawArrays)( ${arg0plus} );
|
||||
_context->dispatcher.emulation.glDrawArrays( ${arg0plus} );
|
||||
}
|
||||
'''
|
||||
],
|
||||
|
|
|
|||
|
|
@ -2,10 +2,6 @@
|
|||
|
||||
vaoFormulae = {
|
||||
# TODO - GL_ARB_base_instance ?
|
||||
'Validate' : {
|
||||
'entries' : [ 'gl(Multi|)Draw(Arrays|Element|Elements)(Instanced|Indirect|BaseVertex|InstancedBaseVertex|Array|)(ARB|EXT|AMD|ATI|APPLE|)' ],
|
||||
'prefix' : [ '// _context->vao->Validate(*_context );' ],
|
||||
},
|
||||
'BufferBinding' : {
|
||||
'entries' : [ 'glBindBuffer(ARB|)' ],
|
||||
'prefix' : [ '_context->vao->ShadowBufferBinding( ${arg0}, ${arg1} );' ],
|
||||
|
|
@ -20,7 +16,7 @@ vaoFormulae = {
|
|||
},
|
||||
'DeleteVertexArrays' : {
|
||||
'entries' : [ 'glDeleteVertexArrays(ARB|)' ],
|
||||
'impl' : [ '_context->vao->DeleteVertexArrays( ${arg0}, ${arg1} );' ],
|
||||
'impl' : [ '_context->vao->DeleteVertexArrays( *_context, ${arg0}, ${arg1} );' ],
|
||||
},
|
||||
'IsVertexArray' : {
|
||||
'entries' : [ 'glIsVertexArray(ARB|)' ],
|
||||
|
|
@ -38,6 +34,10 @@ vaoFormulae = {
|
|||
'entries' : [ 'glVertexAttribPointer(ARB|)' ],
|
||||
'impl' : [ 'return _context->vao->AttribPointer(*_context, ${arg0}, ${arg1plus} );' ],
|
||||
},
|
||||
'AttribIPointer' : {
|
||||
'entries' : [ 'glVertexAttribIPointer(ARB|)' ],
|
||||
'impl' : [ 'return _context->vao->AttribPointer(*_context, ${arg0}, ${arg1}, ${arg2}, GL_FALSE, ${arg3plus} );' ],
|
||||
},
|
||||
'GetAttrib' : {
|
||||
'entries' : [ 'glGetVertexAttrib(d|f|i|Pointer)v(ARB|)' ],
|
||||
'impl' : [ '_context->vao->GetAttrib( ${arg0}, ${arg1}, ${arg2} );' ],
|
||||
|
|
|
|||
|
|
@ -56,11 +56,11 @@ from RegalDispatchTrace import *
|
|||
|
||||
regalLicense = '''
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
247
scripts/glew2py.py
Executable file
247
scripts/glew2py.py
Executable file
|
|
@ -0,0 +1,247 @@
|
|||
#!/usr/bin/python -B
|
||||
|
||||
#
|
||||
# Utility script for converting GLEW extension
|
||||
# specifications into .py Python-format API
|
||||
# database.
|
||||
#
|
||||
# For help:
|
||||
# glew2py.py -help
|
||||
#
|
||||
# Example usage:
|
||||
# private/glew2py.py -a gl -o gl.py ~/dev/glew/auto/extensions/gles/*
|
||||
|
||||
import sys
|
||||
sys.path.insert(0,'scripts/api')
|
||||
|
||||
from ApiGLEW import *
|
||||
from optparse import OptionParser
|
||||
import re
|
||||
|
||||
options = None
|
||||
|
||||
# paramSplit - split a parameter into (name,type) tuple
|
||||
|
||||
paramRE1 = re.compile('((const )?[a-zA-Z][a-zA-Z0-9_]*[ \*]+(const )?)(.+)(\[.*\])?')
|
||||
paramRE2 = re.compile('((const )?[a-zA-Z][a-zA-Z0-9_]*)')
|
||||
|
||||
def splitParam(param):
|
||||
if param=='void':
|
||||
return None, 'void'
|
||||
m = paramRE1.match(param)
|
||||
if m:
|
||||
if m.group(5):
|
||||
return m.group(4), '%s%s'%(m.group(1),m.group(5))
|
||||
else:
|
||||
return m.group(4), m.group(1)
|
||||
m = paramRE2.match(param)
|
||||
if m:
|
||||
return '', m.group(1)
|
||||
return None, None
|
||||
|
||||
def tidyNameType(name, type):
|
||||
tmp = ''
|
||||
if type:
|
||||
for i in type:
|
||||
if i=='*' and tmp[-1]!=' ' and tmp[-1]!='*':
|
||||
tmp += ' *'
|
||||
else:
|
||||
tmp += i
|
||||
|
||||
# Fixups for GLEW parsespec bugs
|
||||
|
||||
if name and type and name.strip()=='GLsync' and type.strip()=='GLsync':
|
||||
return 'sync','GLsync'
|
||||
|
||||
if type:
|
||||
tmp = tmp.strip()
|
||||
if tmp=='void *':
|
||||
return name, 'GLvoid *'
|
||||
if tmp=='void **':
|
||||
return name, 'GLvoid **'
|
||||
if tmp=='const void *':
|
||||
return name, 'const GLvoid *'
|
||||
if tmp=='const void **':
|
||||
return name, 'const GLvoid **'
|
||||
if tmp.startswith('void*'):
|
||||
return name, 'GLvoid *%s'%tmp[5:]
|
||||
if tmp=='GLchar*':
|
||||
return name, 'GLchar *'
|
||||
if tmp=='const GLchar*':
|
||||
return name, 'const GLchar *'
|
||||
return name, tmp.strip()
|
||||
else:
|
||||
return name,type
|
||||
|
||||
# splitFunction
|
||||
|
||||
functionRE = re.compile('((const )?[a-zA-Z][a-zA-Z0-9_ ]*[ \*]+(const )?)([^\(]+)(\([^\)]*\))')
|
||||
|
||||
def splitFunction(f):
|
||||
m = functionRE.match(f)
|
||||
if m:
|
||||
return (m.group(1).strip(),m.group(4).strip(),m.group(5).strip())
|
||||
else:
|
||||
return ()
|
||||
|
||||
# extensionToPyCode
|
||||
#
|
||||
# Return a tuple Python code representation of an
|
||||
# extension specification:
|
||||
#
|
||||
# ( enums, enumsAdd, functions, functionsAdd)
|
||||
#
|
||||
|
||||
def extensionToPyCode(ext):
|
||||
|
||||
category = ext[0]
|
||||
enums = ext[3]
|
||||
functions = ext[4]
|
||||
|
||||
enums = [ (i.split(' ')[0].strip(), i.split(' ')[1].strip()) for i in enums ]
|
||||
functions = [ splitFunction(i) for i in functions ]
|
||||
|
||||
pyEnums = []
|
||||
for i in enums:
|
||||
code = []
|
||||
value = i[1]
|
||||
if not i[1].startswith('0x'):
|
||||
try:
|
||||
value = '0x%04x'%(long(value))
|
||||
except:
|
||||
value = '\'%s\''%i[1]
|
||||
i = ( i[0], '\'%s\''%i[1] )
|
||||
code.append( '%-45s = Enumerant(\'%s\',%s,\'%s\')'%(i[0],i[0],value,category) )
|
||||
pyEnums.append( tuple(code) )
|
||||
|
||||
pyEnumsAdd = []
|
||||
for i in enums:
|
||||
code = []
|
||||
code.append( 'defines.add(%s)'%(i[0]) )
|
||||
pyEnumsAdd.append( tuple(code) )
|
||||
|
||||
pyFunctions = []
|
||||
for i in functions:
|
||||
ret = i[0]
|
||||
ret = tidyNameType('foo',i[0])[1]
|
||||
name = i[1]
|
||||
params = i[2].replace('(','').replace(')','').split(',')
|
||||
params = [ j.strip() for j in params ]
|
||||
params = [ splitParam(j) for j in params ]
|
||||
params = [ tidyNameType(j[0],j[1]) for j in params ]
|
||||
code = []
|
||||
code.append( '%s = Function(\'%s\')'%(name,name) )
|
||||
code.append( '%s.ret = Return(\'%s\')'%(name,ret) )
|
||||
for i in params:
|
||||
if i[1]!=None and not (i[0]==None and i[1]=='void'):
|
||||
code.append( '%s.add(Input(\'%s\',\'%s\'))'%(name,i[0],i[1]) )
|
||||
code.append( '%s.category = \'%s\''%(name,category) )
|
||||
pyFunctions.append( tuple(code) )
|
||||
|
||||
pyFunctionsAdd = []
|
||||
for i in functions:
|
||||
code = []
|
||||
code.append( '%s.add(%s)'%(options.api,i[1]) )
|
||||
pyFunctionsAdd.append( tuple(code) )
|
||||
|
||||
return tuple(pyEnums), tuple(pyEnumsAdd), tuple(pyFunctions), tuple(pyFunctionsAdd)
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
# main
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
parser = OptionParser('usage: %prog [options] [SOURCES...]')
|
||||
parser.add_option('-a', '--api', dest = 'api', help = 'API name', default = 'gl')
|
||||
parser.add_option('-i', '--input', dest = 'input', metavar = 'FILE', action = 'append', help = 'input file(s) in GLEW extension format', default = [])
|
||||
parser.add_option('-o', '--output', dest = 'output', metavar = 'FILE', help = 'Python output file', default = [])
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
options.input.extend(args)
|
||||
|
||||
if not options.input:
|
||||
options.input = '-'
|
||||
|
||||
# Read input files, convert to list of strings, and strip line endings
|
||||
|
||||
if options.input!='-':
|
||||
files = [ [ j.rstrip() for j in open(i, 'r').readlines() ] for i in options.input ]
|
||||
else:
|
||||
files = [ j.rstrip() for j in sys.stdin.readlines() ]
|
||||
|
||||
# convert to .py
|
||||
# ( category, URL, namestring, ( enums ), ( functions ), (handles) , (typedefs))
|
||||
|
||||
ext = []
|
||||
for i in files:
|
||||
e = readGLEWextension(i)
|
||||
e = ( e[0], e[1], e[2], sorted(e[3]), sorted(e[4]), sorted(e[5]), sorted(e[6]))
|
||||
ext.append(tuple([e,(extensionToPyCode(e))]))
|
||||
|
||||
# output file
|
||||
|
||||
if options.output:
|
||||
file = open(options.output, 'w')
|
||||
else:
|
||||
file = sys.stdout
|
||||
|
||||
print >>file, '''import Api
|
||||
from Api import Api
|
||||
from Api import Function, Typedef, Enum
|
||||
from Api import Return, Parameter, Input, Output, InputOutput
|
||||
from Api import Enumerant
|
||||
from Api import Extension
|
||||
|
||||
%s = Api()
|
||||
defines = Enum('defines')
|
||||
%s.add(defines)
|
||||
|
||||
'''%(options.api,options.api)
|
||||
|
||||
for i in ext:
|
||||
print >>file, '# %s'%(i[0][0])
|
||||
print >>file, ''
|
||||
for j in i[1][0]:
|
||||
print >>file, '\n'.join(j)
|
||||
print >>file, ''
|
||||
for i in ext:
|
||||
print >>file, '# %s'%(i[0][0])
|
||||
print >>file, ''
|
||||
for j in i[1][1]:
|
||||
print >>file, '\n'.join(j)
|
||||
print >>file, ''
|
||||
for i in ext:
|
||||
print >>file, '# %s'%(i[0][0])
|
||||
print >>file, ''
|
||||
for j in i[1][2]:
|
||||
print >>file, '%s\n'%('\n'.join(j))
|
||||
print >>file, ''
|
||||
for i in ext:
|
||||
print >>file, '# %s'%(i[0][0])
|
||||
print >>file, ''
|
||||
for j in i[1][3]:
|
||||
print >>file, '\n'.join(j)
|
||||
print >>file, ''
|
||||
|
||||
# Output Extensions
|
||||
for i in ext:
|
||||
print >>file, '%-45s = Extension(\'%s\',\'%s\')'%(i[0][0],i[0][0],i[0][1])
|
||||
print >>file, ''
|
||||
|
||||
for i in ext:
|
||||
if len(i[0][4]):
|
||||
print >>file, '%s.functions = [\'%s\']'%(i[0][0],'\',\''.join([j.split(' ')[1] for j in i[0][4]]))
|
||||
print >>file, ''
|
||||
|
||||
for i in ext:
|
||||
if len(i[0][3]):
|
||||
print >>file, '%s.enumerants = [\'%s\']'%(i[0][0],'\',\''.join([j.split(' ')[0] for j in i[0][3]]))
|
||||
print >>file, ''
|
||||
|
||||
for i in ext:
|
||||
print >>file, '%s.add(%s)'%(options.api,i[0][0])
|
||||
print >>file, ''
|
||||
|
||||
|
|
@ -150,6 +150,19 @@ struct RegalContext
|
|||
scoped_ptr<DebugInfo> dbg;
|
||||
scoped_ptr<ContextInfo> info;
|
||||
scoped_ptr<EmuInfo> emuInfo;
|
||||
std::set<std::string> extensionsSet;
|
||||
std::string extensions;
|
||||
|
||||
|
||||
inline void numExtensions(GLboolean *params)
|
||||
{
|
||||
*params = !!extensionsSet.size();
|
||||
}
|
||||
|
||||
template <typename T> inline void numExtensions(T *params)
|
||||
{
|
||||
*params = static_cast<T>(extensionsSet.size());
|
||||
}
|
||||
|
||||
#if REGAL_STATISTICS
|
||||
scoped_ptr<Statistics> statistics;
|
||||
|
|
@ -235,6 +248,9 @@ ${LICENSE}
|
|||
|
||||
#include "RegalUtil.h"
|
||||
|
||||
#include <boost/print/string_list.hpp>
|
||||
using namespace boost::print;
|
||||
|
||||
REGAL_GLOBAL_BEGIN
|
||||
|
||||
#include "RegalConfig.h"
|
||||
|
|
@ -370,6 +386,13 @@ ${EMU_MEMBER_INIT}
|
|||
http.Init( this );
|
||||
#endif
|
||||
|
||||
if (info && emuInfo)
|
||||
{
|
||||
extensionsSet.insert(info->extensionsSet.begin(), info->extensionsSet.end());
|
||||
extensionsSet.insert(emuInfo->extensionsSet.begin(), emuInfo->extensionsSet.end());
|
||||
extensions = ::boost::print::detail::join(extensionsSet,std::string(" "));
|
||||
}
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ def generateStaticES2Source(apis, args):
|
|||
for api in apis:
|
||||
if api.name=='gl':
|
||||
|
||||
# undefine the glFoo macros
|
||||
|
||||
for function in api.functions:
|
||||
if not function.needsContext:
|
||||
continue
|
||||
|
|
@ -48,6 +50,20 @@ def generateStaticES2Source(apis, args):
|
|||
name = function.name
|
||||
code += '#undef %s\n' % ( name )
|
||||
|
||||
# For NaCL, define glFoo -> GLES2Foo
|
||||
# This is to match GLES/gl2.h in pepper_35
|
||||
|
||||
code += '\n'
|
||||
code += '#if REGAL_SYS_PPAPI\n'
|
||||
for function in api.functions:
|
||||
if not function.needsContext:
|
||||
continue
|
||||
if getattr(function,'esVersions',None)==None or 2.0 not in function.esVersions:
|
||||
continue
|
||||
name = function.name
|
||||
code += '#define %s GLES2%s\n' % ( name, name[2:] )
|
||||
code += '#endif\n'
|
||||
|
||||
code += '\n'
|
||||
code += 'extern "C"\n'
|
||||
code += '{\n'
|
||||
|
|
|
|||
|
|
@ -27,6 +27,9 @@ REGAL_GLOBAL_BEGIN
|
|||
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
REGAL_GLOBAL_END
|
||||
|
||||
|
|
|
|||
2
src/apitrace/thirdparty/msinttypes/stdbool.h
vendored
2
src/apitrace/thirdparty/msinttypes/stdbool.h
vendored
|
|
@ -35,7 +35,7 @@
|
|||
#define bool _Bool
|
||||
|
||||
/* For compilers that don't have the builtin _Bool type. */
|
||||
#if defined(_MSC_VER) || (__STDC_VERSION__ < 199901L && __GNUC__ < 3)
|
||||
#if ((defined(_MSC_VER) && (_MSC_VER < 1800)) || (!defined(_MSC_VER) && __STDC_VERSION__ < 199901L && __GNUC__ < 3)) && !defined(_lint)
|
||||
typedef unsigned char _Bool;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -257,14 +257,14 @@ private:
|
|||
|
||||
// 8-bit unsigned integer
|
||||
|
||||
inline size_t unsigned_length(const boost::uint8_t val)
|
||||
inline size_t unsigned_length_uint8(const boost::uint8_t &val)
|
||||
{
|
||||
return val<10 ? 1 : (val<100 ? 2 : 3);
|
||||
}
|
||||
|
||||
// 16-bit unsigned integer
|
||||
|
||||
inline size_t unsigned_length(const boost::uint16_t val)
|
||||
inline size_t unsigned_length_uint16(const boost::uint16_t &val)
|
||||
{
|
||||
if (val<1000)
|
||||
return val<10 ? 1 : (val<100 ? 2 : 3);
|
||||
|
|
@ -274,7 +274,7 @@ inline size_t unsigned_length(const boost::uint16_t val)
|
|||
|
||||
// 32-bit unsigned integer
|
||||
|
||||
inline size_t unsigned_length(const boost::uint32_t val)
|
||||
inline size_t unsigned_length_uint32(const boost::uint32_t &val)
|
||||
{
|
||||
if (val<10000)
|
||||
return val<100 ? (val<10 ? 1 : 2) : (val<1000 ? 3 : 4);
|
||||
|
|
@ -286,7 +286,7 @@ inline size_t unsigned_length(const boost::uint32_t val)
|
|||
|
||||
// 64-bit unsigned integer
|
||||
|
||||
inline size_t unsigned_length(const boost::uint64_t val)
|
||||
inline size_t unsigned_length_uint64(const boost::uint64_t &val)
|
||||
{
|
||||
if (val<100000000ll)
|
||||
{
|
||||
|
|
@ -309,65 +309,20 @@ inline size_t unsigned_length(const boost::uint64_t val)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(__APPLE__) && defined(__i386)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
// Determine the number of digits of an unsigned integer
|
||||
|
||||
#if defined(__APPLE__) && defined(__x86_64)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint64_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__APPLE__) && defined(__ppc__)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__APPLE__) && defined(__arm__)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__native_client__) && (defined(__i386) || defined(__x86_64) || defined(__arm__))
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__ANDROID__) && defined(__i386__)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__ANDROID__) && defined(__ARM_ARCH__)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__linux) && defined(__i386) && !defined(__native_client__) && !defined(__ANDROID__)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__linux) && defined(__x86_64) && !defined(__native_client__) && !defined(__ANDROID__)
|
||||
inline size_t unsigned_length(const unsigned long long val) { return unsigned_length(static_cast<boost::uint64_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(__linux) && defined(__arm__) && !defined(__native_client__) && !defined(__ANDROID__)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if (defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(__sun)) && defined(__i386)
|
||||
inline size_t unsigned_length(const unsigned int val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if (defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(__sun)) && defined(__x86_64)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint64_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) && !defined(_WIN64)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) && defined(_WIN64)
|
||||
inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint64_t>(val)); }
|
||||
#endif
|
||||
|
||||
#if defined(EMSCRIPTEN)
|
||||
inline size_t unsigned_length(const unsigned long val) {return unsigned_length(static_cast<boost::uint32_t>(val)); }
|
||||
#endif
|
||||
template<typename U>
|
||||
inline size_t unsigned_length(const U &val)
|
||||
{
|
||||
switch (sizeof(U))
|
||||
{
|
||||
case 1: return unsigned_length_uint8 (static_cast<const boost::uint8_t >(val));
|
||||
case 2: return unsigned_length_uint16(static_cast<const boost::uint16_t>(val));
|
||||
case 4: return unsigned_length_uint32(static_cast<const boost::uint32_t>(val));
|
||||
case 8: return unsigned_length_uint64(static_cast<const boost::uint64_t>(val));
|
||||
default: return 0; /* oops... */
|
||||
}
|
||||
}
|
||||
|
||||
// Determine the number of digits of a signed integer
|
||||
|
||||
|
|
@ -377,7 +332,7 @@ inline size_t signed_length(S val)
|
|||
const bool negative = val<0;
|
||||
if (negative)
|
||||
val = -val;
|
||||
return unsigned_length(static_cast<U>(val)) + (negative ? 1 : 0);
|
||||
return unsigned_length<U>(static_cast<U>(val)) + (negative ? 1 : 0);
|
||||
}
|
||||
|
||||
inline size_t sprintf_length(const char *fmt, ...)
|
||||
|
|
|
|||
|
|
@ -155,11 +155,11 @@ using ::boost::print::detail::write_iterator;
|
|||
|
||||
inline size_t length(bool val) { return val ? 4 : 5; /* true or false */ }
|
||||
|
||||
inline size_t length(unsigned char val) { return unsigned_length(val); }
|
||||
inline size_t length(unsigned short val) { return unsigned_length(val); }
|
||||
inline size_t length(unsigned int val) { return unsigned_length(val); }
|
||||
inline size_t length(unsigned long val) { return unsigned_length(val); }
|
||||
inline size_t length(unsigned long long val) { return unsigned_length(val); }
|
||||
inline size_t length(unsigned char val) { return unsigned_length<unsigned char >(val); }
|
||||
inline size_t length(unsigned short val) { return unsigned_length<unsigned short >(val); }
|
||||
inline size_t length(unsigned int val) { return unsigned_length<unsigned int >(val); }
|
||||
inline size_t length(unsigned long val) { return unsigned_length<unsigned long >(val); }
|
||||
inline size_t length(unsigned long long val) { return unsigned_length<unsigned long long>(val); }
|
||||
|
||||
inline size_t length(signed char val) { return signed_length<unsigned char >(val); }
|
||||
inline size_t length(signed short val) { return signed_length<unsigned short >(val); }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
@ -1621,20 +1621,20 @@ typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p);
|
|||
#ifndef GL_VERSION_1_5
|
||||
#define GL_VERSION_1_5 1
|
||||
|
||||
#define GL_SRC1_RGB GL_SOURCE1_RGB
|
||||
#define GL_FOG_COORD GL_FOG_COORDINATE
|
||||
#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
|
||||
#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
|
||||
#define GL_SRC2_RGB GL_SOURCE2_RGB
|
||||
#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
|
||||
#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
|
||||
#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
|
||||
#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
|
||||
#define GL_FOG_COORD GL_FOG_COORDINATE
|
||||
#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
|
||||
#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
|
||||
#define GL_SRC0_RGB GL_SOURCE0_RGB
|
||||
#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
|
||||
#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
|
||||
#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
|
||||
#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
|
||||
#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
|
||||
#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
|
||||
#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA
|
||||
#define GL_SRC0_RGB GL_SOURCE0_RGB
|
||||
#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA
|
||||
#define GL_SRC1_RGB GL_SOURCE1_RGB
|
||||
#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA
|
||||
#define GL_SRC2_RGB GL_SOURCE2_RGB
|
||||
#define GL_BUFFER_SIZE 0x8764
|
||||
#define GL_BUFFER_USAGE 0x8765
|
||||
#define GL_QUERY_COUNTER_BITS 0x8864
|
||||
|
|
@ -2053,15 +2053,15 @@ typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei
|
|||
#ifndef GL_VERSION_3_0
|
||||
#define GL_VERSION_3_0 1
|
||||
|
||||
#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES
|
||||
#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2
|
||||
#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5
|
||||
#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS
|
||||
#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1
|
||||
#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB
|
||||
#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3
|
||||
#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0
|
||||
#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1
|
||||
#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2
|
||||
#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3
|
||||
#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4
|
||||
#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5
|
||||
#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB
|
||||
#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES
|
||||
#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS
|
||||
#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001
|
||||
#define GL_MAJOR_VERSION 0x821B
|
||||
#define GL_MINOR_VERSION 0x821C
|
||||
|
|
@ -4147,8 +4147,8 @@ typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint frame
|
|||
#define GL_TEXTURE_STENCIL_SIZE 0x88F1
|
||||
#define GL_UNSIGNED_NORMALIZED 0x8C17
|
||||
#define GL_SRGB 0x8C40
|
||||
#define GL_FRAMEBUFFER_BINDING 0x8CA6
|
||||
#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
|
||||
#define GL_FRAMEBUFFER_BINDING 0x8CA6
|
||||
#define GL_RENDERBUFFER_BINDING 0x8CA7
|
||||
#define GL_READ_FRAMEBUFFER 0x8CA8
|
||||
#define GL_DRAW_FRAMEBUFFER 0x8CA9
|
||||
|
|
@ -7588,12 +7588,12 @@ typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint
|
|||
|
||||
#define GL_2X_BIT_ATI 0x00000001
|
||||
#define GL_RED_BIT_ATI 0x00000001
|
||||
#define GL_GREEN_BIT_ATI 0x00000002
|
||||
#define GL_COMP_BIT_ATI 0x00000002
|
||||
#define GL_4X_BIT_ATI 0x00000002
|
||||
#define GL_COMP_BIT_ATI 0x00000002
|
||||
#define GL_GREEN_BIT_ATI 0x00000002
|
||||
#define GL_8X_BIT_ATI 0x00000004
|
||||
#define GL_NEGATE_BIT_ATI 0x00000004
|
||||
#define GL_BLUE_BIT_ATI 0x00000004
|
||||
#define GL_NEGATE_BIT_ATI 0x00000004
|
||||
#define GL_BIAS_BIT_ATI 0x00000008
|
||||
#define GL_HALF_BIT_ATI 0x00000008
|
||||
#define GL_QUARTER_BIT_ATI 0x00000010
|
||||
|
|
@ -12491,19 +12491,19 @@ typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target,
|
|||
#define GL_NV_path_rendering 1
|
||||
|
||||
#define GL_CLOSE_PATH_NV 0x00
|
||||
#define GL_GLYPH_WIDTH_BIT_NV 0x01
|
||||
#define GL_BOLD_BIT_NV 0x01
|
||||
#define GL_GLYPH_WIDTH_BIT_NV 0x01
|
||||
#define GL_GLYPH_HEIGHT_BIT_NV 0x02
|
||||
#define GL_MOVE_TO_NV 0x02
|
||||
#define GL_ITALIC_BIT_NV 0x02
|
||||
#define GL_MOVE_TO_NV 0x02
|
||||
#define GL_RELATIVE_MOVE_TO_NV 0x03
|
||||
#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
|
||||
#define GL_LINE_TO_NV 0x04
|
||||
#define GL_RELATIVE_LINE_TO_NV 0x05
|
||||
#define GL_HORIZONTAL_LINE_TO_NV 0x06
|
||||
#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
|
||||
#define GL_VERTICAL_LINE_TO_NV 0x08
|
||||
#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
|
||||
#define GL_VERTICAL_LINE_TO_NV 0x08
|
||||
#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
|
||||
#define GL_QUADRATIC_CURVE_TO_NV 0x0A
|
||||
#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
|
||||
|
|
@ -13154,8 +13154,8 @@ typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture
|
|||
#define GL_CULL_MODES_NV 0x86E0
|
||||
#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
|
||||
#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
|
||||
#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
|
||||
#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
|
||||
#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
|
||||
#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
|
||||
#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
|
||||
#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
|
||||
|
|
@ -14626,9 +14626,9 @@ typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);
|
|||
#ifndef GL_SGIX_fog_texture
|
||||
#define GL_SGIX_fog_texture 1
|
||||
|
||||
#define GL_TEXTURE_FOG_SGIX 0
|
||||
#define GL_FRAGMENT_FOG_SGIX 0
|
||||
#define GL_FOG_PATCHY_FACTOR_SGIX 0
|
||||
#define GL_FRAGMENT_FOG_SGIX 0
|
||||
#define GL_TEXTURE_FOG_SGIX 0
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
@ -205,10 +205,10 @@ typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
|
|||
#define GLX_RGBA_BIT 0x00000001
|
||||
#define GLX_WINDOW_BIT 0x00000001
|
||||
#define GLX_COLOR_INDEX_BIT 0x00000002
|
||||
#define GLX_PIXMAP_BIT 0x00000002
|
||||
#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
|
||||
#define GLX_PBUFFER_BIT 0x00000004
|
||||
#define GLX_PIXMAP_BIT 0x00000002
|
||||
#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
|
||||
#define GLX_PBUFFER_BIT 0x00000004
|
||||
#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
|
||||
#define GLX_AUX_BUFFERS_BIT 0x00000010
|
||||
#define GLX_DEPTH_BUFFER_BIT 0x00000020
|
||||
|
|
@ -1170,10 +1170,10 @@ typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, i
|
|||
#ifndef GLX_SGIX_fbconfig
|
||||
#define GLX_SGIX_fbconfig 1
|
||||
|
||||
#define GLX_WINDOW_BIT_SGIX 0x00000001
|
||||
#define GLX_RGBA_BIT_SGIX 0x00000001
|
||||
#define GLX_PIXMAP_BIT_SGIX 0x00000002
|
||||
#define GLX_WINDOW_BIT_SGIX 0x00000001
|
||||
#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
|
||||
#define GLX_PIXMAP_BIT_SGIX 0x00000002
|
||||
#define GLX_SCREEN_EXT 0x800C
|
||||
#define GLX_DRAWABLE_TYPE_SGIX 0x8010
|
||||
#define GLX_RENDER_TYPE_SGIX 0x8011
|
||||
|
|
@ -1208,8 +1208,8 @@ typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLX
|
|||
#ifndef GLX_SGIX_hyperpipe
|
||||
#define GLX_SGIX_hyperpipe 1
|
||||
|
||||
#define GLX_PIPE_RECT_SGIX 0x00000001
|
||||
#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
|
||||
#define GLX_PIPE_RECT_SGIX 0x00000001
|
||||
#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
|
||||
#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
|
||||
#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
** The OpenGL Extension Wrangler Library
|
||||
** Copyright (C) 2008-2013, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2008-2014, Nigel Stewart <nigels[]users sourceforge net>
|
||||
** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
|
||||
** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
** Copyright (C) 2002, Lev Povalahev
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
#define bool _Bool
|
||||
|
||||
/* For compilers that don't have the builtin _Bool type. */
|
||||
#if (defined(_MSC_VER) || (__STDC_VERSION__ < 199901L && __GNUC__ < 3)) && !defined(_lint)
|
||||
#if ((defined(_MSC_VER) && (_MSC_VER < 1800)) || (!defined(_MSC_VER) && __STDC_VERSION__ < 199901L && __GNUC__ < 3)) && !defined(_lint)
|
||||
typedef unsigned char _Bool;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
@ -1429,6 +1429,16 @@ extern "C" {
|
|||
#endif
|
||||
App("glGetBooleanv","(", toString(pname), ")");
|
||||
if (!_context) return;
|
||||
// Regal interceptions
|
||||
switch (pname)
|
||||
{
|
||||
case GL_NUM_EXTENSIONS:
|
||||
_context->numExtensions( params );
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
DispatchTableGL *_next = &_context->dispatcher.front();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glGetBooleanv)(pname, params);
|
||||
|
|
@ -1457,6 +1467,16 @@ extern "C" {
|
|||
#endif
|
||||
App("glGetDoublev","(", toString(pname), ")");
|
||||
if (!_context) return;
|
||||
// Regal interceptions
|
||||
switch (pname)
|
||||
{
|
||||
case GL_NUM_EXTENSIONS:
|
||||
_context->numExtensions( params );
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
DispatchTableGL *_next = &_context->dispatcher.front();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glGetDoublev)(pname, params);
|
||||
|
|
@ -1485,6 +1505,16 @@ extern "C" {
|
|||
#endif
|
||||
App("glGetFloatv","(", toString(pname), ")");
|
||||
if (!_context) return;
|
||||
// Regal interceptions
|
||||
switch (pname)
|
||||
{
|
||||
case GL_NUM_EXTENSIONS:
|
||||
_context->numExtensions( params );
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
DispatchTableGL *_next = &_context->dispatcher.front();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glGetFloatv)(pname, params);
|
||||
|
|
@ -1499,6 +1529,16 @@ extern "C" {
|
|||
#endif
|
||||
App("glGetIntegerv","(", toString(pname), ")");
|
||||
if (!_context) return;
|
||||
// Regal interceptions
|
||||
switch (pname)
|
||||
{
|
||||
case GL_NUM_EXTENSIONS:
|
||||
_context->numExtensions( params );
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
DispatchTableGL *_next = &_context->dispatcher.front();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glGetIntegerv)(pname, params);
|
||||
|
|
@ -1674,7 +1714,7 @@ extern "C" {
|
|||
case GL_VENDOR: return reinterpret_cast<const GLubyte *>(_context->emuInfo->vendor.c_str());
|
||||
case GL_RENDERER: return reinterpret_cast<const GLubyte *>(_context->emuInfo->renderer.c_str());
|
||||
case GL_VERSION: return reinterpret_cast<const GLubyte *>(_context->emuInfo->version.c_str());
|
||||
case GL_EXTENSIONS: return reinterpret_cast<const GLubyte *>(_context->emuInfo->extensions.c_str());
|
||||
case GL_EXTENSIONS: return reinterpret_cast<const GLubyte *>(_context->extensions.c_str());
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -8310,6 +8350,18 @@ extern "C" {
|
|||
#endif
|
||||
App("glGetStringi","(", toString(name), ", ", index, ")");
|
||||
if (!_context) return NULL;
|
||||
// Regal interceptions
|
||||
switch (name)
|
||||
{
|
||||
case GL_EXTENSIONS:
|
||||
{
|
||||
std::set<std::string>::iterator it = _context->extensionsSet.begin();
|
||||
std::advance(it, index);
|
||||
return reinterpret_cast<const GLubyte *>(it->c_str());
|
||||
};
|
||||
default:
|
||||
break;
|
||||
}
|
||||
DispatchTableGL *_next = &_context->dispatcher.front();
|
||||
RegalAssert(_next);
|
||||
return _next->call(&_next->glGetStringi)(name, index);
|
||||
|
|
@ -15846,6 +15898,16 @@ extern "C" {
|
|||
#endif
|
||||
App("glGetInteger64v","(", toString(pname), ")");
|
||||
if (!_context) return;
|
||||
// Regal interceptions
|
||||
switch (pname)
|
||||
{
|
||||
case GL_NUM_EXTENSIONS:
|
||||
_context->numExtensions( params );
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
DispatchTableGL *_next = &_context->dispatcher.front();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glGetInteger64v)(pname, params);
|
||||
|
|
|
|||
|
|
@ -162,60 +162,215 @@ struct BaseVertex : public ClientState::VertexArray
|
|||
dt.call(&dt.glBindBuffer)(GL_ARRAY_BUFFER, ClientState::VertexArray::arrayBufferBinding);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
GLvoid* adjust_indices(GLsizei count, const GLvoid *indices, GLint basevertex)
|
||||
{
|
||||
T* ptr = (T*)malloc(count * sizeof(T));
|
||||
if(!ptr) return 0;
|
||||
for(GLsizei i = 0; i < count; i++) ptr[i] = ((T*)indices)[i] + (T) basevertex;
|
||||
return (GLvoid*) ptr;
|
||||
}
|
||||
|
||||
GLvoid* adjust_indices(GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case GL_UNSIGNED_BYTE:
|
||||
return adjust_indices<GLubyte>(count, indices, basevertex);
|
||||
case GL_UNSIGNED_SHORT:
|
||||
return adjust_indices<GLushort>(count, indices, basevertex);
|
||||
case GL_UNSIGNED_INT:
|
||||
return adjust_indices<GLuint>(count, indices, basevertex);
|
||||
default:
|
||||
RegalAssert( "Unknown <type> in for adjust_indices." );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool glDrawElementsBaseVertex(RegalContext &ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
|
||||
{
|
||||
if (ClientState::VertexArray::vertexArrayBinding)
|
||||
return false;
|
||||
|
||||
DispatchTableGL &dt = ctx.dispatcher.emulation;
|
||||
|
||||
GLvoid* adjusted_indices = 0;
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, basevertex);
|
||||
dt.call(&dt.glDrawElements)(mode, count, type, indices);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
{
|
||||
adjust(ctx, dt, basevertex);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjusted_indices = adjust_indices(count, type, indices, basevertex);
|
||||
if (!adjusted_indices)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (basevertex && adjusted_indices)
|
||||
dt.call(&dt.glDrawElements)(mode, count, type, adjusted_indices);
|
||||
else
|
||||
dt.call(&dt.glDrawElements)(mode, count, type, indices);
|
||||
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, 0);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
adjust(ctx, dt, 0);
|
||||
else
|
||||
free(adjusted_indices);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool glDrawRangeElementsBaseVertex(RegalContext &ctx, GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
|
||||
{
|
||||
if (ClientState::VertexArray::vertexArrayBinding)
|
||||
return false;
|
||||
|
||||
DispatchTableGL &dt = ctx.dispatcher.emulation;
|
||||
|
||||
GLvoid* adjusted_indices = 0;
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, basevertex);
|
||||
dt.call(&dt.glDrawRangeElements)(mode, start, end, count, type, indices);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
{
|
||||
adjust(ctx, dt, basevertex);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjusted_indices = adjust_indices(count, type, indices, basevertex);
|
||||
if (!adjusted_indices)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (basevertex && adjusted_indices)
|
||||
dt.call(&dt.glDrawRangeElements)(mode, start, end, count, type, adjusted_indices);
|
||||
else
|
||||
dt.call(&dt.glDrawRangeElements)(mode, start, end, count, type, indices);
|
||||
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, 0);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
adjust(ctx, dt, 0);
|
||||
else
|
||||
free(adjusted_indices);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool glDrawElementsInstancedBaseVertex(RegalContext &ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex)
|
||||
{
|
||||
if (ClientState::VertexArray::vertexArrayBinding)
|
||||
return false;
|
||||
|
||||
DispatchTableGL &dt = ctx.dispatcher.emulation;
|
||||
|
||||
GLvoid* adjusted_indices = 0;
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, basevertex);
|
||||
dt.call(&dt.glDrawElementsInstanced)(mode, count, type, indices, primcount);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
{
|
||||
adjust(ctx, dt, basevertex);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjusted_indices = adjust_indices(count, type, indices, basevertex);
|
||||
if (!adjusted_indices)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (basevertex && adjusted_indices)
|
||||
dt.call(&dt.glDrawElementsInstanced)(mode, count, type, adjusted_indices, primcount);
|
||||
else
|
||||
dt.call(&dt.glDrawElementsInstanced)(mode, count, type, indices, primcount);
|
||||
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, 0);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
adjust(ctx, dt, 0);
|
||||
else
|
||||
free(adjusted_indices);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool glDrawElementsInstancedBaseVertexBaseInstance(RegalContext &ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance)
|
||||
{
|
||||
if (ClientState::VertexArray::vertexArrayBinding)
|
||||
return false;
|
||||
|
||||
DispatchTableGL &dt = ctx.dispatcher.emulation;
|
||||
|
||||
GLvoid* adjusted_indices = 0;
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, basevertex);
|
||||
dt.call(&dt.glDrawElementsInstancedBaseInstance)(mode, count, type, indices, primcount, baseinstance);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
{
|
||||
adjust(ctx, dt, basevertex);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjusted_indices = adjust_indices(count, type, indices, basevertex);
|
||||
if (!adjusted_indices)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (basevertex && adjusted_indices)
|
||||
dt.call(&dt.glDrawElementsInstancedBaseInstance)(mode, count, type, adjusted_indices, primcount, baseinstance);
|
||||
else
|
||||
dt.call(&dt.glDrawElementsInstancedBaseInstance)(mode, count, type, indices, primcount, baseinstance);
|
||||
|
||||
if (basevertex)
|
||||
adjust(ctx, dt, 0);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
adjust(ctx, dt, 0);
|
||||
else
|
||||
free(adjusted_indices);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool glMultiDrawElementsBaseVertex(RegalContext &ctx, GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const* indices, GLsizei primcount, const GLint *basevertex)
|
||||
{
|
||||
if (ClientState::VertexArray::vertexArrayBinding)
|
||||
return false;
|
||||
|
||||
DispatchTableGL &dt = ctx.dispatcher.emulation;
|
||||
|
||||
for (GLsizei ii=0; ii<primcount; ii++)
|
||||
{
|
||||
GLvoid* adjusted_indices = 0;
|
||||
if (basevertex[ii])
|
||||
adjust(ctx, dt, basevertex[ii]);
|
||||
dt.call(&dt.glDrawElements)(mode, count[ii], type, indices[ii]);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
{
|
||||
adjust(ctx, dt, basevertex[ii]);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjusted_indices = adjust_indices(count[ii], type, indices[ii], basevertex[ii]);
|
||||
if (!adjusted_indices)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (basevertex[ii] && adjusted_indices)
|
||||
dt.call(&dt.glDrawElements)(mode, count[ii], type, adjusted_indices);
|
||||
else
|
||||
dt.call(&dt.glDrawElements)(mode, count[ii], type, indices[ii]);
|
||||
|
||||
if (basevertex[ii])
|
||||
adjust(ctx, dt, 0);
|
||||
{
|
||||
if (ClientState::VertexArray::elementArrayBufferBinding)
|
||||
adjust(ctx, dt, 0);
|
||||
else
|
||||
free(adjusted_indices);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
@ -42,6 +42,9 @@
|
|||
|
||||
#include "RegalUtil.h"
|
||||
|
||||
#include <boost/print/string_list.hpp>
|
||||
using namespace boost::print;
|
||||
|
||||
REGAL_GLOBAL_BEGIN
|
||||
|
||||
#include "RegalConfig.h"
|
||||
|
|
@ -497,6 +500,13 @@ RegalContext::Init()
|
|||
http.Init( this );
|
||||
#endif
|
||||
|
||||
if (info && emuInfo)
|
||||
{
|
||||
extensionsSet.insert(info->extensionsSet.begin(), info->extensionsSet.end());
|
||||
extensionsSet.insert(emuInfo->extensionsSet.begin(), emuInfo->extensionsSet.end());
|
||||
extensions = ::boost::print::detail::join(extensionsSet,std::string(" "));
|
||||
}
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
@ -116,6 +116,18 @@ struct RegalContext
|
|||
scoped_ptr<DebugInfo> dbg;
|
||||
scoped_ptr<ContextInfo> info;
|
||||
scoped_ptr<EmuInfo> emuInfo;
|
||||
std::set<std::string> extensionsSet;
|
||||
std::string extensions;
|
||||
|
||||
inline void numExtensions(GLboolean *params)
|
||||
{
|
||||
*params = !!extensionsSet.size();
|
||||
}
|
||||
|
||||
template <typename T> inline void numExtensions(T *params)
|
||||
{
|
||||
*params = static_cast<T>(extensionsSet.size());
|
||||
}
|
||||
|
||||
#if REGAL_STATISTICS
|
||||
scoped_ptr<Statistics> statistics;
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
@ -19312,6 +19312,68 @@ static void REGAL_CALL emu_glViewport(GLint x, GLint y, GLsizei width, GLsizei h
|
|||
|
||||
// GL_VERSION_1_1
|
||||
|
||||
static void REGAL_CALL emu_glArrayElement(GLint index)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
RegalAssert(_context);
|
||||
DispatchTableGL &_dispatch = _context->dispatcher.emulation;
|
||||
|
||||
// prefix
|
||||
switch( _context->emuLevel )
|
||||
{
|
||||
case 16 :
|
||||
case 15 :
|
||||
case 14 :
|
||||
case 13 :
|
||||
case 12 :
|
||||
case 11 :
|
||||
case 10 :
|
||||
case 9 :
|
||||
case 8 :
|
||||
case 7 :
|
||||
#if REGAL_EMU_IFF
|
||||
if (_context->iff) break;
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// impl
|
||||
switch( _context->emuLevel )
|
||||
{
|
||||
case 16 :
|
||||
case 15 :
|
||||
case 14 :
|
||||
case 13 :
|
||||
case 12 :
|
||||
case 11 :
|
||||
case 10 :
|
||||
case 9 :
|
||||
case 8 :
|
||||
case 7 :
|
||||
#if REGAL_EMU_IFF
|
||||
if (_context->iff)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 6;
|
||||
_context->iff->ProvokeElement( _context, index );
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
{
|
||||
DispatchTableGL *_next = _dispatch.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glArrayElement)(index);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void REGAL_CALL emu_glBindTexture(GLenum target, GLuint texture)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
|
|
@ -19848,15 +19910,6 @@ static void REGAL_CALL emu_glDrawArrays(GLenum mode, GLint first, GLsizei count)
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -19883,9 +19936,7 @@ static void REGAL_CALL emu_glDrawArrays(GLenum mode, GLint first, GLsizei count)
|
|||
_context->emuLevel = 5;
|
||||
|
||||
if ( ! _context->quads->glDrawArrays( _context, mode, first, count ) ) {
|
||||
DispatchTableGL *_next = _context->dispatcher.emulation.next();
|
||||
RegalAssert(_next);
|
||||
return _next->call(&_next->glDrawArrays)( mode, first, count );
|
||||
_context->dispatcher.emulation.glDrawArrays( mode, first, count );
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
@ -19951,15 +20002,6 @@ static void REGAL_CALL emu_glDrawElements(GLenum mode, GLsizei count, GLenum typ
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -24066,15 +24108,6 @@ static void REGAL_CALL emu_glMultiDrawArrays(GLenum mode, const GLint *first, co
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -24132,15 +24165,6 @@ static void REGAL_CALL emu_glMultiDrawElements(GLenum mode, const GLsizei *count
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -32995,14 +33019,56 @@ static void REGAL_CALL emu_glVertexAttribIPointer(GLuint index, GLint size, GLen
|
|||
_context->bv->glVertexAttribIPointer( index, size, type, stride, pointer );
|
||||
}
|
||||
#endif
|
||||
case 8 :
|
||||
case 7 :
|
||||
case 6 :
|
||||
case 5 :
|
||||
case 4 :
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao) break;
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
DispatchTableGL *_next = _dispatch.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(& _next->glVertexAttribIPointer)(index, size, type, stride, pointer);
|
||||
// impl
|
||||
switch( _context->emuLevel )
|
||||
{
|
||||
case 16 :
|
||||
case 15 :
|
||||
case 14 :
|
||||
case 13 :
|
||||
case 12 :
|
||||
case 11 :
|
||||
case 10 :
|
||||
case 9 :
|
||||
case 8 :
|
||||
case 7 :
|
||||
case 6 :
|
||||
case 5 :
|
||||
case 4 :
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
return _context->vao->AttribPointer(*_context, index, size, type, GL_FALSE, stride, pointer );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
{
|
||||
DispatchTableGL *_next = _dispatch.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glVertexAttribIPointer)(index, size, type, stride, pointer);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// GL_VERSION_3_1
|
||||
|
|
@ -33054,15 +33120,6 @@ static void REGAL_CALL emu_glDrawArraysInstanced(GLenum mode, GLint start, GLsiz
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -33120,15 +33177,6 @@ static void REGAL_CALL emu_glDrawElementsInstanced(GLenum mode, GLsizei count, G
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -33489,15 +33537,6 @@ static void REGAL_CALL emu_glMultiDrawArraysIndirectAMD(GLenum mode, const GLvoi
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -33555,15 +33594,6 @@ static void REGAL_CALL emu_glMultiDrawElementsIndirectAMD(GLenum mode, GLenum ty
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -33725,15 +33755,6 @@ static void REGAL_CALL emu_glDrawElementArrayAPPLE(GLenum mode, GLint first, GLs
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -33839,15 +33860,6 @@ static void REGAL_CALL emu_glMultiDrawElementArrayAPPLE(GLenum mode, const GLint
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -34391,15 +34403,6 @@ static void REGAL_CALL emu_glDrawElementsBaseVertex(GLenum mode, GLsizei count,
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -34490,15 +34493,6 @@ static void REGAL_CALL emu_glDrawElementsInstancedBaseVertex(GLenum mode, GLsize
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -34626,7 +34620,12 @@ static void REGAL_CALL emu_glDrawRangeElementsBaseVertex(GLenum mode, GLuint sta
|
|||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 0;
|
||||
if (REGAL_FORCE_ES2_PROFILE || !_context->info->gl_arb_draw_elements_base_vertex)
|
||||
// WAR: Our Tegra driver GL 4 core profile supports DrawRangeElementsBaseVertex but does not
|
||||
// advertise ARB_draw_elements_base_vertex in the extension list so here we check whether the
|
||||
// driver has glDrawRangeElementsBaseVertex instead of looking for the extension flag.
|
||||
// (leaving original line here, just commented out)
|
||||
// if (REGAL_FORCE_ES2_PROFILE || !_context->info->gl_arb_draw_elements_base_vertex)
|
||||
if (REGAL_FORCE_ES2_PROFILE || !_context->dispatcher.driver.glDrawRangeElementsBaseVertex)
|
||||
{
|
||||
if (basevertex==0)
|
||||
{
|
||||
|
|
@ -34636,7 +34635,7 @@ static void REGAL_CALL emu_glDrawRangeElementsBaseVertex(GLenum mode, GLuint sta
|
|||
}
|
||||
else
|
||||
{
|
||||
Warning("Regal does not support glDrawRangeElementsBaseVertex (GL_ARB_draw_elements_base_vertex extension not available) for basevertex!=0 for ES 2.0 - skipping.");
|
||||
Warning("Regal does not support glDrawRangeElementsBaseVertex (GL_ARB_draw_elements_base_vertex extension not available) for basevertex!=0 - skipping.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -34704,15 +34703,6 @@ static void REGAL_CALL emu_glMultiDrawElementsBaseVertex(GLenum mode, const GLsi
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -34802,15 +34792,6 @@ static void REGAL_CALL emu_glDrawArraysIndirect(GLenum mode, const GLvoid *indir
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -34868,15 +34849,6 @@ static void REGAL_CALL emu_glDrawElementsIndirect(GLenum mode, GLenum type, cons
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -34936,15 +34908,6 @@ static void REGAL_CALL emu_glDrawArraysInstancedARB(GLenum mode, GLint start, GL
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -35002,15 +34965,6 @@ static void REGAL_CALL emu_glDrawElementsInstancedARB(GLenum mode, GLsizei count
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -38049,15 +38003,6 @@ static void REGAL_CALL emu_glMultiDrawArraysIndirect(GLenum mode, const GLvoid *
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -38115,15 +38060,6 @@ static void REGAL_CALL emu_glMultiDrawElementsIndirect(GLenum mode, GLenum type,
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -44605,9 +44541,7 @@ static void REGAL_CALL emu_glBindVertexArray(GLuint array)
|
|||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 3;
|
||||
if (!_context->dsa->ShadowVao( array )) {
|
||||
_dispatch.call(&_dispatch.glBindVertexArray)( array );
|
||||
}
|
||||
_context->dsa->ShadowVao( _context, array );
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
|
@ -44727,7 +44661,7 @@ static void REGAL_CALL emu_glDeleteVertexArrays(GLsizei n, const GLuint *arrays)
|
|||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
_context->vao->DeleteVertexArrays( n, arrays );
|
||||
_context->vao->DeleteVertexArrays( *_context, n, arrays );
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
|
@ -47015,6 +46949,9 @@ static void REGAL_CALL emu_glProgramStringARB(GLenum target, GLenum format, GLsi
|
|||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 0;
|
||||
// nothing to do if len <= 0 so just return
|
||||
if (len <= 0)
|
||||
return;
|
||||
if (_context->isES2())
|
||||
{
|
||||
Warning("Regal does not support glProgramStringARB (GL_ARB_vertex_program) for ES 2.0 context - skipping.");
|
||||
|
|
@ -48990,15 +48927,6 @@ static void REGAL_CALL emu_glDrawElementArrayATI(GLenum mode, GLsizei count)
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -66278,15 +66206,6 @@ static void REGAL_CALL emu_glDrawArraysInstancedEXT(GLenum mode, GLint start, GL
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -66344,15 +66263,6 @@ static void REGAL_CALL emu_glDrawElementsInstancedEXT(GLenum mode, GLsizei count
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -68314,15 +68224,6 @@ static void REGAL_CALL emu_glMultiDrawArraysEXT(GLenum mode, const GLint *first,
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -68380,15 +68281,6 @@ static void REGAL_CALL emu_glMultiDrawElementsEXT(GLenum mode, const GLsizei *co
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -70308,6 +70200,68 @@ static void REGAL_CALL emu_glTexStorage3DEXT(GLenum target, GLsizei levels, GLen
|
|||
|
||||
// GL_EXT_vertex_array
|
||||
|
||||
static void REGAL_CALL emu_glArrayElementEXT(GLint i)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
RegalAssert(_context);
|
||||
DispatchTableGL &_dispatch = _context->dispatcher.emulation;
|
||||
|
||||
// prefix
|
||||
switch( _context->emuLevel )
|
||||
{
|
||||
case 16 :
|
||||
case 15 :
|
||||
case 14 :
|
||||
case 13 :
|
||||
case 12 :
|
||||
case 11 :
|
||||
case 10 :
|
||||
case 9 :
|
||||
case 8 :
|
||||
case 7 :
|
||||
#if REGAL_EMU_IFF
|
||||
if (_context->iff) break;
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// impl
|
||||
switch( _context->emuLevel )
|
||||
{
|
||||
case 16 :
|
||||
case 15 :
|
||||
case 14 :
|
||||
case 13 :
|
||||
case 12 :
|
||||
case 11 :
|
||||
case 10 :
|
||||
case 9 :
|
||||
case 8 :
|
||||
case 7 :
|
||||
#if REGAL_EMU_IFF
|
||||
if (_context->iff)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 6;
|
||||
_context->iff->ProvokeElement( _context, i );
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
{
|
||||
DispatchTableGL *_next = _dispatch.next();
|
||||
RegalAssert(_next);
|
||||
_next->call(&_next->glArrayElementEXT)(i);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void REGAL_CALL emu_glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
|
||||
{
|
||||
RegalContext *_context = REGAL_GET_CONTEXT();
|
||||
|
|
@ -70440,15 +70394,6 @@ static void REGAL_CALL emu_glDrawArraysEXT(GLenum mode, GLint first, GLsizei cou
|
|||
_context->dsa->Restore( _context );
|
||||
}
|
||||
#endif
|
||||
case 3 :
|
||||
#if REGAL_EMU_VAO
|
||||
if (_context->vao)
|
||||
{
|
||||
Push<int> pushLevel(_context->emuLevel);
|
||||
_context->emuLevel = 2;
|
||||
// _context->vao->Validate(*_context );
|
||||
}
|
||||
#endif
|
||||
case 1 :
|
||||
default:
|
||||
break;
|
||||
|
|
@ -70475,9 +70420,7 @@ static void REGAL_CALL emu_glDrawArraysEXT(GLenum mode, GLint first, GLsizei cou
|
|||
_context->emuLevel = 5;
|
||||
|
||||
if ( ! _context->quads->glDrawArrays( _context, mode, first, count ) ) {
|
||||
DispatchTableGL *_next = _context->dispatcher.emulation.next();
|
||||
RegalAssert(_next);
|
||||
return _next->call(&_next->glDrawArrays)( mode, first, count );
|
||||
_context->dispatcher.emulation.glDrawArrays( mode, first, count );
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
@ -72841,6 +72784,7 @@ void InitDispatchTableEmu(DispatchTableGL &tbl)
|
|||
|
||||
// GL_VERSION_1_1
|
||||
|
||||
tbl.glArrayElement = emu_glArrayElement;
|
||||
tbl.glBindTexture = emu_glBindTexture;
|
||||
tbl.glColorPointer = emu_glColorPointer;
|
||||
tbl.glCopyTexImage2D = emu_glCopyTexImage2D;
|
||||
|
|
@ -73837,6 +73781,7 @@ void InitDispatchTableEmu(DispatchTableGL &tbl)
|
|||
|
||||
// GL_EXT_vertex_array
|
||||
|
||||
tbl.glArrayElementEXT = emu_glArrayElementEXT;
|
||||
tbl.glColorPointerEXT = emu_glColorPointerEXT;
|
||||
tbl.glDrawArraysEXT = emu_glDrawArraysEXT;
|
||||
tbl.glEdgeFlagPointerEXT = emu_glEdgeFlagPointerEXT;
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
@ -204,6 +204,151 @@ using namespace std;
|
|||
#undef glIsRenderbuffer
|
||||
#undef glRenderbufferStorage
|
||||
|
||||
#if REGAL_SYS_PPAPI
|
||||
#define glBlendFunc GLES2BlendFunc
|
||||
#define glClear GLES2Clear
|
||||
#define glClearColor GLES2ClearColor
|
||||
#define glClearStencil GLES2ClearStencil
|
||||
#define glColorMask GLES2ColorMask
|
||||
#define glCullFace GLES2CullFace
|
||||
#define glDepthFunc GLES2DepthFunc
|
||||
#define glDepthMask GLES2DepthMask
|
||||
#define glDisable GLES2Disable
|
||||
#define glEnable GLES2Enable
|
||||
#define glFinish GLES2Finish
|
||||
#define glFlush GLES2Flush
|
||||
#define glFrontFace GLES2FrontFace
|
||||
#define glGetBooleanv GLES2GetBooleanv
|
||||
#define glGetError GLES2GetError
|
||||
#define glGetFloatv GLES2GetFloatv
|
||||
#define glGetIntegerv GLES2GetIntegerv
|
||||
#define glGetString GLES2GetString
|
||||
#define glGetTexParameterfv GLES2GetTexParameterfv
|
||||
#define glGetTexParameteriv GLES2GetTexParameteriv
|
||||
#define glHint GLES2Hint
|
||||
#define glIsEnabled GLES2IsEnabled
|
||||
#define glLineWidth GLES2LineWidth
|
||||
#define glPixelStorei GLES2PixelStorei
|
||||
#define glReadPixels GLES2ReadPixels
|
||||
#define glScissor GLES2Scissor
|
||||
#define glStencilFunc GLES2StencilFunc
|
||||
#define glStencilMask GLES2StencilMask
|
||||
#define glStencilOp GLES2StencilOp
|
||||
#define glTexImage2D GLES2TexImage2D
|
||||
#define glTexParameterf GLES2TexParameterf
|
||||
#define glTexParameterfv GLES2TexParameterfv
|
||||
#define glTexParameteri GLES2TexParameteri
|
||||
#define glTexParameteriv GLES2TexParameteriv
|
||||
#define glViewport GLES2Viewport
|
||||
#define glBindTexture GLES2BindTexture
|
||||
#define glCopyTexImage2D GLES2CopyTexImage2D
|
||||
#define glCopyTexSubImage2D GLES2CopyTexSubImage2D
|
||||
#define glDeleteTextures GLES2DeleteTextures
|
||||
#define glDrawArrays GLES2DrawArrays
|
||||
#define glDrawElements GLES2DrawElements
|
||||
#define glGenTextures GLES2GenTextures
|
||||
#define glIsTexture GLES2IsTexture
|
||||
#define glPolygonOffset GLES2PolygonOffset
|
||||
#define glTexSubImage2D GLES2TexSubImage2D
|
||||
#define glBlendColor GLES2BlendColor
|
||||
#define glBlendEquation GLES2BlendEquation
|
||||
#define glActiveTexture GLES2ActiveTexture
|
||||
#define glCompressedTexImage2D GLES2CompressedTexImage2D
|
||||
#define glCompressedTexSubImage2D GLES2CompressedTexSubImage2D
|
||||
#define glSampleCoverage GLES2SampleCoverage
|
||||
#define glBlendFuncSeparate GLES2BlendFuncSeparate
|
||||
#define glBindBuffer GLES2BindBuffer
|
||||
#define glBufferData GLES2BufferData
|
||||
#define glBufferSubData GLES2BufferSubData
|
||||
#define glDeleteBuffers GLES2DeleteBuffers
|
||||
#define glGenBuffers GLES2GenBuffers
|
||||
#define glGetBufferParameteriv GLES2GetBufferParameteriv
|
||||
#define glIsBuffer GLES2IsBuffer
|
||||
#define glAttachShader GLES2AttachShader
|
||||
#define glBindAttribLocation GLES2BindAttribLocation
|
||||
#define glBlendEquationSeparate GLES2BlendEquationSeparate
|
||||
#define glCompileShader GLES2CompileShader
|
||||
#define glCreateProgram GLES2CreateProgram
|
||||
#define glCreateShader GLES2CreateShader
|
||||
#define glDeleteProgram GLES2DeleteProgram
|
||||
#define glDeleteShader GLES2DeleteShader
|
||||
#define glDetachShader GLES2DetachShader
|
||||
#define glDisableVertexAttribArray GLES2DisableVertexAttribArray
|
||||
#define glEnableVertexAttribArray GLES2EnableVertexAttribArray
|
||||
#define glGetActiveAttrib GLES2GetActiveAttrib
|
||||
#define glGetActiveUniform GLES2GetActiveUniform
|
||||
#define glGetAttachedShaders GLES2GetAttachedShaders
|
||||
#define glGetAttribLocation GLES2GetAttribLocation
|
||||
#define glGetProgramInfoLog GLES2GetProgramInfoLog
|
||||
#define glGetProgramiv GLES2GetProgramiv
|
||||
#define glGetShaderInfoLog GLES2GetShaderInfoLog
|
||||
#define glGetShaderSource GLES2GetShaderSource
|
||||
#define glGetShaderiv GLES2GetShaderiv
|
||||
#define glGetUniformLocation GLES2GetUniformLocation
|
||||
#define glGetUniformfv GLES2GetUniformfv
|
||||
#define glGetUniformiv GLES2GetUniformiv
|
||||
#define glGetVertexAttribPointerv GLES2GetVertexAttribPointerv
|
||||
#define glGetVertexAttribfv GLES2GetVertexAttribfv
|
||||
#define glGetVertexAttribiv GLES2GetVertexAttribiv
|
||||
#define glIsProgram GLES2IsProgram
|
||||
#define glIsShader GLES2IsShader
|
||||
#define glLinkProgram GLES2LinkProgram
|
||||
#define glShaderSource GLES2ShaderSource
|
||||
#define glStencilFuncSeparate GLES2StencilFuncSeparate
|
||||
#define glStencilMaskSeparate GLES2StencilMaskSeparate
|
||||
#define glStencilOpSeparate GLES2StencilOpSeparate
|
||||
#define glUniform1f GLES2Uniform1f
|
||||
#define glUniform1fv GLES2Uniform1fv
|
||||
#define glUniform1i GLES2Uniform1i
|
||||
#define glUniform1iv GLES2Uniform1iv
|
||||
#define glUniform2f GLES2Uniform2f
|
||||
#define glUniform2fv GLES2Uniform2fv
|
||||
#define glUniform2i GLES2Uniform2i
|
||||
#define glUniform2iv GLES2Uniform2iv
|
||||
#define glUniform3f GLES2Uniform3f
|
||||
#define glUniform3fv GLES2Uniform3fv
|
||||
#define glUniform3i GLES2Uniform3i
|
||||
#define glUniform3iv GLES2Uniform3iv
|
||||
#define glUniform4f GLES2Uniform4f
|
||||
#define glUniform4fv GLES2Uniform4fv
|
||||
#define glUniform4i GLES2Uniform4i
|
||||
#define glUniform4iv GLES2Uniform4iv
|
||||
#define glUniformMatrix2fv GLES2UniformMatrix2fv
|
||||
#define glUniformMatrix3fv GLES2UniformMatrix3fv
|
||||
#define glUniformMatrix4fv GLES2UniformMatrix4fv
|
||||
#define glUseProgram GLES2UseProgram
|
||||
#define glValidateProgram GLES2ValidateProgram
|
||||
#define glVertexAttrib1f GLES2VertexAttrib1f
|
||||
#define glVertexAttrib1fv GLES2VertexAttrib1fv
|
||||
#define glVertexAttrib2f GLES2VertexAttrib2f
|
||||
#define glVertexAttrib2fv GLES2VertexAttrib2fv
|
||||
#define glVertexAttrib3f GLES2VertexAttrib3f
|
||||
#define glVertexAttrib3fv GLES2VertexAttrib3fv
|
||||
#define glVertexAttrib4f GLES2VertexAttrib4f
|
||||
#define glVertexAttrib4fv GLES2VertexAttrib4fv
|
||||
#define glVertexAttribPointer GLES2VertexAttribPointer
|
||||
#define glClearDepthf GLES2ClearDepthf
|
||||
#define glDepthRangef GLES2DepthRangef
|
||||
#define glGetShaderPrecisionFormat GLES2GetShaderPrecisionFormat
|
||||
#define glReleaseShaderCompiler GLES2ReleaseShaderCompiler
|
||||
#define glShaderBinary GLES2ShaderBinary
|
||||
#define glBindFramebuffer GLES2BindFramebuffer
|
||||
#define glBindRenderbuffer GLES2BindRenderbuffer
|
||||
#define glCheckFramebufferStatus GLES2CheckFramebufferStatus
|
||||
#define glDeleteFramebuffers GLES2DeleteFramebuffers
|
||||
#define glDeleteRenderbuffers GLES2DeleteRenderbuffers
|
||||
#define glFramebufferRenderbuffer GLES2FramebufferRenderbuffer
|
||||
#define glFramebufferTexture2D GLES2FramebufferTexture2D
|
||||
#define glGenFramebuffers GLES2GenFramebuffers
|
||||
#define glGenRenderbuffers GLES2GenRenderbuffers
|
||||
#define glGenerateMipmap GLES2GenerateMipmap
|
||||
#define glGetFramebufferAttachmentParameteriv GLES2GetFramebufferAttachmentParameteriv
|
||||
#define glGetRenderbufferParameteriv GLES2GetRenderbufferParameteriv
|
||||
#define glIsFramebuffer GLES2IsFramebuffer
|
||||
#define glIsRenderbuffer GLES2IsRenderbuffer
|
||||
#define glRenderbufferStorage GLES2RenderbufferStorage
|
||||
#endif
|
||||
|
||||
extern "C"
|
||||
{
|
||||
extern void REGAL_CALL glBlendFunc(GLenum sfactor, GLenum dfactor);
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -379,10 +379,14 @@ struct Dsa
|
|||
bool NotVao( GLuint vao ) const {
|
||||
return vao != ( dsa.vao != REGAL_DSA_INVALID ? dsa.vao : drv.vao );
|
||||
}
|
||||
bool ShadowVao( GLuint vao ) {
|
||||
void ShadowVao( RegalContext * ctx, GLuint vao ) {
|
||||
drv.vao = vao;
|
||||
return dsa.vao != REGAL_DSA_INVALID;
|
||||
if(dsa.vao == REGAL_DSA_INVALID) {
|
||||
ctx->dispatcher.emulation.glBindVertexArray( vao );
|
||||
ctx->dispatcher.emulation.glGetIntegerv(GL_ARRAY_BUFFER_BINDING, reinterpret_cast<GLint*>(&drv.buffer));
|
||||
}
|
||||
}
|
||||
|
||||
void DsaVao( RegalContext * ctx, GLuint vao ) {
|
||||
if( NotVao( vao ) ) {
|
||||
dsa.vao = vao;
|
||||
|
|
|
|||
|
|
@ -54,6 +54,9 @@ namespace Emu
|
|||
// In ES2 mode, 16 texture units only?
|
||||
|
||||
// No. of fixed function texture units. 2 minimum.
|
||||
// Note that this should never be greater than 4 as described here:
|
||||
//
|
||||
// http://www.nvidia.com/object/General_FAQ.html#t6
|
||||
|
||||
#ifndef REGAL_EMU_MAX_TEXTURE_UNITS
|
||||
#define REGAL_EMU_MAX_TEXTURE_UNITS 4
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
@ -56,6 +56,9 @@ REGAL_GLOBAL_BEGIN
|
|||
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
#include <iterator>
|
||||
|
||||
REGAL_GLOBAL_END
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -2010,6 +2010,7 @@ Iff::Iff()
|
|||
, immCurrent(0)
|
||||
, immPrim(GL_POINTS)
|
||||
, immVbo(0)
|
||||
, immVboElement(0)
|
||||
, immVao(0)
|
||||
, immShadowVao(0)
|
||||
, shadowMatrixMode(GL_MODELVIEW)
|
||||
|
|
@ -2057,6 +2058,7 @@ void Iff::Cleanup( RegalContext &ctx )
|
|||
DispatchTableGL &tbl = ctx.dispatcher.emulation;
|
||||
|
||||
tbl.call(&tbl.glDeleteBuffers)(1, &immVbo);
|
||||
tbl.call(&tbl.glDeleteBuffers)(1, &immVboElement);
|
||||
tbl.call(&tbl.glDeleteVertexArrays)(1, &immVao);
|
||||
|
||||
size_t n = array_size( ffprogs );
|
||||
|
|
@ -2370,11 +2372,14 @@ void Iff::InitImmediate(RegalContext &ctx)
|
|||
BindVertexArray( &ctx, immVao ); // to keep ffn current
|
||||
tbl.glGenBuffers( 1, & immVbo );
|
||||
tbl.glBindBuffer( GL_ARRAY_BUFFER, immVbo );
|
||||
tbl.glGenBuffers( 1, & immVboElement );
|
||||
tbl.glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, immVboElement );
|
||||
|
||||
#if REGAL_SYS_EMSCRIPTEN
|
||||
// We need this to be an allocated buffer for WebGL, because a dangling VertexAttribPointer
|
||||
// doesn't work. XXX -- this might be a Firefox bug, check?
|
||||
tbl.glBufferData( GL_ARRAY_BUFFER, sizeof( immArray ), NULL, GL_STATIC_DRAW );
|
||||
tbl.glBufferData( GL_ELEMENT_ARRAY_BUFFER, sizeof( immArrayElement ), NULL, GL_STATIC_DRAW );
|
||||
#endif
|
||||
|
||||
for (GLuint i = 0; i < max_vertex_attribs; i++)
|
||||
|
|
@ -2430,7 +2435,7 @@ void Iff::glDeleteBuffers( RegalContext * ctx, GLsizei n, const GLuint * buffers
|
|||
for (GLsizei i = 0; i < n; i++)
|
||||
{
|
||||
GLuint name = buffers[ i ];
|
||||
if (name != immVbo)
|
||||
if (name != immVbo && name != immVboElement)
|
||||
ctx->dispatcher.emulation.glDeleteBuffers( 1, &name );
|
||||
}
|
||||
}
|
||||
|
|
@ -2472,12 +2477,14 @@ void Iff::Begin( RegalContext * ctx, GLenum mode )
|
|||
}
|
||||
PreDraw( ctx );
|
||||
immCurrent = 0;
|
||||
immCurrentElement = 0;
|
||||
immPrim = mode;
|
||||
}
|
||||
|
||||
void Iff::End( RegalContext * ctx )
|
||||
{
|
||||
Flush( ctx );
|
||||
RestoreVao( ctx );
|
||||
}
|
||||
|
||||
void Iff::RestoreVao( RegalContext * ctx )
|
||||
|
|
@ -2502,6 +2509,35 @@ void Iff::Flush( RegalContext * ctx )
|
|||
derivedPrim = GL_TRIANGLE_FAN;
|
||||
tbl.glDrawArrays( derivedPrim, 0, immCurrent );
|
||||
}
|
||||
|
||||
if (immCurrentElement > 0)
|
||||
{
|
||||
DispatchTableGL &tbl = ctx->dispatcher.emulation;
|
||||
|
||||
if(immShadowVao != immVao)
|
||||
{
|
||||
tbl.glBindVertexArray( immShadowVao );
|
||||
BindVertexArray( ctx, immShadowVao );
|
||||
}
|
||||
|
||||
GLuint immShadowVboElement = 0;
|
||||
ctx->dispatcher.emulation.glGetIntegerv( GL_ELEMENT_ARRAY_BUFFER_BINDING, reinterpret_cast<GLint*>(&immShadowVboElement) );
|
||||
if(immShadowVboElement != immVboElement) tbl.glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, immVboElement );
|
||||
tbl.glBufferData( GL_ELEMENT_ARRAY_BUFFER, immCurrentElement * sizeof(GLint), immArrayElement, GL_DYNAMIC_DRAW );
|
||||
|
||||
GLenum derivedPrim = immPrim;
|
||||
if (( immPrim == GL_POLYGON ) && ( ctx->info->core == true || ctx->info->es2 ))
|
||||
derivedPrim = GL_TRIANGLE_FAN;
|
||||
tbl.glDrawElements( derivedPrim, immCurrentElement, GL_UNSIGNED_INT, 0 );
|
||||
|
||||
if(immShadowVboElement != immVboElement) tbl.glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, immShadowVboElement );
|
||||
|
||||
if(immShadowVao != immVao)
|
||||
{
|
||||
tbl.glBindVertexArray( immVao );
|
||||
BindVertexArray( ctx, immVao );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Iff::Provoke( RegalContext * ctx )
|
||||
|
|
@ -2554,6 +2590,55 @@ void Iff::Provoke( RegalContext * ctx )
|
|||
}
|
||||
}
|
||||
|
||||
void Iff::ProvokeElement( RegalContext * ctx, GLint i )
|
||||
{
|
||||
immArrayElement[immCurrentElement++] = i;
|
||||
|
||||
if ( immCurrentElement >= REGAL_IMMEDIATE_BUFFER_SIZE )
|
||||
{
|
||||
Flush( ctx );
|
||||
int restartVerts = 0;
|
||||
switch( immPrim )
|
||||
{
|
||||
case GL_QUADS:
|
||||
restartVerts = REGAL_IMMEDIATE_BUFFER_SIZE % 4;
|
||||
break;
|
||||
case GL_TRIANGLES:
|
||||
restartVerts = REGAL_IMMEDIATE_BUFFER_SIZE % 3;
|
||||
break;
|
||||
case GL_LINES:
|
||||
restartVerts = REGAL_IMMEDIATE_BUFFER_SIZE % 2;
|
||||
break;
|
||||
case GL_QUAD_STRIP:
|
||||
restartVerts = 2;
|
||||
break;
|
||||
case GL_TRIANGLE_STRIP:
|
||||
restartVerts = 2;
|
||||
break;
|
||||
case GL_LINE_STRIP:
|
||||
restartVerts = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// For triangle fan we need the first and last vertices
|
||||
// for restarting. All others concern the most recent n.
|
||||
|
||||
if (immPrim==GL_TRIANGLE_FAN)
|
||||
{
|
||||
immArrayElement[1] = immArrayElement[REGAL_IMMEDIATE_BUFFER_SIZE - 1];
|
||||
immCurrentElement = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
int offset = REGAL_IMMEDIATE_BUFFER_SIZE - restartVerts;
|
||||
memcpy( immArrayElement, immArrayElement + offset * sizeof(GLint), restartVerts * sizeof(GLint));
|
||||
immCurrentElement = restartVerts;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GLuint Iff::AttrIndex( RegalFixedFunctionAttrib attr, int cat ) const
|
||||
{
|
||||
if (attr < RFF2A_TexCoord)
|
||||
|
|
@ -2775,7 +2860,8 @@ void Iff::ShadowMultiTexBinding( GLenum texunit, GLenum target, GLuint obj )
|
|||
Internal("Regal::Iff::ShadowMultiTexBinding",toString(texunit)," ",toString(target)," ",obj);
|
||||
|
||||
// texture unit state is only set when the active texture index is <4 (for fixed function)
|
||||
if ( texunit - GL_TEXTURE0 > ( REGAL_EMU_MAX_TEXTURE_UNITS - 1 ) )
|
||||
if ( texunit - GL_TEXTURE0 >= REGAL_EMU_MAX_TEXTURE_COORDS
|
||||
|| texunit - GL_TEXTURE0 >= REGAL_EMU_MAX_TEXTURE_UNITS )
|
||||
return;
|
||||
|
||||
activeTextureIndex = texunit - GL_TEXTURE0;
|
||||
|
|
|
|||
|
|
@ -815,11 +815,14 @@ struct Iff
|
|||
bool immActive;
|
||||
GLuint immProvoking;
|
||||
GLuint immCurrent;
|
||||
GLuint immCurrentElement;
|
||||
GLenum immPrim;
|
||||
Float4 immVab[ REGAL_EMU_MAX_VERTEX_ATTRIBS ];
|
||||
GLubyte immArray[ REGAL_IMMEDIATE_BUFFER_SIZE * REGAL_EMU_MAX_VERTEX_ATTRIBS * sizeof(Float4) ];
|
||||
GLint immArrayElement[ REGAL_IMMEDIATE_BUFFER_SIZE ];
|
||||
|
||||
GLuint immVbo;
|
||||
GLuint immVboElement;
|
||||
GLuint immVao;
|
||||
GLuint immShadowVao;
|
||||
|
||||
|
|
@ -834,6 +837,7 @@ struct Iff
|
|||
void RestoreVao( RegalContext * ctx );
|
||||
void Flush( RegalContext * ctx );
|
||||
void Provoke( RegalContext * ctx );
|
||||
void ProvokeElement( RegalContext * ctx, GLint i );
|
||||
|
||||
template <int N, bool Norm, typename T> void Attribute( RegalContext * ctx, GLuint idx, const T * v )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -227,7 +227,18 @@ const char *libraryLocation(const Library &library)
|
|||
if (!ret)
|
||||
{
|
||||
#if REGAL_SYS_ANDROID
|
||||
return "/System/lib/libGLESv1_CM.so";
|
||||
const char * const candidates[] = {
|
||||
"/vendor/lib/egl/libGLESv1_CM.so.1",
|
||||
"/system/lib/egl/libGLESv1_CM.so.1",
|
||||
"/system/lib/libGLESv1_CM.so.1",
|
||||
"/vendor/lib/libGLESv1_CM.so.1",
|
||||
"/System/lib/libGLESv1_CM.so.1",
|
||||
NULL
|
||||
};
|
||||
for (const char * const *i = candidates; *i; ++i) {
|
||||
if (fileExists(*i))
|
||||
return *i;
|
||||
}
|
||||
#elif REGAL_SYS_EGL || REGAL_SYS_GLX
|
||||
// TODO - ES1 for Linux?
|
||||
#endif
|
||||
|
|
@ -263,7 +274,18 @@ const char *libraryLocation(const Library &library)
|
|||
{
|
||||
#if REGAL_SYS_EGL || REGAL_SYS_GLX
|
||||
#if defined(__arm__)
|
||||
return "/usr/lib/libGLESv2.so";
|
||||
const char * const candidates[] = {
|
||||
"/vendor/lib/egl/libGLESv2.so",
|
||||
"/system/lib/egl/libGLESv2.so",
|
||||
"/system/lib/libGLESv2.so",
|
||||
"/vendor/lib/libGLESv2.so",
|
||||
"/usr/lib/libGLESv2.so",
|
||||
NULL
|
||||
};
|
||||
for (const char * const *i = candidates; *i; ++i) {
|
||||
if (fileExists(*i))
|
||||
return *i;
|
||||
}
|
||||
#elif defined(__x86_64__) || defined(__x86_64)
|
||||
return "/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2";
|
||||
#else
|
||||
|
|
@ -287,7 +309,18 @@ const char *libraryLocation(const Library &library)
|
|||
{
|
||||
#if REGAL_SYS_EGL
|
||||
#if defined(__arm__)
|
||||
return "/usr/lib/libEGL.so";
|
||||
const char * const candidates[] = {
|
||||
"/vendor/lib/egl/libEGL.so",
|
||||
"/system/lib/egl/libEGL.so",
|
||||
"/system/lib/libEGL.so",
|
||||
"/vendor/lib/libEGL.so",
|
||||
"/usr/lib/libEGL.so",
|
||||
NULL
|
||||
};
|
||||
for (const char * const *i = candidates; *i; ++i) {
|
||||
if (fileExists(*i))
|
||||
return *i;
|
||||
}
|
||||
#elif defined(__x86_64__) || defined(__x86_64)
|
||||
return "/usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so";
|
||||
#else
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
Copyright (c) 2011-2013 NVIDIA Corporation
|
||||
Copyright (c) 2011-2014 NVIDIA Corporation
|
||||
Copyright (c) 2012-2014 Scott Nations
|
||||
Copyright (c) 2012-2014 Nigel Stewart
|
||||
Copyright (c) 2011-2013 Cass Everitt
|
||||
Copyright (c) 2012-2013 Scott Nations
|
||||
Copyright (c) 2012 Mathias Schott
|
||||
Copyright (c) 2012-2013 Nigel Stewart
|
||||
Copyright (c) 2012-2013 Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -241,10 +241,10 @@ TEST( RegalPpa, PushPopDepthBufferBit )
|
|||
ppa.glClearDepth( 0.0 );
|
||||
|
||||
// check for expected values
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_NEVER ), ppa.Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.0 ), ppa.Depth::clear );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Ppa::Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_NEVER ), ppa.Ppa::Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Ppa::Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.0 ), ppa.Ppa::Depth::clear );
|
||||
|
||||
// push this state
|
||||
ppa.PushAttrib( &ctx, GL_DEPTH_BUFFER_BIT );
|
||||
|
|
@ -262,13 +262,13 @@ TEST( RegalPpa, PushPopDepthBufferBit )
|
|||
ppa.glClearDepth( 0.25 );
|
||||
|
||||
// check for expected values
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_GREATER ), ppa.Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.25 ), ppa.Depth::clear );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Ppa::Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_GREATER ), ppa.Ppa::Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Ppa::Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.25 ), ppa.Ppa::Depth::clear );
|
||||
|
||||
ppa.glClearDepth( 0.5f );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.5 ), ppa.Depth::clear );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.5 ), ppa.Ppa::Depth::clear );
|
||||
|
||||
// pop attrib
|
||||
EXPECT_CALL( mock, glEnable(_) ).Times(AnyNumber());
|
||||
|
|
@ -285,10 +285,10 @@ TEST( RegalPpa, PushPopDepthBufferBit )
|
|||
EXPECT_EQ( 0u, ppa.polygonStack.size() );
|
||||
EXPECT_EQ( 0u, ppa.transformStack.size() );
|
||||
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_NEVER ), ppa.Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.0 ), ppa.Depth::clear );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Ppa::Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_NEVER ), ppa.Ppa::Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Ppa::Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 0.0 ), ppa.Ppa::Depth::clear );
|
||||
|
||||
// pop attrib
|
||||
EXPECT_CALL( mock, glEnable(_) ).Times(AnyNumber());
|
||||
|
|
@ -305,10 +305,10 @@ TEST( RegalPpa, PushPopDepthBufferBit )
|
|||
EXPECT_EQ( 0u, ppa.polygonStack.size() );
|
||||
EXPECT_EQ( 0u, ppa.transformStack.size() );
|
||||
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_LESS ), ppa.Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 1.0 ), ppa.Depth::clear );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_FALSE ), ppa.Ppa::Depth::enable );
|
||||
EXPECT_EQ( static_cast<GLenum>( GL_LESS ), ppa.Ppa::Depth::func );
|
||||
EXPECT_EQ( static_cast<GLboolean>( GL_TRUE ), ppa.Ppa::Depth::mask );
|
||||
EXPECT_EQ( static_cast<GLclampd>( 1.0 ), ppa.Ppa::Depth::clear );
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
|
|||
Loading…
Reference in a new issue