*
**************************************************************************/
-#include "pipe/p_util.h"
+#include "util/u_memory.h"
#include "pipe/p_context.h"
#include "draw/draw_context.h"
#include "draw/draw_private.h"
unsigned mask = 0x0;
unsigned i;
+#if 0
+ debug_printf("compute clipmask %f %f %f %f\n",
+ clip[0], clip[1], clip[2], clip[3]);
+ assert(clip[3] != 0.0);
+#endif
+
/* Do the hardwired planes first:
*/
if (-clip[0] + clip[3] < 0) mask |= (1<<0);
struct vertex_header *out = vertices;
const float *scale = pvs->draw->viewport.scale;
const float *trans = pvs->draw->viewport.translate;
- unsigned j;
+ const unsigned pos = pvs->draw->vs.position_output;
unsigned clipped = 0;
+ unsigned j;
+
+ if (0) debug_printf("%s\n", __FUNCTION__);
for (j = 0; j < count; j++) {
- out->clip[0] = out->data[0][0];
- out->clip[1] = out->data[0][1];
- out->clip[2] = out->data[0][2];
- out->clip[3] = out->data[0][3];
+ float *position = out->data[pos];
+
+ out->clip[0] = position[0];
+ out->clip[1] = position[1];
+ out->clip[2] = position[2];
+ out->clip[3] = position[3];
out->vertex_id = 0xffff;
- out->edgeflag = 1;
out->clipmask = compute_clipmask_gl(out->clip,
pvs->draw->plane,
pvs->draw->nr_planes);
if (out->clipmask == 0)
{
/* divide by w */
- float w = 1.0f / out->data[0][3];
+ float w = 1.0f / position[3];
/* Viewport mapping */
- out->data[0][0] = out->data[0][0] * w * scale[0] + trans[0];
- out->data[0][1] = out->data[0][1] * w * scale[1] + trans[1];
- out->data[0][2] = out->data[0][2] * w * scale[2] + trans[2];
- out->data[0][3] = w;
+ position[0] = position[0] * w * scale[0] + trans[0];
+ position[1] = position[1] * w * scale[1] + trans[1];
+ position[2] = position[2] * w * scale[2] + trans[2];
+ position[3] = w;
+#if 0
+ debug_printf("post viewport: %f %f %f %f\n",
+ position[0],
+ position[1],
+ position[2],
+ position[3]);
+#endif
}
out = (struct vertex_header *)( (char *)out + stride );
struct vertex_header *out = vertices;
const float *scale = pvs->draw->viewport.scale;
const float *trans = pvs->draw->viewport.translate;
+ const unsigned pos = pvs->draw->vs.position_output;
unsigned j;
- debug_printf("%s\n", __FUNCTION__);
+ if (0) debug_printf("%s\n", __FUNCTION__);
for (j = 0; j < count; j++) {
+ float *position = out->data[pos];
+
/* Viewport mapping only, no cliptest/rhw divide
*/
- out->data[0][0] = out->data[0][0] * scale[0] + trans[0];
- out->data[0][1] = out->data[0][1] * scale[1] + trans[1];
- out->data[0][2] = out->data[0][2] * scale[2] + trans[2];
+ position[0] = position[0] * scale[0] + trans[0];
+ position[1] = position[1] * scale[1] + trans[1];
+ position[2] = position[2] * scale[2] + trans[2];
out = (struct vertex_header *)((char *)out + stride);
}
unsigned count,
unsigned stride )
{
- debug_printf("%s\n", __FUNCTION__);
+ if (0) debug_printf("%s\n", __FUNCTION__);
return FALSE;
}
void draw_pt_post_vs_prepare( struct pt_post_vs *pvs,
boolean bypass_clipping,
- boolean identity_viewport,
+ boolean bypass_viewport,
boolean opengl )
{
if (bypass_clipping) {
- if (identity_viewport)
+ if (bypass_viewport)
pvs->run = post_vs_none;
else
pvs->run = post_vs_viewport;
}
else {
- //if (opengl)
+ /* if (opengl) */
pvs->run = post_vs_cliptest_viewport_gl;
}
}