-#include "pipe/p_util.h"
#include "pipe/p_shader_tokens.h"
+#include "util/u_pack_color.h"
+
#include "draw/draw_context.h"
#include "draw/draw_vertex.h"
-#include "draw/draw_private.h"
+#include "draw/draw_pipe.h"
#include "nv40_context.h"
#define NV40_SHADER_NO_FUCKEDNESS
case EMIT_OMIT:
break;
case EMIT_1F:
- BEGIN_RING(curie, 0x1e40 + (hw * 4), 1);
+ BEGIN_RING(curie, NV40TCL_VTX_ATTR_1F(hw), 1);
OUT_RING (fui(v->data[idx][0]));
break;
case EMIT_2F:
OUT_RING (fui(v->data[idx][3]));
break;
case EMIT_4UB:
- BEGIN_RING(curie, 0x1940 + (hw * 4), 1);
+ BEGIN_RING(curie, NV40TCL_VTX_ATTR_4UB(hw), 1);
OUT_RING (pack_ub4(float_to_ubyte(v->data[idx][0]),
float_to_ubyte(v->data[idx][1]),
float_to_ubyte(v->data[idx][2]),
if (!nv40_state_validate_swtnl(nv40))
return FALSE;
- nv40->dirty &= ~(1ULL << NV40_STATE_VTXBUF);
+ nv40->state.dirty &= ~(1ULL << NV40_STATE_VTXBUF);
nv40_state_emit(nv40);
- for (i = 0; i < PIPE_ATTRIB_MAX; i++) {
- if (!nv40->vtxbuf[i].buffer)
- continue;
+ for (i = 0; i < nv40->vtxbuf_nr; i++) {
map = ws->buffer_map(ws, nv40->vtxbuf[i].buffer,
PIPE_BUFFER_USAGE_CPU_READ);
draw_set_mapped_vertex_buffer(nv40->draw, i, map);
}
if (nv40->constbuf[PIPE_SHADER_VERTEX]) {
+ const unsigned nr = nv40->constbuf_nr[PIPE_SHADER_VERTEX];
+
map = ws->buffer_map(ws, nv40->constbuf[PIPE_SHADER_VERTEX],
PIPE_BUFFER_USAGE_CPU_READ);
- draw_set_mapped_constant_buffer(nv40->draw, map);
+ draw_set_mapped_constant_buffer(nv40->draw, map, nr);
}
draw_arrays(nv40->draw, mode, start, count);
- for (i = 0; i < PIPE_ATTRIB_MAX; i++) {
- if (!nv40->vtxbuf[i].buffer)
- continue;
+ for (i = 0; i < nv40->vtxbuf_nr; i++)
ws->buffer_unmap(ws, nv40->vtxbuf[i].buffer);
- }
if (idxbuf)
ws->buffer_unmap(ws, idxbuf);