[PATCH] softpipe: unbreak sp_setup_pos_vector on non-x86 systems
This commit is contained in:
@@ -44,6 +44,41 @@ struct sp_exec_fragment_shader {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Compute quad X,Y,Z,W for the four fragments in a quad.
|
||||
*
|
||||
* This should really be part of the compiled shader.
|
||||
*/
|
||||
void
|
||||
sp_setup_pos_vector(const struct tgsi_interp_coef *coef,
|
||||
float x, float y,
|
||||
struct tgsi_exec_vector *quadpos)
|
||||
{
|
||||
uint chan;
|
||||
/* do X */
|
||||
quadpos->xyzw[0].f[0] = x;
|
||||
quadpos->xyzw[0].f[1] = x + 1;
|
||||
quadpos->xyzw[0].f[2] = x;
|
||||
quadpos->xyzw[0].f[3] = x + 1;
|
||||
|
||||
/* do Y */
|
||||
quadpos->xyzw[1].f[0] = y;
|
||||
quadpos->xyzw[1].f[1] = y;
|
||||
quadpos->xyzw[1].f[2] = y + 1;
|
||||
quadpos->xyzw[1].f[3] = y + 1;
|
||||
|
||||
/* do Z and W for all fragments in the quad */
|
||||
for (chan = 2; chan < 4; chan++) {
|
||||
const float dadx = coef->dadx[chan];
|
||||
const float dady = coef->dady[chan];
|
||||
const float a0 = coef->a0[chan] + dadx * x + dady * y;
|
||||
quadpos->xyzw[chan].f[0] = a0;
|
||||
quadpos->xyzw[chan].f[1] = a0 + dadx;
|
||||
quadpos->xyzw[chan].f[2] = a0 + dady;
|
||||
quadpos->xyzw[chan].f[3] = a0 + dadx + dady;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
exec_prepare( struct sp_fragment_shader *base,
|
||||
|
||||
@@ -63,41 +63,6 @@ struct sp_sse_fragment_shader {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Compute quad X,Y,Z,W for the four fragments in a quad.
|
||||
*
|
||||
* This should really be part of the compiled shader.
|
||||
*/
|
||||
void
|
||||
sp_setup_pos_vector(const struct tgsi_interp_coef *coef,
|
||||
float x, float y,
|
||||
struct tgsi_exec_vector *quadpos)
|
||||
{
|
||||
uint chan;
|
||||
/* do X */
|
||||
quadpos->xyzw[0].f[0] = x;
|
||||
quadpos->xyzw[0].f[1] = x + 1;
|
||||
quadpos->xyzw[0].f[2] = x;
|
||||
quadpos->xyzw[0].f[3] = x + 1;
|
||||
|
||||
/* do Y */
|
||||
quadpos->xyzw[1].f[0] = y;
|
||||
quadpos->xyzw[1].f[1] = y;
|
||||
quadpos->xyzw[1].f[2] = y + 1;
|
||||
quadpos->xyzw[1].f[3] = y + 1;
|
||||
|
||||
/* do Z and W for all fragments in the quad */
|
||||
for (chan = 2; chan < 4; chan++) {
|
||||
const float dadx = coef->dadx[chan];
|
||||
const float dady = coef->dady[chan];
|
||||
const float a0 = coef->a0[chan] + dadx * x + dady * y;
|
||||
quadpos->xyzw[chan].f[0] = a0;
|
||||
quadpos->xyzw[chan].f[1] = a0 + dadx;
|
||||
quadpos->xyzw[chan].f[2] = a0 + dady;
|
||||
quadpos->xyzw[chan].f[3] = a0 + dadx + dady;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
fs_sse_prepare( struct sp_fragment_shader *base,
|
||||
|
||||
Reference in New Issue
Block a user