Merge branch 'mesa_7_5_branch'
This commit is contained in:
commit
e363ec1d08
|
@ -53,6 +53,7 @@ tbd
|
||||||
<li>Empty glBegin/glEnd() pair could cause divide by zero (bug 23489)
|
<li>Empty glBegin/glEnd() pair could cause divide by zero (bug 23489)
|
||||||
<li>Fixed Gallium glBitmap() Z position bug
|
<li>Fixed Gallium glBitmap() Z position bug
|
||||||
<li>Setting arrays of sampler uniforms did not work
|
<li>Setting arrays of sampler uniforms did not work
|
||||||
|
<li>Selection/Feedback mode didn't handle polygon culling correctly (bug 16866)
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -533,7 +533,7 @@ void
|
||||||
_mesa_print_alu_instruction(const struct prog_instruction *inst,
|
_mesa_print_alu_instruction(const struct prog_instruction *inst,
|
||||||
const char *opcode_string, GLuint numRegs)
|
const char *opcode_string, GLuint numRegs)
|
||||||
{
|
{
|
||||||
fprint_alu_instruction(stdout, inst, opcode_string,
|
fprint_alu_instruction(stderr, inst, opcode_string,
|
||||||
numRegs, PROG_PRINT_DEBUG, NULL);
|
numRegs, PROG_PRINT_DEBUG, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -757,7 +757,7 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst,
|
||||||
gl_prog_print_mode mode,
|
gl_prog_print_mode mode,
|
||||||
const struct gl_program *prog)
|
const struct gl_program *prog)
|
||||||
{
|
{
|
||||||
return _mesa_fprint_instruction_opt(stdout, inst, indent, mode, prog);
|
return _mesa_fprint_instruction_opt(stderr, inst, indent, mode, prog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -765,7 +765,7 @@ void
|
||||||
_mesa_print_instruction(const struct prog_instruction *inst)
|
_mesa_print_instruction(const struct prog_instruction *inst)
|
||||||
{
|
{
|
||||||
/* note: 4th param should be ignored for PROG_PRINT_DEBUG */
|
/* note: 4th param should be ignored for PROG_PRINT_DEBUG */
|
||||||
_mesa_fprint_instruction_opt(stdout, inst, 0, PROG_PRINT_DEBUG, NULL);
|
_mesa_fprint_instruction_opt(stderr, inst, 0, PROG_PRINT_DEBUG, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -811,7 +811,7 @@ _mesa_fprint_program_opt(FILE *f,
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print program to stdout, default options.
|
* Print program to stderr, default options.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
_mesa_print_program(const struct gl_program *prog)
|
_mesa_print_program(const struct gl_program *prog)
|
||||||
|
@ -884,12 +884,12 @@ _mesa_fprint_program_parameters(FILE *f,
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print all of a program's parameters/fields to stdout.
|
* Print all of a program's parameters/fields to stderr.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
_mesa_print_program_parameters(GLcontext *ctx, const struct gl_program *prog)
|
_mesa_print_program_parameters(GLcontext *ctx, const struct gl_program *prog)
|
||||||
{
|
{
|
||||||
_mesa_fprint_program_parameters(stdout, ctx, prog);
|
_mesa_fprint_program_parameters(stderr, ctx, prog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -929,12 +929,12 @@ _mesa_fprint_parameter_list(FILE *f,
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print a program parameter list to stdout.
|
* Print a program parameter list to stderr.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
_mesa_print_parameter_list(const struct gl_program_parameter_list *list)
|
_mesa_print_parameter_list(const struct gl_program_parameter_list *list)
|
||||||
{
|
{
|
||||||
_mesa_fprint_parameter_list(stdout, list);
|
_mesa_fprint_parameter_list(stderr, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ void
|
||||||
_swrast_feedback_triangle(GLcontext *ctx, const SWvertex *v0,
|
_swrast_feedback_triangle(GLcontext *ctx, const SWvertex *v0,
|
||||||
const SWvertex *v1, const SWvertex *v2)
|
const SWvertex *v1, const SWvertex *v2)
|
||||||
{
|
{
|
||||||
if (_swrast_culltriangle(ctx, v0, v1, v2)) {
|
if (!_swrast_culltriangle(ctx, v0, v1, v2)) {
|
||||||
_mesa_feedback_token(ctx, (GLfloat) (GLint) GL_POLYGON_TOKEN);
|
_mesa_feedback_token(ctx, (GLfloat) (GLint) GL_POLYGON_TOKEN);
|
||||||
_mesa_feedback_token(ctx, (GLfloat) 3); /* three vertices */
|
_mesa_feedback_token(ctx, (GLfloat) 3); /* three vertices */
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ void
|
||||||
_swrast_select_triangle(GLcontext *ctx, const SWvertex *v0,
|
_swrast_select_triangle(GLcontext *ctx, const SWvertex *v0,
|
||||||
const SWvertex *v1, const SWvertex *v2)
|
const SWvertex *v1, const SWvertex *v2)
|
||||||
{
|
{
|
||||||
if (_swrast_culltriangle(ctx, v0, v1, v2)) {
|
if (!_swrast_culltriangle(ctx, v0, v1, v2)) {
|
||||||
const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
|
const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
|
||||||
|
|
||||||
_mesa_update_hitflag( ctx, v0->attrib[FRAG_ATTRIB_WPOS][2] * zs );
|
_mesa_update_hitflag( ctx, v0->attrib[FRAG_ATTRIB_WPOS][2] * zs );
|
||||||
|
|
|
@ -44,8 +44,9 @@
|
||||||
#include "s_triangle.h"
|
#include "s_triangle.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Just used for feedback mode.
|
* Test if a triangle should be culled. Used for feedback and selection mode.
|
||||||
|
* \return GL_TRUE if the triangle is to be culled, GL_FALSE otherwise.
|
||||||
*/
|
*/
|
||||||
GLboolean
|
GLboolean
|
||||||
_swrast_culltriangle( GLcontext *ctx,
|
_swrast_culltriangle( GLcontext *ctx,
|
||||||
|
@ -53,16 +54,17 @@ _swrast_culltriangle( GLcontext *ctx,
|
||||||
const SWvertex *v1,
|
const SWvertex *v1,
|
||||||
const SWvertex *v2 )
|
const SWvertex *v2 )
|
||||||
{
|
{
|
||||||
|
SWcontext *swrast = SWRAST_CONTEXT(ctx);
|
||||||
GLfloat ex = v1->attrib[FRAG_ATTRIB_WPOS][0] - v0->attrib[FRAG_ATTRIB_WPOS][0];
|
GLfloat ex = v1->attrib[FRAG_ATTRIB_WPOS][0] - v0->attrib[FRAG_ATTRIB_WPOS][0];
|
||||||
GLfloat ey = v1->attrib[FRAG_ATTRIB_WPOS][1] - v0->attrib[FRAG_ATTRIB_WPOS][1];
|
GLfloat ey = v1->attrib[FRAG_ATTRIB_WPOS][1] - v0->attrib[FRAG_ATTRIB_WPOS][1];
|
||||||
GLfloat fx = v2->attrib[FRAG_ATTRIB_WPOS][0] - v0->attrib[FRAG_ATTRIB_WPOS][0];
|
GLfloat fx = v2->attrib[FRAG_ATTRIB_WPOS][0] - v0->attrib[FRAG_ATTRIB_WPOS][0];
|
||||||
GLfloat fy = v2->attrib[FRAG_ATTRIB_WPOS][1] - v0->attrib[FRAG_ATTRIB_WPOS][1];
|
GLfloat fy = v2->attrib[FRAG_ATTRIB_WPOS][1] - v0->attrib[FRAG_ATTRIB_WPOS][1];
|
||||||
GLfloat c = ex*fy-ey*fx;
|
GLfloat c = ex*fy-ey*fx;
|
||||||
|
|
||||||
if (c * SWRAST_CONTEXT(ctx)->_BackfaceCullSign > 0)
|
if (c * swrast->_BackfaceSign * swrast->_BackfaceCullSign < 0.0F)
|
||||||
return 0;
|
return GL_FALSE;
|
||||||
|
|
||||||
return 1;
|
return GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue