Compare commits

..

46 Commits

Author SHA1 Message Date
Jeremy Huddleston
5078cb6858 apple: Dead code removal
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit e903cc17bb)
2011-06-13 23:14:32 -07:00
Jeremy Huddleston
025d348dc1 apple: applegl_destroy_context: Pass along the correct display
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit c6cf82fb55)
2011-06-13 23:14:09 -07:00
Jeremy Huddleston
2bf24ffaff osmesa: Fix missing symbols when GLX_INDIRECT_RENDERING is defined.
When GLX_INDIRECT_RENDERING is defined, some symbols are used in
libglapi.a but are not defined.  Define them through the help of
glapitemp.h.

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
(cherry picked from commit 0e8d045bf8)
2011-06-13 23:10:42 -07:00
Jeremy Huddleston
02e7aa6cea darwin: Don't link against libGL when building libOSMesa
Everything should be resolved through glapi.

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit cebdffaa2a)
2011-06-13 23:10:42 -07:00
Jeremy Huddleston
55bf1244e3 darwin: Set VG_LIB_{NAME,GLOB} to fix make install
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 22c320aa2c)
(cherry picked from commit 6ea70600b9)
2011-06-13 23:10:42 -07:00
Jeremy Huddleston
70d5758479 apple: Package applegl source into MesaLib tarball
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit e5d241ddb2)
2011-06-13 23:10:41 -07:00
Jeremy Huddleston
72b8f19fa6 darwin: Define GALLIUM_DRIVERS_DIRS in darwin config
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit d563009cd1)
2011-06-13 23:10:41 -07:00
Jeremy Huddleston
e004ac273d apple: Fix build failures in applegl_glx.c
See https://bugs.freedesktop.org/show_bug.cgi?id=29162

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>

This commit squashes three cherry-picks:
(cherry picked from commit 5d35343d12)
(cherry picked from commit 7c5f37c032)
(cherry picked from commit 2ee5272e16)
2011-06-13 23:10:41 -07:00
Jeremy Huddleston
9cbc705e83 apple: Build darwin using applegl rather than indirect
This reverts portions of 6849916170 that caused
the darwin config to fail to build due to missing implementations in that
commit.

See https://bugs.freedesktop.org/show_bug.cgi?id=29162

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 1885cf27c9)
2011-06-13 23:10:41 -07:00
Jeremy Huddleston
858db8cd4e glx: Dead code removal
Remove a redundant ifndef GLX_USE_APPLEGL

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 3843bbcb4c)
2011-06-13 23:10:40 -07:00
Jeremy Huddleston
d8802cd242 apple: ifdef out come glapi-foo on darwin
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 8593bb32ea)
2011-06-13 23:10:40 -07:00
Jeremy Huddleston
7c4cc8d2b9 apple: Change from XExtDisplayInfo to struct glx_display
Fixes regression introduced by: ab434f6b76 and
                                c356f5867f

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 7cdf969527)
2011-06-13 23:10:40 -07:00
Jeremy Huddleston
a6a5772250 apple: Rename GLXcontext
Fixes regression introduced by: c356f5867f

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 279e471750)
2011-06-13 23:10:40 -07:00
Jeremy Huddleston
9bcc214159 apple: Rename _gl_context_modes_find_visual to glx_config_find_visual
Fixes regression introduced by: 6ddf66e923

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit b7f0ed8444)
2011-06-13 23:10:39 -07:00
Jeremy Huddleston
e03abf70cd apple: Re-add driContext and do_destroy
Fixes regression introduced by: c491e585e4

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 488d6c739f)
2011-06-13 23:10:39 -07:00
Jeremy Huddleston
0c6fbf66cd apple: Rename GLXcontext
Fixes regression introduced by: c356f5867f

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 22613d1670)
2011-06-13 23:10:39 -07:00
Jeremy Huddleston
14b9e91d01 apple: Rename __GLcontextModes to struct glx_config
Fixes regression introduced by: 6ddf66e923

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit bb621cb61e)
2011-06-13 23:10:38 -07:00
Jeremy Huddleston
ff7e6622fc apple: Rename glcontextmodes.[ch] to glxconfig.[ch]
Fixes regression introduced by: 65d98e2577

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 4c9bab78a1)
2011-06-13 23:10:38 -07:00
Jeremy Huddleston
bde5310339 apple: Manually edit gl.spec to match mesa 7.9 ProgramParameters4dvNV
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
2011-06-13 23:10:37 -07:00
Jeremy Huddleston
4f362e0494 apple: Update GL specs
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit 8e89d0bea7)
2011-06-13 22:59:04 -07:00
Kenneth Graunke
5408ccb09f glsl: Accept precision qualifiers on sampler types, but only in ES.
GLSL 1.30 states clearly that only float and int are allowed, while the
GLSL ES specification's issues section states that sampler types may
take precision qualifiers.

Fixes compilation failures in 3DMarkMobileES 2.0 and GLBenchmark 2.0,
as well as a regression in the Meego Tablet UX.

(cherry-picked from 45e8e6c6b1)
2011-05-25 11:17:41 -07:00
José Fonseca
203624128c mesa: Fix GetVertexAttrib* inside display lists.
GetVertexAttrib*{,ARB} is no longer aliased to the NV calls.

This fixes tracing yofrankie with apitrace, given it requires accurate
results from GetVertexAttribiv*.

NOTE: This is a candidate for the stable branches.
2011-05-12 14:19:15 +01:00
Tom Stellard
ea95bf7d89 r300/compiler: Fix incorrect presubtract conversion
ADD instructions with constant swizzles can't be converted to
presubtract operations.

(cherry picked from commit 0fa81d6d05)
2011-04-16 14:23:04 -07:00
Tom Stellard
b8050add56 r300/compiler: Fix vertex shader MAD instructions with constant swizzles
(cherry picked from commit d8361400b7)
2011-04-05 09:37:20 -07:00
Marek Olšák
4633054b8b r300/compiler: apply the texture swizzle to shadow pass and fail values too
Piglit tests:
- glsl-fs-shadow2d-01
- glsl-fs-shadow2d-02
- glsl-fs-shadow2d-03
- fs-shadow2d-red-01
- fs-shadow2d-red-02
- fs-shadow2d-red-03

NOTE: This is a candidate for the stable branches.
(cherry picked from commit 0d96ae8fc7)
2011-04-04 19:14:35 +02:00
Marek Olšák
897e464a5d r300/compiler: propagate SaturateMode down to the result of shadow comparison
NOTE: This is a candidate for the stable branches.
(cherry picked from commit 2679760834)
2011-04-04 19:14:15 +02:00
Marek Olšák
0140b830af r300g: tell the GLSL compiler to lower the continue opcode
NOTE: This is a candidate for the stable branches.
(cherry picked from commit f814dd7a81)

Conflicts:

	src/gallium/drivers/r300/r300_screen.c
2011-04-03 19:43:36 +02:00
Tom Stellard
9e2c9cdf48 prog_optimize: Fix reallocating registers for shaders with loops
Registers that are used inside of loops need to be considered live
starting with the first instruction of the outermost loop.

https://bugs.freedesktop.org/show_bug.cgi?id=34370

(cherry picked from commit 18dcbd358f)

Reviewed-by: Eric Anholt <eric@anholt.net>
2011-03-31 21:39:57 -07:00
Marek Olšák
e3dcb53e6e u_blitter: remove invalid assertion 2011-03-30 02:19:32 +02:00
Henri Verbeet
6b46754bc0 st/mesa: Validate state before doing blits.
Specifically, this ensures things like the front buffer actually exist. This
fixes piglt fbo/fbo-sys-blit and fd.o bug 35483.

Signed-off-by: Henri Verbeet <hverbeet@gmail.com>
(cherry picked from commit 5d7c27f5ec)
2011-03-30 00:53:18 +02:00
Marek Olšák
7397c034ac r300g: fix alpha-test with no colorbuffer
Piglit:
- fbo-alphatest-nocolor

NOTE: This is a candidate for the stable branches.
(cherry picked from commit 226ae9d6c8)
2011-03-24 23:39:43 +01:00
José Fonseca
39149172c8 mesa: More glGet* fixes.
glGet(GL_NORMAL_ARRAY) giving potentially wrong results.

Most of glGet(GL_XXX_ARRAY_BUFFER_BINDING) giving totally bogus results.
2011-03-23 17:19:30 +00:00
José Fonseca
c8bd053d3a mesa: Fix typo glGet*v(GL_TEXTURE_COORD_ARRAY_*). 2011-03-22 23:01:01 +00:00
Marek Olšák
7272f8fb18 st/mesa: fix crash when using both user and vbo buffers with the same stride
If two buffers had the same stride where one buffer is a user one and
the other is a vbo, it was considered to be one interleaved buffer,
resulting in incorrect rendering and crashes.

This patch makes sure that the interleaved buffer is either user or vbo,
not both.
(cherry picked from commit 695cdee678)
2011-03-12 22:11:52 +01:00
Marek Olšák
c91d217ff7 r300/compiler: remove unused variables
(cherry picked from commit ff8baec5bc)
2011-03-12 22:04:20 +01:00
Marek Olšák
e2baddb653 r300/compiler: fix equal and notequal shadow compare functions
(cherry picked from commit 4dfcf3c4fe)
2011-03-12 22:03:59 +01:00
Marek Olšák
20c7067257 r300/compiler: saturate Z before the shadow comparison
This fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=31159

NOTE: This is a candidate for the 7.9 and 7.10 branches.
(cherry picked from commit eb1acd1613)
2011-03-12 22:03:46 +01:00
Marek Olšák
ca76f4f6aa r300/compiler: do not set TEX_IGNORE_UNCOVERED on r500
The docs say it can be set for direct texture lookups, but even that
causes problems.

This fixes the wireframe bug:
https://bugs.freedesktop.org/show_bug.cgi?id=32688

NOTE: This is a candidate for the 7.9 and 7.10 branches.
(cherry picked from commit 6da4866ffd)
2011-03-12 21:51:34 +01:00
Marek Olšák
c7305375d1 r300/compiler: TEX instructions don't support negation on source arguments
This fixes piglit:
- glsl-fs-texture2d-dependent-4

NOTE: This is a candidate for the 7.9 and 7.10 branches.
(cherry picked from commit 1e97b4dd10)
2011-03-12 21:51:21 +01:00
Marek Olšák
dea5e972ff r300/compiler: Abs doesn't cancel Negate (in the conversion to native swizzles)
NOTE: This is a candidate for the 7.9 and 7.10 branches.
(cherry picked from commit 589d835dfd)
2011-03-12 21:51:10 +01:00
Marek Olšák
c198d29fbe r300/compiler: fix translating the src negate bits in pair_translate
(1, -_, ...) was converted to (-1, ...) because of the negation
in the second component.
Masking out the unused bits fixes this.

Piglit:
- glsl-fs-texture2d-branching

NOTE: This is a candidate for the 7.9 and 7.10 branches.
(cherry picked from commit d96305e4fc)
2011-03-12 21:50:59 +01:00
Marek Olšák
90292b8001 r300/compiler: fix the saturate modifier when applied to TEX instructions
This bug can only be triggered if the source texture is either signed or float.
(cherry picked from commit e4707604ab)
2011-03-12 21:50:42 +01:00
Marek Olšák
6ea13078fb st/mesa: fail to alloc a renderbuffer if st_choose_renderbuffer_format fails
This fixes:
  state_tracker/st_format.c:401:st_pipe_format_to_mesa_format:
  Assertion `0' failed.
(cherry picked from commit fb5d9e1199)

Conflicts:

	src/mesa/state_tracker/st_cb_fbo.c
2011-03-12 21:46:18 +01:00
Marek Olšák
48d44713f9 st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL
This fixes the game Tiny and Big.
(cherry picked from commit 7942e6a5ae)
2011-03-12 21:40:52 +01:00
Brian Paul
351814a21c docs: fill in 7.9.2 release date 2011-03-08 09:19:13 -07:00
Ian Romanick
a6909b6bd3 docs: Add 7.9.2 md5sums 2011-03-02 14:20:27 -08:00
44 changed files with 5090 additions and 605 deletions

View File

@@ -344,12 +344,24 @@ GALLIUM_FILES = \
$(DIRECTORY)/src/gallium/*/*/*/*.[ch] \
$(DIRECTORY)/src/gallium/*/*/*/*.py
APPLE_DRI_FILES = \
$(DIRECTORY)/src/glx/apple/Makefile \
$(DIRECTORY)/src/glx/apple/*.[ch] \
$(DIRECTORY)/src/glx/apple/*.tcl \
$(DIRECTORY)/src/glx/apple/apple_exports.list \
$(DIRECTORY)/src/glx/apple/GL_aliases \
$(DIRECTORY)/src/glx/apple/GL_extensions \
$(DIRECTORY)/src/glx/apple/GL_noop \
$(DIRECTORY)/src/glx/apple/GL_promoted \
$(DIRECTORY)/src/glx/apple/specs/*.spec \
$(DIRECTORY)/src/glx/apple/specs/*.tm
DRI_FILES = \
$(DIRECTORY)/include/GL/internal/dri_interface.h \
$(DIRECTORY)/include/GL/internal/sarea.h \
$(DIRECTORY)/src/glx/Makefile \
$(DIRECTORY)/src/glx/*.[ch] \
$(APPLE_DRI_FILES) \
$(DIRECTORY)/src/mesa/drivers/dri/Makefile \
$(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \
$(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in \

View File

@@ -31,21 +31,23 @@ CXXFLAGS = -ggdb3 -Os -Wall -fno-strict-aliasing \
-I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
# Library names (actual file names)
GL_LIB_NAME = libGL.dylib
GLU_LIB_NAME = libGLU.dylib
GLUT_LIB_NAME = libglut.dylib
GLW_LIB_NAME = libGLw.dylib
OSMESA_LIB_NAME = libOSMesa.dylib
GL_LIB_NAME = lib$(GL_LIB).dylib
GLU_LIB_NAME = lib$(GLU_LIB).dylib
GLUT_LIB_NAME = lib$(GLUT_LIB).dylib
GLW_LIB_NAME = lib$(GLW_LIB).dylib
OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib
VG_LIB_NAME = lib$(VG_LIB).dylib
# globs used to install the lib and all symlinks
GL_LIB_GLOB = libGL.*dylib
GLU_LIB_GLOB = libGLU.*dylib
GLUT_LIB_GLOB = libglut.*dylib
GLW_LIB_GLOB = libGLw.*dylib
OSMESA_LIB_GLOB = libOSMesa.*dylib
GL_LIB_GLOB = lib$(GL_LIB).*dylib
GLU_LIB_GLOB = lib$(GLU_LIB).*dylib
GLUT_LIB_GLOB = lib$(GLUT_LIB).*dylib
GLW_LIB_GLOB = lib$(GLW_LIB).*dylib
OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib
VG_LIB_GLOB = lib$(VG_LIB).*dylib
GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXext -lm -lpthread
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
OSMESA_LIB_DEPS =
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXmu -lXi -lXext
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXt
@@ -57,3 +59,5 @@ GLU_DIRS = sgi
DRIVER_DIRS = osmesa
#DRIVER_DIRS = dri
DRI_DIRS = swrast
GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad failover
#GALLIUM_DRIVERS_DIRS += llvmpipe

View File

@@ -10,7 +10,7 @@
<body bgcolor="#eeeeee">
<H1>Mesa 7.9.2 Release Notes / TBD</H1>
<H1>Mesa 7.9.2 Release Notes / March 2, 2011</H1>
<p>
Mesa 7.9.2 is a bug fix release which fixes bugs found since the 7.9.1 release.
@@ -28,7 +28,12 @@ for DRI hardware acceleration.
<h2>MD5 checksums</h2>
<pre>
TBD
eb4ab8c1a03386def3ea34b1358e9cda MesaLib-7.9.2.tar.gz
8f6d1474912787ce13bd35f3bae9938a MesaLib-7.9.2.tar.bz2
427a81dd43ac97603768dc5c6af3df26 MesaLib-7.9.2.zip
aacb8f4db997e346db40c6066942140a MesaGLUT-7.9.2.tar.gz
18abe6cff4fad8ad4752c7b7ab548e5d MesaGLUT-7.9.2.tar.bz2
3189e5732d636c71baf3d8bc23ce7b11 MesaGLUT-7.9.2.zip
</pre>

View File

@@ -741,8 +741,6 @@ void util_blitter_copy_region(struct blitter_context *blitter,
if (dst == src) {
assert(!is_overlap(srcx, srcx + width, srcy, srcy + height,
dstx, dstx + width, dsty, dsty + height));
} else {
assert(dst->format == src->format);
}
assert(src->target < PIPE_MAX_TEXTURE_TYPES);

View File

@@ -475,6 +475,11 @@ void r300_emit_fb_state_pipelined(struct r300_context *r300,
for (i = 0; i < fb->nr_cbufs; i++) {
OUT_CS(r300_surface(fb->cbufs[i])->format);
}
for (; i < 1; i++) {
OUT_CS(R300_US_OUT_FMT_C4_8 |
R300_C0_SEL_B | R300_C1_SEL_G |
R300_C2_SEL_R | R300_C3_SEL_A);
}
for (; i < 4; i++) {
OUT_CS(R300_US_OUT_FMT_UNUSED);
}

View File

@@ -204,7 +204,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
case PIPE_SHADER_CAP_MAX_PREDS:
return is_r500 ? 1 : 0;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
return 0;
}
break;
case PIPE_SHADER_VERTEX:
@@ -231,7 +231,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
case PIPE_SHADER_CAP_MAX_PREDS:
return is_r500 ? 4 : 0; /* XXX guessed. */
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 1;
return 0;
default:
break;
}

View File

@@ -2021,17 +2021,24 @@ ast_declarator_list::hir(exec_list *instructions,
* preceded by one of these precision qualifiers [...] Literal
* constants do not have precision qualifiers. Neither do Boolean
* variables.
*
* In GLSL ES, sampler types are also allowed.
*
* From page 87 of the GLSL ES spec:
* "RESOLUTION: Allow sampler types to take a precision qualifier."
*/
if (this->type->specifier->precision != ast_precision_none
&& !var->type->is_float()
&& !var->type->is_integer()
&& !(var->type->is_sampler() && state->es_shader)
&& !(var->type->is_array()
&& (var->type->fields.array->is_float()
|| var->type->fields.array->is_integer()))) {
_mesa_glsl_error(&loc, state,
"precision qualifiers apply only to floating point "
"and integer types");
"precision qualifiers apply only to floating point"
"%s types", state->es_shader ? ", integer, and sampler"
: "and integer");
}
/* Process the initializer and add its instructions to a temporary

View File

@@ -38,7 +38,7 @@ SOURCES = \
appledri.c \
../clientattrib.c \
../compsize.c \
../glcontextmodes.c \
../glxconfig.c \
glx_empty.c \
glx_error.c \
../glx_pbuffer.c \
@@ -49,7 +49,8 @@ SOURCES = \
../glxextensions.c \
glxreply.c \
../pixel.c \
../xfont.c
../xfont.c \
../applegl_glx.c
include $(TOP)/src/mesa/sources.mak

View File

@@ -44,7 +44,7 @@
#include <pthread.h>
#include <assert.h>
#include "apple_glx.h"
#include "glcontextmodes.h"
#include "glxconfig.h"
#include "apple_cgl.h"
/* mesa defines in glew.h, Apple in glext.h.
@@ -128,7 +128,7 @@ apple_glx_pbuffer_create(Display * dpy, GLXFBConfig config,
Window root;
int screen;
Pixmap xid;
struct glx_config *modes = (__GLcontextModes *) config;
struct glx_config *modes = (struct glx_config *) config;
root = DefaultRootWindow(dpy);
screen = DefaultScreen(dpy);

View File

@@ -40,7 +40,7 @@
#include "apple_visual.h"
#include "apple_glx_drawable.h"
#include "appledri.h"
#include "glcontextmodes.h"
#include "glxconfig.h"
static bool pixmap_make_current(struct apple_glx_context *ac,
struct apple_glx_drawable *d);

View File

@@ -47,7 +47,7 @@
#include "apple_cgl.h"
#include "apple_visual.h"
#include "apple_glx.h"
#include "glcontextmodes.h"
#include "glxconfig.h"
enum
{

View File

@@ -48,7 +48,7 @@ struct apple_xgl_saved_state
static void
SetRead(struct apple_xgl_saved_state *saved)
{
GLXContext gc = __glXGetCurrentContext();
struct glx_context *gc = __glXGetCurrentContext();
/*
* By default indicate that the state was not swapped, so that UnsetRead
@@ -81,7 +81,7 @@ static void
UnsetRead(struct apple_xgl_saved_state *saved)
{
if (saved->swapped) {
GLXContext gc = __glXGetCurrentContext();
struct glx_context *gc = __glXGetCurrentContext();
Display *dpy = glXGetCurrentDisplay();
if (apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,

View File

@@ -49,7 +49,7 @@ extern struct apple_xgl_api __gl_api;
void
glDrawBuffer(GLenum mode)
{
GLXContext gc = glXGetCurrentContext();
struct glx_context * gc = __glXGetCurrentContext();
if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
GLenum buf[2];
@@ -84,7 +84,7 @@ glDrawBuffer(GLenum mode)
void
glDrawBuffers(GLsizei n, const GLenum * bufs)
{
GLXContext gc = glXGetCurrentContext();
struct glx_context * gc = __glXGetCurrentContext();
if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
GLenum newbuf[n + 2];

View File

@@ -36,7 +36,7 @@ extern struct apple_xgl_api __gl_api;
void
glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
GLXContext gc = __glXGetCurrentContext();
struct glx_context *gc = __glXGetCurrentContext();
Display *dpy = glXGetCurrentDisplay();
if (gc && gc->driContext)

View File

@@ -1,6 +1,6 @@
#include "glxclient.h"
#include "glxextensions.h"
#include "glcontextmodes.h"
#include "glxconfig.h"
/*
** GLX_SGI_swap_control

View File

@@ -27,22 +27,24 @@
prior written authorization.
*/
#include <stdbool.h>
#include <assert.h>
#include <X11/Xlibint.h>
#include <X11/extensions/extutil.h>
#include <X11/extensions/Xext.h>
#include "glxclient.h"
#include "glx_error.h"
extern XExtDisplayInfo *__glXFindDisplay(Display * dpy);
void
__glXSendError(Display * dpy, int errorCode, unsigned long resourceID,
unsigned long minorCode, bool coreX11error)
{
XExtDisplayInfo *info = __glXFindDisplay(dpy);
GLXContext gc = __glXGetCurrentContext();
struct glx_display *glx_dpy = __glXInitialize(dpy);
struct glx_context *gc = __glXGetCurrentContext();
xError error;
assert(glx_dpy);
assert(gc);
LockDisplay(dpy);
error.type = X_Error;
@@ -51,7 +53,7 @@ __glXSendError(Display * dpy, int errorCode, unsigned long resourceID,
error.errorCode = errorCode;
}
else {
error.errorCode = info->codes->first_error + errorCode;
error.errorCode = glx_dpy->codes->first_error + errorCode;
}
error.sequenceNumber = dpy->request;

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
# enumext.spec - list of GL enumerants for glext.h header
#
# $Revision: 10971 $ on $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $
# $Revision: 14384 $ on $Date: 2011-04-05 23:05:03 -0700 (Tue, 05 Apr 2011) $
# This is derived from the master GL enumerant registry (enum.spec).
#
@@ -1380,7 +1380,7 @@ VERSION_3_1 enum:
passthru: /* Reuse tokens from ARB_copy_buffer */
use ARB_copy_buffer COPY_READ_BUFFER
use ARB_copy_buffer COPY_WRITE_BUFFER
passthru: /* Would reuse tokens from ARB_draw_instanced, but it has none */
passthru: /* Reuse tokens from ARB_draw_instanced (none) */
passthru: /* Reuse tokens from ARB_uniform_buffer_object */
use ARB_uniform_buffer_object UNIFORM_BUFFER
use ARB_uniform_buffer_object UNIFORM_BUFFER_BINDING
@@ -1447,8 +1447,8 @@ VERSION_3_2 enum:
use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
passthru: /* Reuse tokens from ARB_depth_clamp */
use ARB_depth_clamp DEPTH_CLAMP
passthru: /* Would reuse tokens from ARB_draw_elements_base_vertex, but it has none */
passthru: /* Would reuse tokens from ARB_fragment_coord_conventions, but it has none */
passthru: /* Reuse tokens from ARB_draw_elements_base_vertex (none) */
passthru: /* Reuse tokens from ARB_fragment_coord_conventions (none) */
passthru: /* Reuse tokens from ARB_provoking_vertex */
use ARB_provoking_vertex QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
use ARB_provoking_vertex FIRST_VERTEX_CONVENTION
@@ -1504,17 +1504,18 @@ passthru: /* Don't need to reuse tokens from ARB_vertex_array_bgra since they're
###############################################################################
VERSION_3_3 enum:
VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE # ARB_instanced_arrays
passthru: /* Reuse tokens from ARB_blend_func_extended */
use ARB_blend_func_extended SRC1_COLOR
use ARB_blend_func_extended ONE_MINUS_SRC1_COLOR
use ARB_blend_func_extended ONE_MINUS_SRC1_ALPHA
use ARB_blend_func_extended MAX_DUAL_SOURCE_DRAW_BUFFERS
passthru: /* Would reuse tokens from ARB_explicit_attrib_location, but it has none */
passthru: /* Reuse tokens from ARB_explicit_attrib_location (none) */
passthru: /* Reuse tokens from ARB_occlusion_query2 */
use ARB_occlusion_query2 ANY_SAMPLES_PASSED
passthru: /* Reuse tokens from ARB_sampler_objects */
use ARB_sampler_objects SAMPLER_BINDING
passthru: /* Would reuse tokens from ARB_shader_bit_encoding, but it has none */
passthru: /* Reuse tokens from ARB_shader_bit_encoding (none) */
passthru: /* Reuse tokens from ARB_texture_rgb10_a2ui */
use ARB_texture_rgb10_a2ui RGB10_A2UI
passthru: /* Reuse tokens from ARB_texture_swizzle */
@@ -1536,6 +1537,19 @@ passthru: /* Reuse tokens from ARB_vertex_type_2_10_10_10_rev */
###############################################################################
VERSION_4_0 enum:
SAMPLE_SHADING = 0x8C36 # ARB_sample_shading
MIN_SAMPLE_SHADING_VALUE = 0x8C37 # ARB_sample_shading
MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E # ARB_texture_gather
MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F # ARB_texture_gather
TEXTURE_CUBE_MAP_ARRAY = 0x9009 # ARB_texture_cube_map_array
TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A # ARB_texture_cube_map_array
PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B # ARB_texture_cube_map_array
SAMPLER_CUBE_MAP_ARRAY = 0x900C # ARB_texture_cube_map_array
SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D # ARB_texture_cube_map_array
INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E # ARB_texture_cube_map_array
UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F # ARB_texture_cube_map_array
passthru: /* Reuse tokens from ARB_texture_query_lod (none) */
passthru: /* Reuse tokens from ARB_draw_buffers_blend (none) */
passthru: /* Reuse tokens from ARB_draw_indirect */
use ARB_draw_indirect DRAW_INDIRECT_BUFFER
use ARB_draw_indirect DRAW_INDIRECT_BUFFER_BINDING
@@ -1602,7 +1616,7 @@ passthru: /* Reuse tokens from ARB_tessellation_shader */
use ARB_tessellation_shader UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER
use ARB_tessellation_shader TESS_EVALUATION_SHADER
use ARB_tessellation_shader TESS_CONTROL_SHADER
passthru: /* Would reuse tokens from ARB_texture_buffer_object_rgb32, but it has none */
passthru: /* Reuse tokens from ARB_texture_buffer_object_rgb32 (none) */
passthru: /* Reuse tokens from ARB_transform_feedback2 */
use ARB_tessellation_shader TRANSFORM_FEEDBACK
use ARB_tessellation_shader TRANSFORM_FEEDBACK_BUFFER_PAUSED
@@ -1612,6 +1626,53 @@ passthru: /* Reuse tokens from ARB_transform_feedback3 */
use ARB_tessellation_shader MAX_TRANSFORM_FEEDBACK_BUFFERS
use ARB_tessellation_shader MAX_VERTEX_STREAMS
###############################################################################
#
# OpenGL 4.1 enums
#
###############################################################################
VERSION_4_1 enum:
passthru: /* Reuse tokens from ARB_ES2_compatibility */
use ARB_ES2_compatibility FIXED
use ARB_ES2_compatibility IMPLEMENTATION_COLOR_READ_TYPE
use ARB_ES2_compatibility IMPLEMENTATION_COLOR_READ_FORMAT
use ARB_ES2_compatibility LOW_FLOAT
use ARB_ES2_compatibility MEDIUM_FLOAT
use ARB_ES2_compatibility HIGH_FLOAT
use ARB_ES2_compatibility LOW_INT
use ARB_ES2_compatibility MEDIUM_INT
use ARB_ES2_compatibility HIGH_INT
use ARB_ES2_compatibility SHADER_COMPILER
use ARB_ES2_compatibility NUM_SHADER_BINARY_FORMATS
use ARB_ES2_compatibility MAX_VERTEX_UNIFORM_VECTORS
use ARB_ES2_compatibility MAX_VARYING_VECTORS
use ARB_ES2_compatibility MAX_FRAGMENT_UNIFORM_VECTORS
passthru: /* Reuse tokens from ARB_get_program_binary */
use ARB_get_program_binary PROGRAM_BINARY_RETRIEVABLE_HINT
use ARB_get_program_binary PROGRAM_BINARY_LENGTH
use ARB_get_program_binary NUM_PROGRAM_BINARY_FORMATS
use ARB_get_program_binary PROGRAM_BINARY_FORMATS
passthru: /* Reuse tokens from ARB_separate_shader_objects */
use ARB_separate_shader_objects VERTEX_SHADER_BIT
use ARB_separate_shader_objects FRAGMENT_SHADER_BIT
use ARB_separate_shader_objects GEOMETRY_SHADER_BIT
use ARB_separate_shader_objects TESS_CONTROL_SHADER_BIT
use ARB_separate_shader_objects TESS_EVALUATION_SHADER_BIT
use ARB_separate_shader_objects ALL_SHADER_BITS
use ARB_separate_shader_objects PROGRAM_SEPARABLE
use ARB_separate_shader_objects ACTIVE_PROGRAM
use ARB_separate_shader_objects PROGRAM_PIPELINE_BINDING
passthru: /* Reuse tokens from ARB_shader_precision (none) */
passthru: /* Reuse tokens from ARB_vertex_attrib_64bit - all are in GL 3.0 and 4.0 already */
passthru: /* Reuse tokens from ARB_viewport_array - some are in GL 1.1 and ARB_provoking_vertex already */
use ARB_viewport_array MAX_VIEWPORTS
use ARB_viewport_array VIEWPORT_SUBPIXEL_BITS
use ARB_viewport_array VIEWPORT_BOUNDS_RANGE
use ARB_viewport_array LAYER_PROVOKING_VERTEX
use ARB_viewport_array VIEWPORT_INDEX_PROVOKING_VERTEX
use ARB_viewport_array UNDEFINED_VERTEX
###############################################################################
#
@@ -2433,7 +2494,7 @@ ARB_half_float_vertex enum:
# ARB Extension #49
ARB_instanced_arrays enum:
VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE
VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE
###############################################################################
@@ -2652,33 +2713,29 @@ ARB_vertex_array_bgra enum:
# No new tokens
# ARB Extension #69
ARB_draw_buffers_blend enum:
#@@@ Add ARB suffixes here & functions!
###############################################################################
# ARB Extension #70
#@@@ Add ARB suffixes here & functions!
ARB_sample_shading enum:
SAMPLE_SHADING = 0x8C36
MIN_SAMPLE_SHADING_VALUE = 0x8C37
SAMPLE_SHADING_ARB = 0x8C36
MIN_SAMPLE_SHADING_VALUE_ARB = 0x8C37
###############################################################################
# ARB Extension #71
#@@@ Add ARB suffixes here & functions!
ARB_texture_cube_map_array enum:
TEXTURE_CUBE_MAP_ARRAY = 0x9009
TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A
PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B
SAMPLER_CUBE_MAP_ARRAY = 0x900C
SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D
INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E
UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F
TEXTURE_CUBE_MAP_ARRAY_ARB = 0x9009
TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = 0x900A
PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x900B
SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900C
SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = 0x900D
INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900E
UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900F
###############################################################################
# ARB Extension #72
#@@@ Add ARB suffixes here & functions!
ARB_texture_gather enum:
MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5E
MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5F
@@ -2792,7 +2849,7 @@ ARB_gpu_shader5 enum:
MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B
MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C
FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D
MAX_VERTEX_STREAMS = 0x8E71
use ARB_texture_multisample MAX_VERTEX_STREAMS
###############################################################################
@@ -2894,6 +2951,149 @@ ARB_transform_feedback3 enum:
MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70
MAX_VERTEX_STREAMS = 0x8E71
###############################################################################
# ARB Extension #95
ARB_ES2_compatibility enum:
FIXED = 0x140C
IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A
IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B
LOW_FLOAT = 0x8DF0
MEDIUM_FLOAT = 0x8DF1
HIGH_FLOAT = 0x8DF2
LOW_INT = 0x8DF3
MEDIUM_INT = 0x8DF4
HIGH_INT = 0x8DF5
SHADER_COMPILER = 0x8DFA
NUM_SHADER_BINARY_FORMATS = 0x8DF9
MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB
MAX_VARYING_VECTORS = 0x8DFC
MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD
###############################################################################
# ARB Extension #96
ARB_get_program_binary enum:
PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257
PROGRAM_BINARY_LENGTH = 0x8741
NUM_PROGRAM_BINARY_FORMATS = 0x87FE
PROGRAM_BINARY_FORMATS = 0x87FF
###############################################################################
# ARB Extension #97
ARB_separate_shader_objects enum:
VERTEX_SHADER_BIT = 0x00000001
FRAGMENT_SHADER_BIT = 0x00000002
GEOMETRY_SHADER_BIT = 0x00000004
TESS_CONTROL_SHADER_BIT = 0x00000008
TESS_EVALUATION_SHADER_BIT = 0x00000010
ALL_SHADER_BITS = 0xFFFFFFFF
PROGRAM_SEPARABLE = 0x8258
ACTIVE_PROGRAM = 0x8259
PROGRAM_PIPELINE_BINDING = 0x825A
###############################################################################
# No new tokens
# ARB Extension #98
ARB_shader_precision enum:
###############################################################################
# ARB Extension #99
ARB_vertex_attrib_64bit enum:
use VERSION_3_0 RGB32I
use ARB_gpu_shader_fp64 DOUBLE_VEC2
use ARB_gpu_shader_fp64 DOUBLE_VEC3
use ARB_gpu_shader_fp64 DOUBLE_VEC4
use ARB_gpu_shader_fp64 DOUBLE_MAT2
use ARB_gpu_shader_fp64 DOUBLE_MAT3
use ARB_gpu_shader_fp64 DOUBLE_MAT4
use ARB_gpu_shader_fp64 DOUBLE_MAT2x3
use ARB_gpu_shader_fp64 DOUBLE_MAT2x4
use ARB_gpu_shader_fp64 DOUBLE_MAT3x2
use ARB_gpu_shader_fp64 DOUBLE_MAT3x4
use ARB_gpu_shader_fp64 DOUBLE_MAT4x2
use ARB_gpu_shader_fp64 DOUBLE_MAT4x3
###############################################################################
# ARB Extension #100
ARB_viewport_array enum:
use VERSION_1_1 SCISSOR_BOX
use VERSION_1_1 VIEWPORT
use VERSION_1_1 DEPTH_RANGE
use VERSION_1_1 SCISSOR_TEST
MAX_VIEWPORTS = 0x825B
VIEWPORT_SUBPIXEL_BITS = 0x825C
VIEWPORT_BOUNDS_RANGE = 0x825D
LAYER_PROVOKING_VERTEX = 0x825E
VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F
UNDEFINED_VERTEX = 0x8260
use ARB_provoking_vertex FIRST_VERTEX_CONVENTION
use ARB_provoking_vertex LAST_VERTEX_CONVENTION
use ARB_provoking_vertex PROVOKING_VERTEX
###############################################################################
# No new tokens
# ARB Extension #101 - GLX_ARB_create_context_robustness
# ARB Extension #102 - WGL_ARB_create_context_robustness
###############################################################################
# ARB Extension #103
ARB_cl_event enum:
SYNC_CL_EVENT_ARB = 0x8240
SYNC_CL_EVENT_COMPLETE_ARB = 0x8241
###############################################################################
# ARB Extension #104
ARB_debug_output enum:
DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x8242
DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x8243
DEBUG_CALLBACK_FUNCTION_ARB = 0x8244
DEBUG_CALLBACK_USER_PARAM_ARB = 0x8245
DEBUG_SOURCE_API_ARB = 0x8246
DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247
DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248
DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249
DEBUG_SOURCE_APPLICATION_ARB = 0x824A
DEBUG_SOURCE_OTHER_ARB = 0x824B
DEBUG_TYPE_ERROR_ARB = 0x824C
DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D
DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E
DEBUG_TYPE_PORTABILITY_ARB = 0x824F
DEBUG_TYPE_PERFORMANCE_ARB = 0x8250
DEBUG_TYPE_OTHER_ARB = 0x8251
MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x9143
MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x9144
DEBUG_LOGGED_MESSAGES_ARB = 0x9145
DEBUG_SEVERITY_HIGH_ARB = 0x9146
DEBUG_SEVERITY_MEDIUM_ARB = 0x9147
DEBUG_SEVERITY_LOW_ARB = 0x9148
###############################################################################
# ARB Extension #105
ARB_robustness enum:
use VERSION_1_1 NO_ERROR
CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004
LOSE_CONTEXT_ON_RESET_ARB = 0x8252
GUILTY_CONTEXT_RESET_ARB = 0x8253
INNOCENT_CONTEXT_RESET_ARB = 0x8254
UNKNOWN_CONTEXT_RESET_ARB = 0x8255
RESET_NOTIFICATION_STRATEGY_ARB = 0x8256
NO_RESET_NOTIFICATION_ARB = 0x8261
###############################################################################
# No new tokens
# ARB Extension #106
ARB_shader_stencil_export enum:
###############################################################################
#
@@ -5362,11 +5562,10 @@ APPLE_client_storage enum:
###############################################################################
# Extension #271
# (extends ATI_element_array???)
APPLE_element_array enum:
ELEMENT_ARRAY_APPLE = 0x8768
ELEMENT_ARRAY_TYPE_APPLE = 0x8769
ELEMENT_ARRAY_POINTER_APPLE = 0x876A
ELEMENT_ARRAY_APPLE = 0x8A0C
ELEMENT_ARRAY_TYPE_APPLE = 0x8A0D
ELEMENT_ARRAY_POINTER_APPLE = 0x8A0E
###############################################################################
@@ -5387,12 +5586,12 @@ APPLE_vertex_array_object enum:
###############################################################################
# Extension #274
# (How does this interact with NV_vertex_array_range???)
APPLE_vertex_array_range enum:
VERTEX_ARRAY_RANGE_APPLE = 0x851D
VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x851E
VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F
VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x8521
STORAGE_CLIENT_APPLE = 0x85B4
STORAGE_CACHED_APPLE = 0x85BE
STORAGE_SHARED_APPLE = 0x85BF
@@ -6083,6 +6282,12 @@ NV_transform_feedback enum:
SEPARATE_ATTRIBS_NV = 0x8C8D
TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E
TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F
LAYER_NV = 0x8DAA
NEXT_BUFFER_NV = -2 # Requires ARB_transform_feedback3
SKIP_COMPONENTS4_NV = -3 # Requires ARB_transform_feedback3
SKIP_COMPONENTS3_NV = -4 # Requires ARB_transform_feedback3
SKIP_COMPONENTS2_NV = -5 # Requires ARB_transform_feedback3
SKIP_COMPONENTS1_NV = -6 # Requires ARB_transform_feedback3
###############################################################################
@@ -6511,6 +6716,9 @@ NV_vertex_buffer_unified_memory enum:
SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31
FOG_COORD_ARRAY_LENGTH_NV = 0x8F32
ELEMENT_ARRAY_LENGTH_NV = 0x8F33
DRAW_INDIRECT_UNIFIED_NV = 0x8F40 # Requires ARB_draw_indirect
DRAW_INDIRECT_ADDRESS_NV = 0x8F41 # Requires ARB_draw_indirect
DRAW_INDIRECT_LENGTH_NV = 0x8F42 # Requires ARB_draw_indirect
###############################################################################
@@ -6528,7 +6736,7 @@ AMD_shader_stencil_export enum:
# Extension #383
AMD_seamless_cubemap_per_texture enum:
use ARB_seamless_cube_map TEXTURE_CUBE_MAP_SEAMLESS_ARB
use ARB_seamless_cube_map TEXTURE_CUBE_MAP_SEAMLESS
###############################################################################
@@ -6540,3 +6748,246 @@ AMD_seamless_cubemap_per_texture enum:
# Extension #385
AMD_conservative_depth enum:
###############################################################################
# Extension #386
EXT_shader_image_load_store enum:
MAX_IMAGE_UNITS_EXT = 0x8F38
MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = 0x8F39
IMAGE_BINDING_NAME_EXT = 0x8F3A
IMAGE_BINDING_LEVEL_EXT = 0x8F3B
IMAGE_BINDING_LAYERED_EXT = 0x8F3C
IMAGE_BINDING_LAYER_EXT = 0x8F3D
IMAGE_BINDING_ACCESS_EXT = 0x8F3E
IMAGE_1D_EXT = 0x904C
IMAGE_2D_EXT = 0x904D
IMAGE_3D_EXT = 0x904E
IMAGE_2D_RECT_EXT = 0x904F
IMAGE_CUBE_EXT = 0x9050
IMAGE_BUFFER_EXT = 0x9051
IMAGE_1D_ARRAY_EXT = 0x9052
IMAGE_2D_ARRAY_EXT = 0x9053
IMAGE_CUBE_MAP_ARRAY_EXT = 0x9054
IMAGE_2D_MULTISAMPLE_EXT = 0x9055
IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9056
INT_IMAGE_1D_EXT = 0x9057
INT_IMAGE_2D_EXT = 0x9058
INT_IMAGE_3D_EXT = 0x9059
INT_IMAGE_2D_RECT_EXT = 0x905A
INT_IMAGE_CUBE_EXT = 0x905B
INT_IMAGE_BUFFER_EXT = 0x905C
INT_IMAGE_1D_ARRAY_EXT = 0x905D
INT_IMAGE_2D_ARRAY_EXT = 0x905E
INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x905F
INT_IMAGE_2D_MULTISAMPLE_EXT = 0x9060
INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9061
UNSIGNED_INT_IMAGE_1D_EXT = 0x9062
UNSIGNED_INT_IMAGE_2D_EXT = 0x9063
UNSIGNED_INT_IMAGE_3D_EXT = 0x9064
UNSIGNED_INT_IMAGE_2D_RECT_EXT = 0x9065
UNSIGNED_INT_IMAGE_CUBE_EXT = 0x9066
UNSIGNED_INT_IMAGE_BUFFER_EXT = 0x9067
UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = 0x9068
UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = 0x9069
UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x906A
UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x906B
UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x906C
MAX_IMAGE_SAMPLES_EXT = 0x906D
IMAGE_BINDING_FORMAT_EXT = 0x906E
# ??? Not clear where to put new types of mask bits yet
VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT = 0x00000001
ELEMENT_ARRAY_BARRIER_BIT_EXT = 0x00000002
UNIFORM_BARRIER_BIT_EXT = 0x00000004
TEXTURE_FETCH_BARRIER_BIT_EXT = 0x00000008
SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT = 0x00000020
COMMAND_BARRIER_BIT_EXT = 0x00000040
PIXEL_BUFFER_BARRIER_BIT_EXT = 0x00000080
TEXTURE_UPDATE_BARRIER_BIT_EXT = 0x00000100
BUFFER_UPDATE_BARRIER_BIT_EXT = 0x00000200
FRAMEBUFFER_BARRIER_BIT_EXT = 0x00000400
TRANSFORM_FEEDBACK_BARRIER_BIT_EXT = 0x00000800
ATOMIC_COUNTER_BARRIER_BIT_EXT = 0x00001000
ALL_BARRIER_BITS_EXT = 0xFFFFFFFF
###############################################################################
# Extension #387
EXT_vertex_attrib_64bit enum:
use VERSION_1_1 DOUBLE
DOUBLE_VEC2_EXT = 0x8FFC
DOUBLE_VEC3_EXT = 0x8FFD
DOUBLE_VEC4_EXT = 0x8FFE
DOUBLE_MAT2_EXT = 0x8F46
DOUBLE_MAT3_EXT = 0x8F47
DOUBLE_MAT4_EXT = 0x8F48
DOUBLE_MAT2x3_EXT = 0x8F49
DOUBLE_MAT2x4_EXT = 0x8F4A
DOUBLE_MAT3x2_EXT = 0x8F4B
DOUBLE_MAT3x4_EXT = 0x8F4C
DOUBLE_MAT4x2_EXT = 0x8F4D
DOUBLE_MAT4x3_EXT = 0x8F4E
###############################################################################
# Extension #388
NV_gpu_program5 enum:
MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = 0x8E5A
MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5B
MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5C
FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = 0x8E5D
MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5E
MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5F
MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = 0x8F44 # Requires ARB_shader_subroutine
MAX_PROGRAM_SUBROUTINE_NUM_NV = 0x8F45 # Requires ARB_shader_subroutine
###############################################################################
# Extension #389
NV_gpu_shader5 enum:
INT64_NV = 0x140E
UNSIGNED_INT64_NV = 0x140F
INT8_NV = 0x8FE0
INT8_VEC2_NV = 0x8FE1
INT8_VEC3_NV = 0x8FE2
INT8_VEC4_NV = 0x8FE3
INT16_NV = 0x8FE4
INT16_VEC2_NV = 0x8FE5
INT16_VEC3_NV = 0x8FE6
INT16_VEC4_NV = 0x8FE7
INT64_VEC2_NV = 0x8FE9
INT64_VEC3_NV = 0x8FEA
INT64_VEC4_NV = 0x8FEB
UNSIGNED_INT8_NV = 0x8FEC
UNSIGNED_INT8_VEC2_NV = 0x8FED
UNSIGNED_INT8_VEC3_NV = 0x8FEE
UNSIGNED_INT8_VEC4_NV = 0x8FEF
UNSIGNED_INT16_NV = 0x8FF0
UNSIGNED_INT16_VEC2_NV = 0x8FF1
UNSIGNED_INT16_VEC3_NV = 0x8FF2
UNSIGNED_INT16_VEC4_NV = 0x8FF3
UNSIGNED_INT64_VEC2_NV = 0x8FF5
UNSIGNED_INT64_VEC3_NV = 0x8FF6
UNSIGNED_INT64_VEC4_NV = 0x8FF7
FLOAT16_NV = 0x8FF8
FLOAT16_VEC2_NV = 0x8FF9
FLOAT16_VEC3_NV = 0x8FFA
FLOAT16_VEC4_NV = 0x8FFB
use ARB_tessellation_shader PATCHES
###############################################################################
# Extension #390
NV_shader_buffer_store enum:
SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV = 0x00000010
use VERSION_1_5 READ_WRITE
use VERSION_1_5 WRITE_ONLY
###############################################################################
# Extension #391
NV_tessellation_program5 enum:
MAX_PROGRAM_PATCH_ATTRIBS_NV = 0x86D8
TESS_CONTROL_PROGRAM_NV = 0x891E
TESS_EVALUATION_PROGRAM_NV = 0x891F
TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = 0x8C74
TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = 0x8C75
###############################################################################
# Extension #392
NV_vertex_attrib_integer_64bit enum:
use NV_gpu_shader5 INT64_NV
use NV_gpu_shader5 UNSIGNED_INT64_NV
###############################################################################
# Extension #393
# Reuses SAMPLES enum as COVERAGE_SAMPLES
NV_multisample_coverage enum:
COVERAGE_SAMPLES_NV = 0x80A9
COLOR_SAMPLES_NV = 0x8E20
###############################################################################
# Extension #394
AMD_name_gen_delete enum:
DATA_BUFFER_AMD = 0x9151
PERFORMANCE_MONITOR_AMD = 0x9152
QUERY_OBJECT_AMD = 0x9153
VERTEX_ARRAY_OBJECT_AMD = 0x9154
SAMPLER_OBJECT_AMD = 0x9155
###############################################################################
# Extension #395
AMD_debug_output enum:
MAX_DEBUG_LOGGED_MESSAGES_AMD = 0x9144
DEBUG_LOGGED_MESSAGES_AMD = 0x9145
DEBUG_SEVERITY_HIGH_AMD = 0x9146
DEBUG_SEVERITY_MEDIUM_AMD = 0x9147
DEBUG_SEVERITY_LOW_AMD = 0x9148
DEBUG_CATEGORY_API_ERROR_AMD = 0x9149
DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = 0x914A
DEBUG_CATEGORY_DEPRECATION_AMD = 0x914B
DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = 0x914C
DEBUG_CATEGORY_PERFORMANCE_AMD = 0x914D
DEBUG_CATEGORY_SHADER_COMPILER_AMD = 0x914E
DEBUG_CATEGORY_APPLICATION_AMD = 0x914F
DEBUG_CATEGORY_OTHER_AMD = 0x9150
###############################################################################
# Extension #396
NV_vdpau_interop enum:
SURFACE_STATE_NV = 0x86EB
SURFACE_REGISTERED_NV = 0x86FD
SURFACE_MAPPED_NV = 0x8700
WRITE_DISCARD_NV = 0x88BE
###############################################################################
# No new tokens
# Extension #397
AMD_transform_feedback3_lines_triangles enum:
###############################################################################
# Extension #398 - GLX_AMD_gpu_association
# Extension #399 - GLX_EXT_create_context_es2_profile
# Extension #400 - WGL_EXT_create_context_es2_profile
###############################################################################
# Extension #401
AMD_depth_clamp_separate enum:
DEPTH_CLAMP_NEAR_AMD = 0x901E
DEPTH_CLAMP_FAR_AMD = 0x901F
###############################################################################
# Extension #402
EXT_texture_sRGB_decode enum:
TEXTURE_SRGB_DECODE_EXT = 0x8A48
DECODE_EXT = 0x8A49
SKIP_DECODE_EXT = 0x8A4A
###############################################################################
# Extension #403
NV_texture_multisample enum:
TEXTURE_COVERAGE_SAMPLES_NV = 0x9045
TEXTURE_COLOR_SAMPLES_NV = 0x9046
###############################################################################
# Extension #404
AMD_blend_minmax_factor enum:
FACTOR_MIN_AMD = 0x901C
FACTOR_MAX_AMD = 0x901D
###############################################################################
# Extension #505
#AMD_sample_positions enum:
# SUBSAMPLE_DISTANCE_AMD = 0x883F

File diff suppressed because one or more lines are too long

View File

@@ -297,17 +297,14 @@ sync,*,*, GLsync,*,*,
Int64EXT,*,*, GLint64EXT,*,*
UInt64EXT,*,*, GLuint64EXT,*,*
# EXT_direct_state_access
FramebufferAttachment,*,*, GLenum,*,*
FramebufferAttachmentParameterName,*,*, GLenum,*,*
Framebuffer,*,*, GLuint,*,*
FramebufferStatus,*,*, GLenum,*,*
FramebufferTarget,*,*, GLenum,*,*
GetFramebufferParameter,*,*, GLenum,*,*
Intptr,*,*, GLintptr,*,*
ProgramFormat,*,*, GLenum,*,*
ProgramProperty,*,*, GLenum,*,*
ProgramStringProperty,*,*, GLenum,*,*
ProgramTarget,*,*, GLenum,*,*
Renderbuffer,*,*, GLuint,*,*
RenderbufferParameterName,*,*, GLenum,*,*
Sizeiptr,*,*, GLsizeiptr,*,*
@@ -320,3 +317,12 @@ BufferAccessMask,*,*, GLbitfield,*,*
# NV_explicit_multisample
GetMultisamplePNameNV,*,*, GLenum,*,*
SampleMaskNV,*,*, GLbitfield,*,*
# ARB_debug_output
GLDEBUGPROCARB,*,*, GLDEBUGPROCARB,*,*
# AMD_debug_output
GLDEBUGPROCAMD,*,*, GLDEBUGPROCAMD,*,*
# NV_vdpau_interop
vdpauSurfaceNV,*,*, GLvdpauSurfaceNV,*,*,
# External API types
cl_context,*,*, struct _cl_context *,*,*
cl_event,*,*, struct _cl_event *,*,*

View File

@@ -4,7 +4,7 @@
# This document is licensed under the SGI Free Software B License Version
# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
#
# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
# $Revision: 12183 $ on $Date: 2010-08-06 02:53:05 -0700 (Fri, 06 Aug 2010) $
# This is the GLX enumerant registry.
#
@@ -126,15 +126,17 @@ GLXBindToTextureTargetMask enum:
TEXTURE_2D_BIT_EXT = 0x00000002
TEXTURE_RECTANGLE_BIT_EXT = 0x00000004
# CONTEXT_FLAGS_ARB bits
# CONTEXT_FLAGS_ARB bits (shared with WGL and GL)
GLXContextFlags enum:
CONTEXT_DEBUG_BIT_ARB = 0x00000001 # ARB_create_context
CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x00000002 # ARB_create_context
CONTEXT_ROBUST_ACCESS_BIT_ARB = 0x00000004 # ARB_create_context_robustness
# CONTEXT_PROFILE_MASK_ARB bits
GLXContextProfileMask enum:
CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001 # ARB_create_context_profile
CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002 # ARB_create_context_profile
CONTEXT_ES2_PROFILE_BIT_EXT = 0x00000004 # EXT_create_context_es2_profile
GLXAttribute enum:
USE_GL = 1 # Visual attributes
@@ -250,16 +252,29 @@ GLXAttribute enum:
SAMPLES_ARB = 100001 # "
SAMPLE_BUFFERS = 100000 # Visual attribute (GLX 1.4 core - alias of SGIS_multisample)
SAMPLES = 100001 # "
COVERAGE_SAMPLES_NV = 100001 # Visual attribute (NV_multisample_coverage - reuse SAMPLES_ARB)
###############################################################################
# ARB: 0x2070-0x209F (shared with WGL)
# AMD: 0x1F00-0x1F02 (additional; see below; equivalent to corresponding WGL/GL tokens)
###############################################################################
# ARB: 0x2070-0x209F
# Shared with WGL, synchronize create_context_* enums with wglenum.spec!
# Also includes a bitmask - see ContextFlags above
# ARB_create_context enum:
CONTEXT_MAJOR_VERSION_ARB = 0x2091
CONTEXT_MINOR_VERSION_ARB = 0x2092
# 0x2093 used for WGL_CONTEXT_LAYER_PLANE_ARB
CONTEXT_FLAGS_ARB = 0x2094
# 0x2095 collides with WGL_ERROR_INVALID_VERSION_ARB!
CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB = 0x2095
# 0x2096 used for WGL_ERROR_INVALID_PROFILE_ARB
# ARB_future_use: 0x2097-0x209F
###############################################################################
@@ -269,10 +284,14 @@ GLXAttribute enum:
FLOAT_COMPONENTS_NV = 0x20B0
# EXT_fbconfig_packed_float enum:
RGBA_UNSIGNED_FLOAT_TYPE_EXT = 0x20B1
# ARB_framebuffer_sRGB enum:
FRAMEBUFFER_SRGB_CAPABLE_ARB = 0x20B2
# EXT_framebuffer_sRGB enum:
FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x20B2
# NV_multisample_coverage enum:
COLOR_SAMPLES_NV = 0x20B3
# NV_future_use: 0x20B3-0x20B8
# NV_future_use: 0x20B4-0x20B8
# ARB_fbconfig_float enum:
RGBA_FLOAT_TYPE_ARB = 0x20B9
@@ -341,6 +360,28 @@ EXT_swap_control enum:
###############################################################################
# AMD: 0x21A0-0x21AF
# Shared with WGL, synchronize with wglenum.spec!
# WGL extensions: 0x21A0-0x21A1
GLX_AMD_gpu_association enum:
GPU_VENDOR_AMD = 0x1F00
GPU_RENDERER_STRING_AMD = 0x1F01
GPU_OPENGL_VERSION_STRING_AMD = 0x1F02
GPU_FASTEST_TARGET_GPUS_AMD = 0x21A2
GPU_RAM_AMD = 0x21A3
GPU_CLOCK_AMD = 0x21A4
GPU_NUM_PIPES_AMD = 0x21A5
GPU_NUM_SIMD_AMD = 0x21A6
GPU_NUM_RB_AMD = 0x21A7
GPU_NUM_SPI_AMD = 0x21A8
# AMD_future_use: 0x21A9-0x21AF
###############################################################################
# MESA (not in a reserved block)
# MESA_set_3dfx_mode enum:
@@ -404,17 +445,35 @@ INTEL_future_use: 0x8183-0x818F
### Please remember that new GLX enum allocations must be obtained by request
### to the Khronos API Registrar (see comments at the top of this file)
### File requests in the Khronos Bugzilla, OpenGL project, Registry component.
### Also note that some GLX enum values are shared with GL and WGL, and
### new ranges should be allocated with such overlaps in mind.
###############################################################################
# Any_vendor_future_use: 0x8180-0x9125
# Any_vendor_future_use: 0x8190-0x824F
###############################################################################
# ARB: 0x8250-0x826F
# No additional values should be used from this range, which includes
# the range used by GL_ARB_robustness rounded up to multiples of 16.
# Also includes a bitmask - see ContextFlags above
# All values are shared with GLX and GL
GLX_ARB_create_context_robustness enum:
LOSE_CONTEXT_ON_RESET_ARB = 0x8252 # shared with GL_ARB_robustness
CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256 # shared with GL_ARB_robustness
NO_RESET_NOTIFICATION_ARB = 0x8261 # shared with GL_ARB_robustness
# Any_vendor_future_use: 0x8270-0x9125
# Also includes a bitmask - see ContextProfileMask above
# ARB_create_context_profile enum: (equivalent to corresponding GL token)
# All values are shared with GLX and GL
ARB_create_context_profile enum:
CONTEXT_PROFILE_MASK_ARB = 0x9126
# Any_vendor_future_use: 0x9127-0xFFFF
#
# This range must be the last range in the file. To generate a new
# range, allocate multiples of 16 from the beginning of the
# range, allocate multiples of 16 from the beginning of the first
# Any_vendor_future_use range and update glxenum.spec, glxenumext.spec,
# and extensions.reserved.

View File

@@ -4,7 +4,7 @@
# This document is licensed under the SGI Free Software B License Version
# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
#
# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
# $Revision: 12183 $ on $Date: 2010-08-06 02:53:05 -0700 (Fri, 06 Aug 2010) $
# List of GLX enumerants for glxext.h header
#
@@ -25,9 +25,9 @@
passthru:
passthru: /* Header file version number, required by OpenGL ABI for Linux */
passthru: /* glxext.h last updated 2010/02/10 */
passthru: /* glxext.h last updated 2010/08/06 */
passthru: /* Current version at http://www.opengl.org/registry/ */
passthru: #define GLX_GLXEXT_VERSION 27
passthru: #define GLX_GLXEXT_VERSION 32
###############################################################################
#
@@ -124,6 +124,12 @@ ARB_multisample enum:
###############################################################################
# ARB Extension #28
ARB_vertex_buffer_object enum:
CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB = 0x2095
###############################################################################
# ARB Extension #39
ARB_fbconfig_float enum:
RGBA_FLOAT_TYPE_ARB = 0x20B9
@@ -131,6 +137,12 @@ ARB_fbconfig_float enum:
###############################################################################
# ARB Extension #46
ARB_framebuffer_sRGB enum:
FRAMEBUFFER_SRGB_CAPABLE_ARB = 0x20B2
###############################################################################
# ARB Extension #56
ARB_create_context enum:
CONTEXT_DEBUG_BIT_ARB = 0x00000001
@@ -147,6 +159,15 @@ ARB_create_context_profile enum:
CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002
CONTEXT_PROFILE_MASK_ARB = 0x9126
###############################################################################
# ARB Extension #101
# All values are shared with GLX and GL
ARB_create_context_robustness enum:
CONTEXT_ROBUST_ACCESS_BIT_ARB = 0x00000004
LOSE_CONTEXT_ON_RESET_ARB = 0x8252
CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256
NO_RESET_NOTIFICATION_ARB = 0x8261
###############################################################################
#
@@ -513,3 +534,32 @@ INTEL_swap_event enum:
EXCHANGE_COMPLETE_INTEL = 0x8180
COPY_COMPLETE_INTEL = 0x8181
FLIP_COMPLETE_INTEL = 0x8182
###############################################################################
# Extension #393
NV_multisample_coverage enum:
COVERAGE_SAMPLES_NV = 100001
COLOR_SAMPLES_NV = 0x20B3
###############################################################################
# Extension #398
AMD_gpu_association enum:
GPU_VENDOR_AMD = 0x1F00
GPU_RENDERER_STRING_AMD = 0x1F01
GPU_OPENGL_VERSION_STRING_AMD = 0x1F02
GPU_FASTEST_TARGET_GPUS_AMD = 0x21A2
GPU_RAM_AMD = 0x21A3
GPU_CLOCK_AMD = 0x21A4
GPU_NUM_PIPES_AMD = 0x21A5
GPU_NUM_SIMD_AMD = 0x21A6
GPU_NUM_RB_AMD = 0x21A7
GPU_NUM_SPI_AMD = 0x21A8
###############################################################################
# Extension #399
# All values are shared with WGL and GL
EXT_create_context_es2_profile enum:
CONTEXT_ES2_PROFILE_BIT_EXT = 0x00000004

View File

@@ -7,14 +7,14 @@
# This document is licensed under the SGI Free Software B License Version
# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
#
# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
# $Revision: 12183 $ on $Date: 2010-08-06 02:53:05 -0700 (Fri, 06 Aug 2010) $
required-props:
param: retval retained
glxflags: client-handcode client-intercept server-handcode
glxvendorglx: *
vectorequiv: *
category: VERSION_1_3 VERSION_1_4 ARB_get_proc_address ARB_multisample ARB_fbconfig_float EXT_import_context SGIX_dmbuffer SGIX_fbconfig SGIX_pbuffer SGIX_swap_barrier SGIX_swap_group SGIX_video_resize SGIX_video_source SGI_cushion SGI_make_current_read SGI_swap_control SGI_video_sync SUN_get_transparent_index MESA_agp_offset MESA_copy_sub_buffer MESA_pixmap_colormap MESA_release_buffers MESA_set_3dfx_mode SGIX_visual_select_group OML_sync_control SGIX_hyperpipe EXT_texture_from_pixmap NV_swap_group NV_video_output NV_present_video ARB_create_context NV_video_capture NV_copy_image EXT_swap_control
category: VERSION_1_3 VERSION_1_4 ARB_get_proc_address ARB_multisample ARB_fbconfig_float EXT_import_context SGIX_dmbuffer SGIX_fbconfig SGIX_pbuffer SGIX_swap_barrier SGIX_swap_group SGIX_video_resize SGIX_video_source SGI_cushion SGI_make_current_read SGI_swap_control SGI_video_sync SUN_get_transparent_index MESA_agp_offset MESA_copy_sub_buffer MESA_pixmap_colormap MESA_release_buffers MESA_set_3dfx_mode SGIX_visual_select_group OML_sync_control SGIX_hyperpipe EXT_texture_from_pixmap NV_swap_group NV_video_output NV_present_video ARB_create_context NV_video_capture NV_copy_image EXT_swap_control ARB_framebuffer_sRGB
glxopcode: *
#
@@ -312,6 +312,16 @@ newcategory: ARB_multisample
# (none)
newcategory: ARB_fbconfig_float
###############################################################################
#
# ARB Extension #46
# ARB_framebuffer_sRGB commands
#
###############################################################################
# (none)
newcategory: ARB_framebuffer_sRGB
###############################################################################
#
# ARB Extension #56
@@ -340,6 +350,16 @@ CreateContextAttribsARB(dpy, config, share_context, direct, attrib_list)
# (none)
newcategory: ARB_create_context_profile
###############################################################################
#
# ARB Extension #101
# ARB_create_context_robustness commands
#
###############################################################################
# (none)
newcategory: ARB_create_context_robustness
###############################################################################
#
@@ -1328,3 +1348,145 @@ CopyImageSubDataNV(dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ,
# (none)
newcategory: INTEL_swap_event
###############################################################################
#
# Extension #393
# NV_multisample_coverage commands
#
###############################################################################
# (none)
newcategory: NV_multisample_coverage
###############################################################################
#
# Extension #399
# AMD_gpu_association commands
#
###############################################################################
# These are a weird mishmash of X and Windows types - are they correct?
# Leave out of glxext.h for the time being.
#@ UINT glXGetGPUIDsAMD(UINT maxCount, UINT *ids);
#@ INT glXGetGPUInfoAMD(UINT id, INT property, GLenum dataType,
#@ UINT size, void *data)
#@ UINT glXGetContextGPUIDAMD(GLXContext ctx);
#@ HGLRC glXCreateAssociatedContextAMD(UINT id, GLXContext share_list);
#@ HGLRC glXCreateAssociatedContextAttribsAMD(UINT id, GLXContext share_context,
#@ const int *attribList);
#@ BOOL glXDeleteAssociatedContextAMD(GLXContext ctx);
#@ BOOL glXMakeAssociatedContextCurrentAMD(GLXContext ctx);
#@ HGLRC glXGetCurrentAssociatedContextAMD(void);
#@ VOID glXBlitContextFramebufferAMD(GLXContext dstCtx, GLint srcX0, GLint srcY0,
#@ GLint srcX1, GLint srcY1, GLint dstX0,
#@ GLint dstY0, GLint dstX1, GLint dstY1,
#@ GLbitfield mask, GLenum filter);
#@ glXGetGPUIDsAMD(maxCount, ids)
#@ return UINT
#@ param maxCount UINT in value
#@ param ids UINT in array [???]
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXGetGPUInfoAMD(id, property, dataType, size, data)
#@ return INT
#@ param id UINT in value
#@ param property INT in value
#@ param dataType GLenum in value
#@ param size UINT in value
#@ param data void in array [???]
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXGetContextGPUIDAMD(ctx)
#@ return UINT
#@ param ctx GLXContext in value
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXCreateAssociatedContextAMD(id, share_list)
#@ return HGLRC
#@ param id UINT in value
#@ param share_list GLXContext in value
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXCreateAssociatedContextAttribsAMD(id, share_context, attribList)
#@ return HGLRC
#@ param id UINT in value
#@ param share_context GLXContext in value
#@ param attribList Int32 in array [???]
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXDeleteAssociatedContextAMD(ctx)
#@ return BOOL
#@ param ctx GLXContext in value
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXMakeAssociatedContextCurrentAMD(ctx)
#@ return BOOL
#@ param ctx GLXContext in value
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXGetCurrentAssociatedContextAMD()
#@ return HGLRC
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?
#@
#@ glXBlitContextFramebufferAMD(dstCtx, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
#@ return VOID
#@ param dstCtx GLXContext in value
#@ param srcX0 GLint in value
#@ param srcY0 GLint in value
#@ param srcX1 GLint in value
#@ param srcY1 GLint in value
#@ param dstX0 GLint in value
#@ param dstY0 GLint in value
#@ param dstX1 GLint in value
#@ param dstY1 GLint in value
#@ param mask GLbitfield in value
#@ param filter GLenum in value
#@ category AMD_gpu_association
#@ version 4.1
#@ extension
#@ glxropcode ?
#@ glxflags ignore
#@ offset ?

View File

@@ -1,5 +1,6 @@
/*
* Copyright © 2010 Intel Corporation
* Copyright © 2011 Apple Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Soft-
@@ -32,23 +33,31 @@
#if defined(GLX_USE_APPLEGL)
#include <stdbool.h>
#include "glxclient.h"
#include "apple_glx_context.h"
#include "apple_glx.h"
#include "glx_error.h"
static void
applegl_destroy_context(struct glx_context *gc)
{
apple_glx_destroy_context(&gc->driContext, gc->currentDpy);
apple_glx_destroy_context(&gc->driContext, gc->psc->dpy);
}
static int
applegl_bind_context(struct glx_context *gc, struct glx_context *old,
GLXDrawable draw, GLXDrawable read)
{
Display *dpy = gc->psc->dpy;
bool error = apple_glx_make_current_context(dpy,
(oldGC && oldGC != &dummyContext) ? oldGC->driContext : NUL~
(old && old != &dummyContext) ? old->driContext : NULL,
gc ? gc->driContext : NULL, draw);
apple_glx_diagnostic("%s: error %s\n", __func__, error ? "YES" : "NO");
if (error)
return GLXBadContext;
return 1; /* GLXBadContext is the same as Success (0) */
return Success;
}
@@ -67,7 +76,8 @@ applegl_wait_gl(struct glx_context *gc)
static void
applegl_wait_x(struct glx_context *gc)
{
apple_glx_waitx(gc->dpy, gc->driContext);
Display *dpy = gc->psc->dpy;
apple_glx_waitx(dpy, gc->driContext);
}
static const struct glx_context_vtable applegl_context_vtable = {
@@ -81,34 +91,34 @@ static const struct glx_context_vtable applegl_context_vtable = {
NULL, /* release_tex_image, */
};
static struct glx_context *
struct glx_context *
applegl_create_context(struct glx_screen *psc,
struct glx_config *mode,
struct glx_config *config,
struct glx_context *shareList, int renderType)
{
struct glx_context *gc;
int errorcode;
bool x11error;
Display *dpy = psc->dpy;
int screen = psc->scr;
/* TODO: Integrate this with apple_glx_create_context and make
* struct apple_glx_context inherit from struct glx_context. */
gc = Xmalloc(sizeof *gc);
if (pcp == NULL)
gc = Xcalloc(1, sizeof (*gc));
if (gc == NULL)
return NULL;
memset(gc, 0, sizeof *gc);
if (!glx_context_init(&gc->base, &psc->base, mode)) {
if (!glx_context_init(gc, psc, config)) {
Xfree(gc);
return NULL;
}
gc->vtable = &applegl_context_vtable;
gc->driContext = NULL;
gc->do_destroy = False;
/* TODO: darwin: Integrate with above to do indirect */
if(apple_glx_create_context(&gc->driContext, dpy, screen, fbconfig,
if(apple_glx_create_context(&gc->driContext, dpy, screen, config,
shareList ? shareList->driContext : NULL,
&errorcode, &x11error)) {
__glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error);
@@ -117,15 +127,15 @@ applegl_create_context(struct glx_screen *psc,
}
gc->currentContextTag = -1;
gc->mode = fbconfig;
gc->isDirect = allowDirect;
gc->config = config;
gc->isDirect = GL_TRUE;
gc->xid = 1; /* Just something not None, so we know when to destroy
* it in MakeContextCurrent. */
return gc;
}
struct glx_screen_vtable appegl_screen_vtable = {
struct glx_screen_vtable applegl_screen_vtable = {
applegl_create_context
};
@@ -146,10 +156,12 @@ applegl_create_screen(int screen, struct glx_display * priv)
}
_X_HIDDEN int
applegl_create_display(struct glx_display *display)
applegl_create_display(struct glx_display *glx_dpy)
{
/* create applegl display and stuff in display->appleglDisplay */
apple_init_glx(display);
if(!apple_init_glx(glx_dpy->dpy))
return 1;
return GLXBadContext;
}
#endif

View File

@@ -843,7 +843,7 @@ glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap,
WARN_ONCE_GLX_1_3(dpy, __func__);
#ifdef GLX_USE_APPLEGL
const struct glx_config *modes = (const __GLcontextModes *) config;
const struct glx_config *modes = (const struct glx_config *) config;
if (apple_glx_pixmap_create(dpy, modes->screen, pixmap, modes))
return None;

View File

@@ -342,6 +342,10 @@ struct glx_context
*/
Bool isDirect;
#if defined(GLX_DIRECT_RENDERING) && defined(GLX_USE_APPLEGL)
void *driContext;
#endif
/**
* \c dpy of current display for this context. Will be \c NULL if not
* current to any display, or if this is the "dummy context".
@@ -771,7 +775,19 @@ GarbageCollectDRIDrawables(struct glx_screen *psc);
extern __GLXDRIdrawable *
GetGLXDRIDrawable(Display *dpy, GLXDrawable drawable);
#endif
#ifdef GLX_USE_APPLEGL
extern struct glx_screen *
applegl_create_screen(int screen, struct glx_display * priv);
extern struct glx_context *
applegl_create_context(struct glx_screen *psc,
struct glx_config *mode,
struct glx_context *shareList, int renderType);
extern int
applegl_create_display(struct glx_display *display);
#endif
extern struct glx_context dummyContext;

View File

@@ -228,10 +228,14 @@ CreateContext(Display * dpy, int generic_id,
return NULL;
gc = NULL;
#ifdef GLX_USE_APPLEGL
gc = applegl_create_context(psc, config, shareList, renderType);
#else
if (allowDirect && psc->vtable->create_context)
gc = psc->vtable->create_context(psc, config, shareList, renderType);
if (!gc)
gc = indirect_create_context(psc, config, shareList, renderType);
#endif
if (!gc)
return NULL;
@@ -606,7 +610,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
struct glx_screen *const psc = GetGLXScreenConfigs(dpy, screen);
const struct glx_config *config;
config = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
config = glx_config_find_visual(psc->visuals, vis->visualid);
if(apple_glx_pixmap_create(dpy, vis->screen, pixmap, config))
return None;
@@ -710,7 +714,7 @@ _X_EXPORT void
glXSwapBuffers(Display * dpy, GLXDrawable drawable)
{
#ifdef GLX_USE_APPLEGL
GLXContext gc = glXGetCurrentContext();
struct glx_context * gc = __glXGetCurrentContext();
if(gc && apple_glx_is_current_drawable(dpy, gc->driContext, drawable)) {
apple_glx_swap_buffers(gc->driContext);
} else {

View File

@@ -160,12 +160,10 @@ _X_HIDDEN void
__glXSetCurrentContextNull(void)
{
__glXSetCurrentContext(&dummyContext);
#ifndef GLX_USE_APPLEGL
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
_glapi_set_dispatch(NULL); /* no-op functions */
_glapi_set_context(NULL);
#endif
#endif
}
_X_EXPORT GLXContext
@@ -234,6 +232,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
return False;
}
#ifndef GLX_USE_APPLEGL
_glapi_check_multithread();
if (gc != NULL && gc->thread_id != 0 && gc->thread_id != _glthread_GetID()) {
@@ -241,6 +240,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
BadAccess, X_GLXMakeContextCurrent);
return False;
}
#endif
if (oldGC == gc &&
gc->currentDrawable == draw && gc->currentReadable == read)
@@ -258,7 +258,9 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
gc->currentDpy = dpy;
gc->currentDrawable = draw;
gc->currentReadable = read;
#ifndef GLX_USE_APPLEGL
gc->thread_id = _glthread_GetID();
#endif
__glXSetCurrentContext(gc);
ret = gc->vtable->bind(gc, oldGC, draw, read);
} else {

View File

@@ -764,11 +764,12 @@ AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv)
psc = (*priv->driswDisplay->createScreen) (i, priv);
#endif
#if defined(GLX_USE_APPLEGL)
if (psc == NULL && priv->appleglDisplay)
psc = (*priv->appleglDisplay->createScreen) (i, priv);
#endif
if (psc == NULL)
psc = applegl_create_screen(i, priv);
#else
if (psc == NULL)
psc = indirect_create_screen(i, priv);
#endif
priv->screens[i] = psc;
}
SyncHandle();

View File

@@ -98,9 +98,6 @@ static int r300_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg)
unsigned int relevant;
int j;
if (reg.Abs)
reg.Negate = RC_MASK_NONE;
if (opcode == RC_OPCODE_KIL ||
opcode == RC_OPCODE_TEX ||
opcode == RC_OPCODE_TXB ||
@@ -142,9 +139,6 @@ static void r300_swizzle_split(
struct rc_src_register src, unsigned int mask,
struct rc_swizzle_split * split)
{
if (src.Abs)
src.Negate = RC_MASK_NONE;
split->NumPhases = 0;
while(mask) {

View File

@@ -272,6 +272,7 @@ static void ei_mad(struct r300_vertex_program_code *vp,
struct rc_sub_instruction *vpi,
unsigned int * inst)
{
unsigned int i;
/* Remarks about hardware limitations of MAD
* (please preserve this comment, as this information is _NOT_
* in the documentation provided by AMD).
@@ -317,6 +318,23 @@ static void ei_mad(struct r300_vertex_program_code *vp,
t_dst_index(vp, &vpi->DstReg),
t_dst_mask(vpi->DstReg.WriteMask),
t_dst_class(vpi->DstReg.File));
/* Arguments with constant swizzles still count as a unique
* temporary, so we should make sure these arguments share a
* register index with one of the other arguments. */
for (i = 0; i < 3; i++) {
unsigned int j;
if (vpi->SrcReg[i].File != RC_FILE_NONE)
continue;
for (j = 0; j < 3; j++) {
if (i != j) {
vpi->SrcReg[i].Index =
vpi->SrcReg[j].Index;
break;
}
}
}
}
inst[1] = t_src(vp, &vpi->SrcReg[0]);
inst[2] = t_src(vp, &vpi->SrcReg[1]);

View File

@@ -74,9 +74,6 @@ static int r500_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg)
if (opcode == RC_OPCODE_KIL && (reg.Swizzle != RC_SWIZZLE_XYZW || reg.Negate != RC_MASK_NONE))
return 0;
if (reg.Negate)
reg.Negate ^= RC_MASK_XYZW;
for(i = 0; i < 4; ++i) {
unsigned int swz = GET_SWZ(reg.Swizzle, i);
if (swz == RC_SWIZZLE_UNUSED) {
@@ -100,9 +97,6 @@ static int r500_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg)
return 0;
} else {
/* ALU instructions support almost everything */
if (reg.Abs)
return 1;
relevant = 0;
for(i = 0; i < 3; ++i) {
unsigned int swz = GET_SWZ(reg.Swizzle, i);

View File

@@ -373,7 +373,7 @@ static int emit_tex(struct r300_fragment_program_compiler *c, struct rc_sub_inst
| (inst->DstReg.WriteMask << 11)
| R500_INST_TEX_SEM_WAIT;
code->inst[ip].inst1 = R500_TEX_ID(inst->TexSrcUnit)
| R500_TEX_SEM_ACQUIRE | R500_TEX_IGNORE_UNCOVERED;
| R500_TEX_SEM_ACQUIRE;
if (inst->TexSrcTarget == RC_TEXTURE_RECT)
code->inst[ip].inst1 |= R500_TEX_UNSCALED;

View File

@@ -647,10 +647,34 @@ static int is_presub_candidate(
{
const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode);
unsigned int i;
unsigned int is_constant[2] = {0, 0};
assert(inst->U.I.Opcode == RC_OPCODE_ADD);
if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE || inst->U.I.SaturateMode)
return 0;
/* If both sources use a constant swizzle, then we can't convert it to
* a presubtract operation. In fact for the ADD and SUB presubtract
* operations neither source can contain a constant swizzle. This
* specific case is checked in peephole_add_presub_add() when
* we make sure the swizzles for both sources are equal, so we
* don't need to worry about it here. */
for (i = 0; i < 2; i++) {
int chan;
for (chan = 0; chan < 4; chan++) {
rc_swizzle swz =
get_swz(inst->U.I.SrcReg[i].Swizzle, chan);
if (swz == RC_SWIZZLE_ONE
|| swz == RC_SWIZZLE_ZERO
|| swz == RC_SWIZZLE_HALF) {
is_constant[i] = 1;
}
}
}
if (is_constant[0] && is_constant[1])
return 0;
for(i = 0; i < info->NumSrcRegs; i++) {
struct rc_src_register src = inst->U.I.SrcReg[i];
if (src_reads_dst_mask(src, inst->U.I.DstReg))

View File

@@ -211,16 +211,21 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c,
if (needrgb && !istranscendent) {
unsigned int srcrgb = 0;
unsigned int srcalpha = 0;
unsigned int srcmask = 0;
int j;
/* We don't care about the alpha channel here. We only
* want the part of the swizzle that writes to rgb,
* since we are creating an rgb instruction. */
for(j = 0; j < 3; ++j) {
unsigned int swz = GET_SWZ(inst->SrcReg[i].Swizzle, j);
if (swz < 3)
if (swz < RC_SWIZZLE_W)
srcrgb = 1;
else if (swz < 4)
else if (swz == RC_SWIZZLE_W)
srcalpha = 1;
if (swz < RC_SWIZZLE_UNUSED)
srcmask |= 1 << j;
}
source = rc_pair_alloc_source(pair, srcrgb, srcalpha,
inst->SrcReg[i].File, inst->SrcReg[i].Index);
@@ -232,7 +237,7 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c,
pair->RGB.Arg[i].Source = source;
pair->RGB.Arg[i].Swizzle = inst->SrcReg[i].Swizzle & 0x1ff;
pair->RGB.Arg[i].Abs = inst->SrcReg[i].Abs;
pair->RGB.Arg[i].Negate = !!(inst->SrcReg[i].Negate & (RC_MASK_X | RC_MASK_Y | RC_MASK_Z));
pair->RGB.Arg[i].Negate = !!(srcmask & inst->SrcReg[i].Negate & (RC_MASK_X | RC_MASK_Y | RC_MASK_Z));
}
if (needalpha) {
unsigned int srcrgb = 0;

View File

@@ -29,20 +29,34 @@
/* Series of transformations to be done on textures. */
static struct rc_src_register shadow_ambient(struct r300_fragment_program_compiler *compiler,
int tmu)
static struct rc_src_register shadow_fail_value(struct r300_fragment_program_compiler *compiler,
int tmu)
{
struct rc_src_register reg = { 0, };
if (compiler->enable_shadow_ambient) {
reg.File = RC_FILE_CONSTANT;
reg.Index = rc_constants_add_state(&compiler->Base.Program.Constants,
RC_STATE_SHADOW_AMBIENT, tmu);
RC_STATE_SHADOW_AMBIENT, tmu);
reg.Swizzle = RC_SWIZZLE_WWWW;
} else {
reg.File = RC_FILE_NONE;
reg.Swizzle = RC_SWIZZLE_0000;
}
reg.Swizzle = combine_swizzles(reg.Swizzle,
compiler->state.unit[tmu].depth_texture_swizzle);
return reg;
}
static struct rc_src_register shadow_pass_value(struct r300_fragment_program_compiler *compiler,
int tmu)
{
struct rc_src_register reg = { 0, };
reg.File = RC_FILE_NONE;
reg.Swizzle = combine_swizzles(RC_SWIZZLE_1111,
compiler->state.unit[tmu].depth_texture_swizzle);
return reg;
}
@@ -138,89 +152,92 @@ int radeonTransformTEX(
inst->U.I.Opcode = RC_OPCODE_MOV;
if (comparefunc == RC_COMPARE_FUNC_ALWAYS) {
inst->U.I.SrcReg[0].File = RC_FILE_NONE;
inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_1111;
inst->U.I.SrcReg[0] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit);
} else {
inst->U.I.SrcReg[0] = shadow_ambient(compiler, inst->U.I.TexSrcUnit);
inst->U.I.SrcReg[0] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit);
}
return 1;
} else {
rc_compare_func comparefunc = compiler->state.unit[inst->U.I.TexSrcUnit].texture_compare_func;
struct rc_instruction * inst_rcp = NULL;
struct rc_instruction * inst_mad;
struct rc_instruction * inst_cmp;
struct rc_instruction *inst_mul, *inst_add, *inst_cmp;
unsigned tmp_texsample;
unsigned tmp_sum;
unsigned tmp_recip_w = 0;
int pass, fail, tex;
int pass, fail;
/* Save the output register. */
struct rc_dst_register output_reg = inst->U.I.DstReg;
unsigned saturate_mode = inst->U.I.SaturateMode;
/* Redirect TEX to a new temp. */
tmp_texsample = rc_find_free_temporary(c);
inst->U.I.SaturateMode = 0;
inst->U.I.DstReg.File = RC_FILE_TEMPORARY;
inst->U.I.DstReg.Index = tmp_texsample;
inst->U.I.DstReg.WriteMask = RC_MASK_XYZW;
if (inst->U.I.Opcode == RC_OPCODE_TXP) {
tmp_recip_w = rc_find_free_temporary(c);
tmp_sum = rc_find_free_temporary(c);
if (inst->U.I.Opcode == RC_OPCODE_TXP) {
/* Compute 1/W. */
inst_rcp = rc_insert_new_instruction(c, inst);
inst_rcp->U.I.Opcode = RC_OPCODE_RCP;
inst_rcp->U.I.DstReg.File = RC_FILE_TEMPORARY;
inst_rcp->U.I.DstReg.Index = tmp_recip_w;
inst_rcp->U.I.DstReg.Index = tmp_sum;
inst_rcp->U.I.DstReg.WriteMask = RC_MASK_W;
inst_rcp->U.I.SrcReg[0] = inst->U.I.SrcReg[0];
inst_rcp->U.I.SrcReg[0].Swizzle =
RC_MAKE_SWIZZLE_SMEAR(GET_SWZ(inst->U.I.SrcReg[0].Swizzle, 3));
}
/* Perspective-divide Z by W (if it's TXP) and add the texture sample (see below). */
tmp_sum = rc_find_free_temporary(c);
inst_mad = rc_insert_new_instruction(c, inst_rcp ? inst_rcp : inst);
inst_mad->U.I.DstReg.File = RC_FILE_TEMPORARY;
inst_mad->U.I.DstReg.Index = tmp_sum;
inst_mad->U.I.SrcReg[0] = inst->U.I.SrcReg[0];
inst_mad->U.I.SrcReg[0].Swizzle =
/* Divide Z by W (if it's TXP) and saturate. */
inst_mul = rc_insert_new_instruction(c, inst_rcp ? inst_rcp : inst);
inst_mul->U.I.Opcode = inst->U.I.Opcode == RC_OPCODE_TXP ? RC_OPCODE_MUL : RC_OPCODE_MOV;
inst_mul->U.I.DstReg.File = RC_FILE_TEMPORARY;
inst_mul->U.I.DstReg.Index = tmp_sum;
inst_mul->U.I.DstReg.WriteMask = RC_MASK_W;
inst_mul->U.I.SaturateMode = RC_SATURATE_ZERO_ONE;
inst_mul->U.I.SrcReg[0] = inst->U.I.SrcReg[0];
inst_mul->U.I.SrcReg[0].Swizzle =
RC_MAKE_SWIZZLE_SMEAR(GET_SWZ(inst->U.I.SrcReg[0].Swizzle, 2));
if (inst->U.I.Opcode == RC_OPCODE_TXP) {
inst_mad->U.I.Opcode = RC_OPCODE_MAD;
inst_mad->U.I.SrcReg[1].File = RC_FILE_TEMPORARY;
inst_mad->U.I.SrcReg[1].Index = tmp_recip_w;
inst_mad->U.I.SrcReg[1].Swizzle = RC_SWIZZLE_WWWW;
tex = 2;
} else {
inst_mad->U.I.Opcode = RC_OPCODE_ADD;
tex = 1;
}
inst_mad->U.I.SrcReg[tex].File = RC_FILE_TEMPORARY;
inst_mad->U.I.SrcReg[tex].Index = tmp_texsample;
inst_mad->U.I.SrcReg[tex].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle;
/* Fake EQUAL/NOTEQUAL, it seems to pass some tests suprisingly. */
if (comparefunc == RC_COMPARE_FUNC_EQUAL) {
comparefunc = RC_COMPARE_FUNC_GEQUAL;
} else if (comparefunc == RC_COMPARE_FUNC_NOTEQUAL) {
comparefunc = RC_COMPARE_FUNC_LESS;
inst_mul->U.I.SrcReg[1].File = RC_FILE_TEMPORARY;
inst_mul->U.I.SrcReg[1].Index = tmp_sum;
inst_mul->U.I.SrcReg[1].Swizzle = RC_SWIZZLE_WWWW;
}
/* Recall that SrcReg[0] is r, SrcReg[tex] is tex and:
/* Add the depth texture value. */
inst_add = rc_insert_new_instruction(c, inst_mul);
inst_add->U.I.Opcode = RC_OPCODE_ADD;
inst_add->U.I.DstReg.File = RC_FILE_TEMPORARY;
inst_add->U.I.DstReg.Index = tmp_sum;
inst_add->U.I.DstReg.WriteMask = RC_MASK_W;
inst_add->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
inst_add->U.I.SrcReg[0].Index = tmp_sum;
inst_add->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_WWWW;
inst_add->U.I.SrcReg[1].File = RC_FILE_TEMPORARY;
inst_add->U.I.SrcReg[1].Index = tmp_texsample;
inst_add->U.I.SrcReg[1].Swizzle = RC_SWIZZLE_XXXX;
/* Note that SrcReg[0] is r, SrcReg[1] is tex and:
* LESS: r < tex <=> -tex+r < 0
* GEQUAL: r >= tex <=> not (-tex+r < 0)
* GREATER: r > tex <=> tex-r < 0
* LEQUAL: r <= tex <=> not ( tex-r < 0)
*
* This negates either r or tex: */
if (comparefunc == RC_COMPARE_FUNC_LESS || comparefunc == RC_COMPARE_FUNC_GEQUAL)
inst_mad->U.I.SrcReg[tex].Negate = inst_mad->U.I.SrcReg[tex].Negate ^ RC_MASK_XYZW;
* EQUAL: GEQUAL
* NOTEQUAL:LESS
*/
/* This negates either r or tex: */
if (comparefunc == RC_COMPARE_FUNC_LESS || comparefunc == RC_COMPARE_FUNC_GEQUAL ||
comparefunc == RC_COMPARE_FUNC_EQUAL || comparefunc == RC_COMPARE_FUNC_NOTEQUAL)
inst_add->U.I.SrcReg[1].Negate = inst_add->U.I.SrcReg[1].Negate ^ RC_MASK_XYZW;
else
inst_mad->U.I.SrcReg[0].Negate = inst_mad->U.I.SrcReg[0].Negate ^ RC_MASK_XYZW;
inst_add->U.I.SrcReg[0].Negate = inst_add->U.I.SrcReg[0].Negate ^ RC_MASK_XYZW;
/* This negates the whole expresion: */
if (comparefunc == RC_COMPARE_FUNC_LESS || comparefunc == RC_COMPARE_FUNC_GREATER) {
if (comparefunc == RC_COMPARE_FUNC_LESS || comparefunc == RC_COMPARE_FUNC_GREATER ||
comparefunc == RC_COMPARE_FUNC_NOTEQUAL) {
pass = 1;
fail = 2;
} else {
@@ -228,16 +245,19 @@ int radeonTransformTEX(
fail = 1;
}
inst_cmp = rc_insert_new_instruction(c, inst_mad);
inst_cmp = rc_insert_new_instruction(c, inst_add);
inst_cmp->U.I.Opcode = RC_OPCODE_CMP;
inst_cmp->U.I.SaturateMode = saturate_mode;
inst_cmp->U.I.DstReg = output_reg;
inst_cmp->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
inst_cmp->U.I.SrcReg[0].Index = tmp_sum;
inst_cmp->U.I.SrcReg[pass].File = RC_FILE_NONE;
inst_cmp->U.I.SrcReg[pass].Swizzle = RC_SWIZZLE_1111;
inst_cmp->U.I.SrcReg[fail] = shadow_ambient(compiler, inst->U.I.TexSrcUnit);
inst_cmp->U.I.SrcReg[0].Swizzle =
combine_swizzles(RC_SWIZZLE_WWWW,
compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle);
inst_cmp->U.I.SrcReg[pass] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit);
inst_cmp->U.I.SrcReg[fail] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit);
assert(tmp_texsample != tmp_sum && tmp_sum != tmp_recip_w);
assert(tmp_texsample != tmp_sum);
}
}
@@ -401,17 +421,21 @@ int radeonTransformTEX(
}
}
/* Cannot write texture to output registers (all chips) or with masks (non-r500) */
/* Cannot write texture to output registers or with saturate (all chips),
* or with masks (non-r500). */
if (inst->U.I.Opcode != RC_OPCODE_KIL &&
(inst->U.I.DstReg.File != RC_FILE_TEMPORARY ||
inst->U.I.SaturateMode ||
(!c->is_r500 && inst->U.I.DstReg.WriteMask != RC_MASK_XYZW))) {
struct rc_instruction * inst_mov = rc_insert_new_instruction(c, inst);
inst_mov->U.I.Opcode = RC_OPCODE_MOV;
inst_mov->U.I.SaturateMode = inst->U.I.SaturateMode;
inst_mov->U.I.DstReg = inst->U.I.DstReg;
inst_mov->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
inst_mov->U.I.SrcReg[0].Index = rc_find_free_temporary(c);
inst->U.I.SaturateMode = 0;
inst->U.I.DstReg.File = RC_FILE_TEMPORARY;
inst->U.I.DstReg.Index = inst_mov->U.I.SrcReg[0].Index;
inst->U.I.DstReg.WriteMask = RC_MASK_XYZW;

View File

@@ -1565,3 +1565,31 @@ OSMesaColorClamp(GLboolean enable)
}
/**
* When GLX_INDIRECT_RENDERING is defined, some symbols are missing in
* libglapi.a. We need to define them here.
*/
#ifdef GLX_INDIRECT_RENDERING
#define GL_GLEXT_PROTOTYPES
#include "GL/gl.h"
#include "glapi/glapi.h"
#include "glapi/glapitable.h"
#if defined(USE_MGL_NAMESPACE)
#define NAME(func) mgl##func
#else
#define NAME(func) gl##func
#endif
#define DISPATCH(FUNC, ARGS, MESSAGE) \
GET_DISPATCH()->FUNC ARGS
#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
return GET_DISPATCH()->FUNC ARGS
/* skip normal ones */
#define _GLAPI_SKIP_NORMAL_ENTRY_POINTS
#include "glapi/glapitemp.h"
#endif /* GLX_INDIRECT_RENDERING */

View File

@@ -9413,9 +9413,9 @@ _mesa_create_save_table(void)
SET_DeleteProgramsNV(table, _mesa_DeletePrograms);
SET_GenProgramsNV(table, _mesa_GenPrograms);
SET_IsProgramNV(table, _mesa_IsProgramARB);
SET_GetVertexAttribdvNV(table, _mesa_GetVertexAttribdvNV);
SET_GetVertexAttribfvNV(table, _mesa_GetVertexAttribfvNV);
SET_GetVertexAttribivNV(table, _mesa_GetVertexAttribivNV);
SET_GetVertexAttribdvARB(table, _mesa_GetVertexAttribdvARB);
SET_GetVertexAttribfvARB(table, _mesa_GetVertexAttribfvARB);
SET_GetVertexAttribivARB(table, _mesa_GetVertexAttribivARB);
SET_GetVertexAttribPointervNV(table, _mesa_GetVertexAttribPointervNV);
SET_ProgramEnvParameter4dARB(table, save_ProgramEnvParameter4dARB);
SET_ProgramEnvParameter4dvARB(table, save_ProgramEnvParameter4dvARB);

View File

@@ -556,7 +556,7 @@ static const struct value_desc values[] = {
{ GL_VERTEX_ARRAY_SIZE, ARRAY_INT(Vertex.Size), NO_EXTRA },
{ GL_VERTEX_ARRAY_TYPE, ARRAY_ENUM(Vertex.Type), NO_EXTRA },
{ GL_VERTEX_ARRAY_STRIDE, ARRAY_INT(Vertex.Stride), NO_EXTRA },
{ GL_NORMAL_ARRAY, ARRAY_ENUM(Normal.Enabled), NO_EXTRA },
{ GL_NORMAL_ARRAY, ARRAY_BOOL(Normal.Enabled), NO_EXTRA },
{ GL_NORMAL_ARRAY_TYPE, ARRAY_ENUM(Normal.Type), NO_EXTRA },
{ GL_NORMAL_ARRAY_STRIDE, ARRAY_INT(Normal.Stride), NO_EXTRA },
{ GL_COLOR_ARRAY, ARRAY_BOOL(Color.Enabled), NO_EXTRA },
@@ -566,11 +566,11 @@ static const struct value_desc values[] = {
{ GL_TEXTURE_COORD_ARRAY,
LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Enabled), NO_EXTRA },
{ GL_TEXTURE_COORD_ARRAY_SIZE,
LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Size), NO_EXTRA },
LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Size), NO_EXTRA },
{ GL_TEXTURE_COORD_ARRAY_TYPE,
LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Type), NO_EXTRA },
LOC_CUSTOM, TYPE_ENUM, offsetof(struct gl_client_array, Type), NO_EXTRA },
{ GL_TEXTURE_COORD_ARRAY_STRIDE,
LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Stride), NO_EXTRA },
LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Stride), NO_EXTRA },
/* GL_ARB_ES2_compatibility */
{ GL_SHADER_COMPILER, CONST(1), extra_ARB_ES2_compatibility },
@@ -1402,7 +1402,7 @@ void _mesa_init_get_hash(GLcontext *ctx)
static void
find_custom_value(GLcontext *ctx, const struct value_desc *d, union value *v)
{
struct gl_buffer_object *buffer_obj;
struct gl_buffer_object **buffer_obj;
struct gl_client_array *array;
GLuint unit, *p;
@@ -1605,9 +1605,9 @@ find_custom_value(GLcontext *ctx, const struct value_desc *d, union value *v)
case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
buffer_obj = (struct gl_buffer_object *)
buffer_obj = (struct gl_buffer_object **)
((char *) ctx->Array.ArrayObj + d->offset);
v->value_int = buffer_obj->Name;
v->value_int = (*buffer_obj)->Name;
break;
case GL_ARRAY_BUFFER_BINDING_ARB:
v->value_int = ctx->Array.ArrayBufferObj->Name;

View File

@@ -937,24 +937,35 @@ update_interval(GLint intBegin[], GLint intEnd[],
GLuint index, GLuint ic)
{
int i;
GLuint begin = ic;
GLuint end = ic;
/* If the register is used in a loop, extend its lifetime through the end
* of the outermost loop that doesn't contain its definition.
*/
for (i = 0; i < loopStackDepth; i++) {
if (intBegin[index] < loopStack[i].Start) {
ic = loopStack[i].End;
end = loopStack[i].End;
break;
}
}
/* Variables that are live at the end of a loop will also be live at the
* beginning, so an instruction inside of a loop should have its live
* interval begin at the start of the outermost loop.
*/
if (loopStackDepth > 0 && ic > loopStack[0].Start && ic < loopStack[0].End) {
begin = loopStack[0].Start;
}
ASSERT(index < REG_ALLOCATE_MAX_PROGRAM_TEMPS);
if (intBegin[index] == -1) {
ASSERT(intEnd[index] == -1);
intBegin[index] = intEnd[index] = ic;
intBegin[index] = begin;
intEnd[index] = end;
}
else {
intEnd[index] = ic;
intEnd[index] = end;
}
}

View File

@@ -38,6 +38,7 @@
#include "st_texture.h"
#include "st_cb_blit.h"
#include "st_cb_fbo.h"
#include "st_atom.h"
#include "util/u_blit.h"
#include "util/u_inlines.h"
@@ -75,6 +76,8 @@ st_BlitFramebuffer(GLcontext *ctx,
struct gl_framebuffer *readFB = ctx->ReadBuffer;
struct gl_framebuffer *drawFB = ctx->DrawBuffer;
st_validate_state(st);
if (!_mesa_clip_blit(ctx, &srcX0, &srcY0, &srcX1, &srcY1,
&dstX0, &dstY0, &dstX1, &dstY1)) {
return; /* nothing to draw/blit */

View File

@@ -297,9 +297,11 @@ clear_with_quad(GLcontext *ctx,
cso_set_fragment_shader_handle(st->cso_context, st->clear.fs);
cso_set_vertex_shader_handle(st->cso_context, st->clear.vs);
st_translate_color(ctx->Color.ClearColor,
ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
clearColor);
if (ctx->DrawBuffer->_ColorDrawBuffers[0]) {
st_translate_color(ctx->Color.ClearColor,
ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
clearColor);
}
/* draw quad matching scissor rect */
draw_quad(st, x0, y0, x1, y1, (GLfloat) ctx->Depth.Clear, clearColor);
@@ -551,9 +553,11 @@ st_Clear(GLcontext *ctx, GLbitfield mask)
ctx->DrawBuffer->Visual.stencilBits == 0))
clear_buffers |= PIPE_CLEAR_DEPTHSTENCIL;
st_translate_color(ctx->Color.ClearColor,
ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
clearColor);
if (ctx->DrawBuffer->_ColorDrawBuffers[0]) {
st_translate_color(ctx->Color.ClearColor,
ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
clearColor);
}
st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor,
ctx->Depth.Clear, ctx->Stencil.Clear);

View File

@@ -74,6 +74,10 @@ st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
else
format = st_choose_renderbuffer_format(screen, internalFormat, rb->NumSamples);
if (format == PIPE_FORMAT_NONE) {
return FALSE;
}
/* init renderbuffer fields */
strb->Base.Width = width;
strb->Base.Height = height;

View File

@@ -250,6 +250,7 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
GLint firstStride = -1;
GLuint num_client_arrays = 0;
const GLubyte *client_addr = NULL;
GLboolean user_memory;
for (attr = 0; attr < vpv->num_inputs; attr++) {
const GLuint mesaAttr = vp->index_to_input[attr];
@@ -258,6 +259,7 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
if (firstStride < 0) {
firstStride = stride;
user_memory = !bufObj || !bufObj->Name;
}
else if (firstStride != stride) {
return GL_FALSE;
@@ -268,6 +270,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
/* Try to detect if the client-space arrays are
* "close" to each other.
*/
if (!user_memory) {
return GL_FALSE;
}
if (!client_addr) {
client_addr = arrays[mesaAttr]->Ptr;
}
@@ -277,6 +282,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
}
}
else if (!firstBufObj) {
if (user_memory) {
return GL_FALSE;
}
firstBufObj = bufObj;
}
else if (bufObj != firstBufObj) {