GLX: Warn only once about applications calling GLX 1.3 functions
The warnings introduced in 1f309c40b8
would pour out generously from some applications. This patch adds a
"warn once" wrapper macro, heavily inspired by
src/mesa/drivers/dri/r600/radeon_debug.h
Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
mesa: refine the error checking vbo_exec_DrawRangeElements()
If the 'end' index is out of bounds issue a warning as before. But instead
of just no-op'ing the draw call, examine the actual array indices to see
if they're OK. If the max array index is out of bounds, issue another
warning and no-op the draw call. Otherwise, draw normally. This is a
debug build-only feature since it could impact performance.
This "fixes" the missing torus in the OGL Distilled / Picking demo.
intel: Mark the FBO as incomplete if there's no intel_renderbuffer for it.
This happens to rendering with textures with a border, which had resulted
in a segfault on dereferencing the irb.
(cherry-picked from commit 8bba183b9e)
r300: Fix handling of NV_vertex_program parameters
The handling is a bit inefficient, unfortunately, but I don't want to make
any intrusive changes for Mesa 7.6.
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
Since commit 2921a2555d ('intel: Deassociated
drawables from private context struct in intelUnbindContext'),
intel->driDrawable may be NULL in intel_flush().
radeon: Improve WARN_ONCE macro to appear as single statement.
Do-while makes macro safe to be used with if and for constructions.
Also remove __LINE__ macro from variable name because scope is local to macro anyway.
mesa/st: Create front renderbuffer on the fly when supplied with a surface
Normally, the mesa/st would create a fake front buffer out of a
client-allocated surface.
In the DRI setting, however, st/dri provides a front buffer surface which is
created and maintained by the X server. Prefer to use this surface instead,
so that front buffer rendering and reading works correctly.
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
r300/compiler: Fix R300 fragment program regression introduced by 0723cd1...
We obviously need to move the code addr register backwards because their may
be overlap.
This bug affected in particular the Compiz water plugin.
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
glx: Use initstate_r / random_r instead of corrupting global random number state
Previously srandom and random were used. This cause the global random
number generator state to be modified. This caused problems for
applications that called srandom before calling into GLX. By using
local state the global state is left unmodified.
This should fix bug #23774.
The following example caused an incorrect GL_OUT_OF_MEMORY error to be
raised in glTexSubImage2D:
glTexImage2D(level=0, width=32, height=32, pixels=NULL);
glTexImage2D(level=0, width=64, height=64, pixels=NULL);
glTexSubImage2D(level=0, pixels!=NULL);
The second glTexImage2D() call needs to cause the first image to be
deallocated then reallocated at the new size. This was not happening
because we were testing for pixels==NULL too early.
intel: Deassociated drawables from private context struct in intelUnbindContext
The generic DRI infrastructure makes sure that __DRIcontextRec::driDrawablePriv
and __DRIcontextRec::driReadablePriv are set to NULL after unbinding a
context. However, the intel_context structure keeps cached copies of
these pointers. If these cached pointers are not NULLed and the
drawable is actually destroyed after unbinding the context (typically
by way of glXDestroyWindow), freed memory will be dereferenced in
intelDestroyContext.
This should fix bug #23418.
Commit d33c315d9e removed a few too many
typedefs. We need the typedefs in glext.h which are protected by #ifdef
GL_VERSION_1_2 but we can exclude the ones protected by
GL_VERSION_1_2_DEPRECATED.