@@ -87,7 +87,7 @@ struct vertex_info | |||
* \return slot in which the attribute was added | |||
*/ | |||
static INLINE uint | |||
draw_emit_vertex_attr(struct vertex_info *vinfo, uint vfAttr, | |||
draw_emit_vertex_attr(struct vertex_info *vinfo, | |||
attrib_format format, interp_mode interp) | |||
{ | |||
const uint n = vinfo->num_attribs; |
@@ -55,7 +55,7 @@ static void calculate_vertex_layout( struct i915_context *i915 ) | |||
memset(vinfo, 0, sizeof(*vinfo)); | |||
/* pos */ | |||
draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_POS, FORMAT_3F, INTERP_LINEAR); | |||
draw_emit_vertex_attr(vinfo, FORMAT_3F, INTERP_LINEAR); | |||
/* Note: we'll set the S4_VFMT_XYZ[W] bits below */ | |||
for (i = 0; i < fs->num_inputs; i++) { | |||
@@ -63,14 +63,12 @@ static void calculate_vertex_layout( struct i915_context *i915 ) | |||
case TGSI_SEMANTIC_POSITION: | |||
break; | |||
case TGSI_SEMANTIC_COLOR0: | |||
front0 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_COLOR0, | |||
FORMAT_4UB, colorInterp); | |||
front0 = draw_emit_vertex_attr(vinfo, FORMAT_4UB, colorInterp); | |||
vinfo->hwfmt[0] |= S4_VFMT_COLOR; | |||
break; | |||
case TGSI_SEMANTIC_COLOR1: | |||
assert(0); /* untested */ | |||
front1 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_COLOR1, | |||
FORMAT_4UB, colorInterp); | |||
front1 = draw_emit_vertex_attr(vinfo, FORMAT_4UB, colorInterp); | |||
vinfo->hwfmt[0] |= S4_VFMT_SPEC_FOG; | |||
break; | |||
case TGSI_SEMANTIC_TEX0: | |||
@@ -85,8 +83,7 @@ static void calculate_vertex_layout( struct i915_context *i915 ) | |||
const uint unit = fs->input_semantics[i] - TGSI_SEMANTIC_TEX0; | |||
uint hwtc; | |||
texCoords[unit] = TRUE; | |||
draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_TEX0 + i, | |||
FORMAT_4F, INTERP_PERSPECTIVE); | |||
draw_emit_vertex_attr(vinfo, FORMAT_4F, INTERP_PERSPECTIVE); | |||
hwtc = TEXCOORDFMT_4D; | |||
needW = TRUE; | |||
vinfo->hwfmt[1] |= hwtc << (unit * 4); | |||
@@ -109,16 +106,14 @@ static void calculate_vertex_layout( struct i915_context *i915 ) | |||
#if 0 | |||
/* color0 */ | |||
if (inputsRead & (1 << TGSI_ATTRIB_COLOR0)) { | |||
front0 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_COLOR0, | |||
FORMAT_4UB, colorInterp); | |||
front0 = draw_emit_vertex_attr(vinfo, FORMAT_4UB, colorInterp); | |||
vinfo->hwfmt[0] |= S4_VFMT_COLOR; | |||
} | |||
/* color 1 */ | |||
if (inputsRead & (1 << TGSI_ATTRIB_COLOR1)) { | |||
assert(0); /* untested */ | |||
front1 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_COLOR1, | |||
FORMAT_4UB, colorInterp); | |||
front1 = draw_emit_vertex_attr(vinfo, FORMAT_4UB, colorInterp); | |||
vinfo->hwfmt[0] |= S4_VFMT_SPEC_FOG; | |||
} | |||
@@ -130,7 +125,7 @@ static void calculate_vertex_layout( struct i915_context *i915 ) | |||
for (i = TGSI_ATTRIB_TEX0; i <= TGSI_ATTRIB_TEX7; i++) { | |||
uint hwtc; | |||
if (inputsRead & (1 << i)) { | |||
draw_emit_vertex_attr(vinfo, i, FORMAT_4F, INTERP_PERSPECTIVE); | |||
draw_emit_vertex_attr(vinfo, FORMAT_4F, INTERP_PERSPECTIVE); | |||
hwtc = TEXCOORDFMT_4D; | |||
needW = TRUE; | |||
} | |||
@@ -158,12 +153,10 @@ static void calculate_vertex_layout( struct i915_context *i915 ) | |||
*/ | |||
if (i915->rasterizer->light_twoside) { | |||
if (front0) { | |||
back0 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_BFC0, | |||
FORMAT_OMIT, colorInterp); | |||
back0 = draw_emit_vertex_attr(vinfo, FORMAT_OMIT, colorInterp); | |||
} | |||
if (back0) { | |||
back1 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_BFC1, | |||
FORMAT_OMIT, colorInterp); | |||
back1 = draw_emit_vertex_attr(vinfo, FORMAT_OMIT, colorInterp); | |||
} | |||
} | |||
@@ -79,7 +79,7 @@ struct setup_stage { | |||
float oneoverarea; | |||
struct tgsi_interp_coef coef[TGSI_ATTRIB_MAX]; | |||
struct tgsi_interp_coef coef[PIPE_MAX_SHADER_INPUTS]; | |||
struct quad_header quad; | |||
struct { | |||
@@ -366,7 +366,7 @@ static void const_coeff( struct setup_stage *setup, | |||
unsigned slot, | |||
unsigned i ) | |||
{ | |||
assert(slot < TGSI_ATTRIB_MAX); | |||
assert(slot < PIPE_MAX_SHADER_INPUTS); | |||
assert(i <= 3); | |||
setup->coef[slot].dadx[i] = 0; | |||
@@ -391,7 +391,7 @@ static void tri_linear_coeff( struct setup_stage *setup, | |||
float a = setup->ebot.dy * majda - botda * setup->emaj.dy; | |||
float b = setup->emaj.dx * botda - majda * setup->ebot.dx; | |||
assert(slot < TGSI_ATTRIB_MAX); | |||
assert(slot < PIPE_MAX_SHADER_INPUTS); | |||
assert(i <= 3); | |||
setup->coef[slot].dadx[i] = a * setup->oneoverarea; | |||
@@ -454,7 +454,7 @@ static void tri_persp_coeff( struct setup_stage *setup, | |||
); | |||
*/ | |||
assert(slot < TGSI_ATTRIB_MAX); | |||
assert(slot < PIPE_MAX_SHADER_INPUTS); | |||
assert(i <= 3); | |||
setup->coef[slot].dadx[i] = a * setup->oneoverarea; | |||
@@ -910,8 +910,8 @@ setup_point(struct draw_stage *stage, struct prim_header *prim) | |||
= sizeAttr ? (0.5f * v0->data[sizeAttr][0]) | |||
: (0.5f * setup->softpipe->rasterizer->point_size); | |||
const boolean round = setup->softpipe->rasterizer->point_smooth; | |||
const float x = v0->data[TGSI_ATTRIB_POS][0]; | |||
const float y = v0->data[TGSI_ATTRIB_POS][1]; | |||
const float x = v0->data[0][0]; /* Note: data[0] is always position */ | |||
const float y = v0->data[0][1]; | |||
unsigned slot, j; | |||
assert(sizeAttr >= 0); |
@@ -63,7 +63,7 @@ static void calculate_vertex_layout( struct softpipe_context *softpipe ) | |||
/* always emit vertex pos */ | |||
/* TODO - Figure out if we need to do perspective divide, etc. */ | |||
draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_POS, FORMAT_4F, INTERP_LINEAR); | |||
draw_emit_vertex_attr(vinfo, FORMAT_4F, INTERP_LINEAR); | |||
for (i = 0; i < fs->num_inputs; i++) { | |||
switch (fs->input_semantics[i]) { | |||
@@ -75,15 +75,15 @@ static void calculate_vertex_layout( struct softpipe_context *softpipe ) | |||
softpipe->need_w = TRUE; | |||
break; | |||
case TGSI_SEMANTIC_COLOR0: | |||
front0 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_COLOR0, | |||
front0 = draw_emit_vertex_attr(vinfo, | |||
FORMAT_4F, colorInterp); | |||
break; | |||
case TGSI_SEMANTIC_COLOR1: | |||
front1 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_COLOR1, | |||
front1 = draw_emit_vertex_attr(vinfo, | |||
FORMAT_4F, colorInterp); | |||
break; | |||
case TGSI_SEMANTIC_FOG: | |||
draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_FOG, | |||
draw_emit_vertex_attr(vinfo, | |||
FORMAT_1F, INTERP_PERSPECTIVE); | |||
break; | |||
#if 0 | |||
@@ -91,19 +91,19 @@ static void calculate_vertex_layout( struct softpipe_context *softpipe ) | |||
/* XXX only emit if drawing points or front/back polygon mode | |||
* is point mode | |||
*/ | |||
draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_POINTSIZE, | |||
draw_emit_vertex_attr(vinfo, | |||
FORMAT_4F, INTERP_CONSTANT); | |||
break; | |||
#endif | |||
softpipe->psize_slot = i; | |||
/*case TGSI_SEMANTIC_TEXCOORD:*/ | |||
case TGSI_SEMANTIC_TEX0: | |||
draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_TEX0, | |||
draw_emit_vertex_attr(vinfo, | |||
FORMAT_4F, INTERP_PERSPECTIVE); | |||
softpipe->need_w = TRUE; | |||
break; | |||
case TGSI_SEMANTIC_OTHER: | |||
draw_emit_vertex_attr(vinfo, i, FORMAT_4F, INTERP_PERSPECTIVE); | |||
draw_emit_vertex_attr(vinfo, FORMAT_4F, INTERP_PERSPECTIVE); | |||
softpipe->need_w = TRUE; | |||
break; | |||
@@ -120,12 +120,10 @@ static void calculate_vertex_layout( struct softpipe_context *softpipe ) | |||
*/ | |||
if (softpipe->rasterizer->light_twoside) { | |||
if (front0) { | |||
back0 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_BFC0, | |||
FORMAT_OMIT, colorInterp); | |||
back0 = draw_emit_vertex_attr(vinfo, FORMAT_OMIT, colorInterp); | |||
} | |||
if (back0) { | |||
back1 = draw_emit_vertex_attr(vinfo, TGSI_ATTRIB_BFC1, | |||
FORMAT_OMIT, colorInterp); | |||
back1 = draw_emit_vertex_attr(vinfo, FORMAT_OMIT, colorInterp); | |||
} | |||
} | |||
@@ -5,6 +5,7 @@ | |||
/** | |||
* The specific values here are not important (could remove them). | |||
*/ | |||
#if 0 | |||
enum { | |||
TGSI_ATTRIB_POS = 0, | |||
TGSI_ATTRIB_WEIGHT = 1, | |||
@@ -41,6 +42,7 @@ enum { | |||
#define TGSI_MAX_TEXTURE 8 | |||
#define TGSI_MAX_VARYING 8 | |||
#endif | |||
@@ -77,6 +77,7 @@ pipe_vertex_format(GLenum format, GLuint size) | |||
} | |||
#if 0 | |||
/** | |||
* Convert a mesa vertex attribute to a TGSI attribute | |||
*/ | |||
@@ -137,7 +138,7 @@ tgsi_attrib_to_mesa_attrib(GLuint attr) | |||
return 0; | |||
} | |||
} | |||
#endif | |||
/** |