EGL contexts and surfaces are resources of displays. They should be
managed by displays. This commit adds a bunch of functions to
egldisplay.c to help establish the links between contexts/surfaces and
displays. How links are established is considered opaque outside
display. Functions like _eglGetSurfaceHandle or _eglLookupSurface are
therefore moved to egldisplay.c, with some small modifications.
The idea is also extended to display. That is, displays need to link to
themselves to be looked up.
This commit only adds the functions. A commit to use them should
follow.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
This commit introduces a "current" system to manage per-thread info. It
uses TLS, if GLX_USE_TLS is defined, or pthread, if PTHREADS is defined.
If none of them are defined, it uses a dummy implementation that is just
like before.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Only INLINE (from mesa/main/compiler.h) is defined now. It may be used
to deal with symbol visibility and int/pointer conversion in the future.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Signed-off-by: Brian Paul <brianp@vmware.com>
The _TriangleCaps bit is deprecated, not updated when we require, and
is set based on state that hasn't been updated at that point in
_mesa_update_state_locked().
Fixes incorrect clear color in glsl/twoside.c with meta_clear_tris.
Use sse_movmskps to extract the correct bits of the comparison result
for use in updating the killmask. Simplify some logic around
identifying the set of necessary comparisons to make.
Explictly pass src and dst arguments (previously dst argument was also
being used as a src). Separate argument handling from the rest of
the function call emit.
RasterPos[2] is already sent through the window transform, which includes
DepthRange handling. So make DepthRange for the metaops a noop.
Fixes a failure in oglconform depthrange.c
Since it has a dispatch table entry (for BlendEquationSeparateEXT,)
can't omit it from this list. It'll still get disabled if the cap
(PIPE_CAP_BLEND_EQUATION_SEPARATE) isn't set.
Somebody that doesn't suck at GL (read: not me) should probably add
this into progs/samples/blendeq or similar so we can test it.
Really, we should be checking that the MesaTexFormat for the read buffer
and the texture match, but the previous code wasn't even doing that, so
matching the cpp should be an improvement (and potentially fix some hangs!).
The previous code also rejected GL_RGB even though blitting the alpha
channel to the ignored channel of an x8r8g8b8 texture should be fine, which
tripped up compiz's blur plugin.
Components of input attributes that are used by fragment program aren't part of vertex program key, and that may lead to situations when vertex program writes only TEX1.xy and fragment program reads TEX1.xyz, resulting in rendering errors.
Reported-by: Nicolai Hähnle <nhaehnle@gmail.com>
We only care about the actual fogcoord itself now, reducing the rewriting
done for the vertex program.
The rewriting of source operand swizzles in the fragment program takes
care that fogcoord.yzw = 001.
This should fix fogcoord rewriting entirely, which had been horribly
broken in the face of dot-product instructions, and just broken (though
not horribly so) in the face of almost every other instruction (the W
component would be incorrect for most arithmetic instructions).
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>