Age | Commit message (Collapse) | Author |
|
|
|
In the i965, the FBO coordinate system is inverted from the standard
OpenGL/Mesa coordinate system; that means that the viewport and the
polygon face orientation have to be inverted if rendering to a FBO.
The viewport was already being handled correctly; but polygon face
was not. This caused a conform failure when rendering to texture with
two-sided lighting enabled.
This fixes the problem in the i965 driver, and adds to the comment about
the gl_framebuffer "Name" field so that this isn't a surprise to other
driver writers.
|
|
|
|
|
|
It was only used in one place in swrast.
|
|
|
|
|
|
A bit of refactoring with an eye toward ES2 and GL 3.1
|
|
|
|
This was never fully fleshed out and hasn't been used.
|
|
|
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
|
|
Useful for debugging to override an application's shader.
|
|
Otherwise two threads might think each made the refcount go zero.
|
|
Windows threads block if one over-unlocks them.
|
|
|
|
|
|
Namelly, FlushMappedBufferRange takes a subrange relative to the original
range.
|
|
When a hw driver fell back to swrast, swrast wasn't always getting informed
of program changes. When fixed function is translated into shaders, flags
like _NEW_LIGHT, _NEW_TEXTURE, etc. should really signal _NEW_PROGRAM.
In this case, swrast wasn't seeing _NEW_PROGRAM when new fragment shaders
were generated.
|
|
Conflicts:
scons/gallium.py
src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
src/gallium/include/pipe/p_defines.h
src/mesa/vbo/vbo_exec_api.c
src/mesa/vbo/vbo_exec_draw.c
|
|
Will be needed in coming GL extensions (GL_map_buffer_range, GL 3.0).
Will be used by the vbo module to avoid reallocating vbo's at each
draw primitive call.
|
|
Provides notification to the VBO modules prior to the first immediate call.
Pairs with FlushVertices()
|
|
|
|
Another conditional can be avoided.
|
|
Need to clear the _ReallyEnabled field before possibly continuing the loop.
Also, set _Current pointer to NULL if the unit is no longer enabled.
Fixes piglit lodbias regression
|
|
Fixes piglit copytexsubimage regression.
|
|
For regular GL, we must have vertex positions in order to draw. But ES2
doesn't have that requirement (positions can be computed from any array
of data).
See bug 19911.
|
|
With FBOs one could enable stencil before a stencil buffer is later bound.
|
|
Only true if stenciling is enabled, and there's a stencil buffer.
|
|
This field should not include vertex textures. It indicates the coord
inputs for fragment / fixed-function processing.
|
|
|
|
We can avoid a few iterations this way.
|
|
|
|
Remove all references to aux buffers 1..3. Keep AUX0 around for now just
in case, but it'll probably go too someday. I don't know of any OpenGL
drivers since the IRIX days that support aux color buffers.
|
|
s/FRAG_RESULT_DEPR/FRAG_RESULT_DEPTH/
s/FRAG_RESULT_COLR/FRAG_RESULT/COLOR/
Remove FRAG_RESULT_COLH (NV half-precision) output since we never used it.
Next, we might merge the COLOR and DATA outputs (COLOR0, COLOR1, etc).
|
|
This makes debugging with gdb a bit easier.
Ex:
(gdb) p ctx->DrawBuffer.Attachment[BUFFER_STENCIL]
Note however that gdb only seems to recognize enum types that are actually
used to declare a variable somewhere. For example, gl_buffer_index isn't
used to declare any vars so it's invisible to gdb. Work around this by
adding a dummy function in context.c that declares some vars with these
new types.
|
|
|
|
|
|
We can't use the "fstoi" instruction like this.
Unlike other floating point instructions, "fstoi" always rounds
towards zero no matter what rounding mode the FPU has been set to.
This was validated using the following test program:
--------------------
static inline int iround(float f)
{
int r;
__asm__ ("fstoi %1, %0" : "=f" (r) : "f" (f));
return r;
}
#define IROUND(x) iround(x)
#define IROUND_REF(f) ((int) (((f) >= 0.0F) ? ((f) + 0.5F) : ((f) - 0.5F)))
int main(void)
{
float f = -2.0;
while (f < 3.0f) {
int sparc_val = IROUND(f);
int ref_val = IROUND_REF(f);
if (sparc_val != ref_val)
printf("DIFFERENT[%f]: REF==%d SPARC==%d\n",
f, ref_val, sparc_val);
f += 0.1f;
}
return 0;
}
--------------------
which prints out things like:
--------------------
DIFFERENT[-1.900000]: REF==-2 SPARC==-1
DIFFERENT[-1.800000]: REF==-2 SPARC==-1
DIFFERENT[-1.700000]: REF==-2 SPARC==-1
DIFFERENT[-1.600000]: REF==-2 SPARC==-1
DIFFERENT[-1.000000]: REF==-1 SPARC==0
DIFFERENT[-0.900000]: REF==-1 SPARC==0
DIFFERENT[-0.800000]: REF==-1 SPARC==0
DIFFERENT[-0.700000]: REF==-1 SPARC==0
DIFFERENT[-0.600000]: REF==-1 SPARC==0
DIFFERENT[0.500000]: REF==1 SPARC==0
DIFFERENT[0.600000]: REF==1 SPARC==0
...
--------------------
So we have to remove Sparc's IROUND() definition, it's wrong.
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Fixed point is only used in swrast and sw-based drivers.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also, ctx->Driver.UnmapBuffer can never be null, so remove conditional.
|
|
|
|
|