summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nv30
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/nv30')
-rw-r--r--src/gallium/drivers/nv30/nv30_context.c19
-rw-r--r--src/gallium/drivers/nv30/nv30_query.c2
-rw-r--r--src/gallium/drivers/nv30/nv30_state.c18
-rw-r--r--src/gallium/drivers/nv30/nv30_vbo.c4
4 files changed, 15 insertions, 28 deletions
diff --git a/src/gallium/drivers/nv30/nv30_context.c b/src/gallium/drivers/nv30/nv30_context.c
index cdd662a9f1..1e729d789b 100644
--- a/src/gallium/drivers/nv30/nv30_context.c
+++ b/src/gallium/drivers/nv30/nv30_context.c
@@ -7,10 +7,10 @@
#include "nv30_screen.h"
static void
-nv30_flush(struct pipe_context *pipe, unsigned flags)
+nv30_flush(struct pipe_context *pipe, unsigned flags,
+ struct pipe_fence_handle **fence)
{
struct nv30_context *nv30 = nv30_context(pipe);
- struct nouveau_winsys *nvws = nv30->nvws;
if (flags & PIPE_FLUSH_TEXTURE_CACHE) {
BEGIN_RING(rankine, 0x1fd8, 1);
@@ -19,18 +19,7 @@ nv30_flush(struct pipe_context *pipe, unsigned flags)
OUT_RING (1);
}
- if (flags & PIPE_FLUSH_WAIT) {
- nvws->notifier_reset(nv30->sync, 0);
- BEGIN_RING(rankine, 0x104, 1);
- OUT_RING (0);
- BEGIN_RING(rankine, 0x100, 1);
- OUT_RING (0);
- }
-
- FIRE_RING();
-
- if (flags & PIPE_FLUSH_WAIT)
- nvws->notifier_wait(nv30->sync, 0, 0, 2000);
+ FIRE_RING(fence);
}
static void
@@ -144,7 +133,7 @@ nv30_init_hwctx(struct nv30_context *nv30, int rankine_class)
BEGIN_RING(rankine, 0x1e94, 1);
OUT_RING (0x13);
- FIRE_RING ();
+ FIRE_RING (NULL);
return TRUE;
}
diff --git a/src/gallium/drivers/nv30/nv30_query.c b/src/gallium/drivers/nv30/nv30_query.c
index 71fdcfa24d..e19cb455dc 100644
--- a/src/gallium/drivers/nv30/nv30_query.c
+++ b/src/gallium/drivers/nv30/nv30_query.c
@@ -67,7 +67,7 @@ nv30_query_end(struct pipe_context *pipe, struct pipe_query *pq)
BEGIN_RING(rankine, NV34TCL_QUERY_GET, 1);
OUT_RING ((0x01 << NV34TCL_QUERY_GET_UNK24_SHIFT) |
((q->object->start * 32) << NV34TCL_QUERY_GET_OFFSET_SHIFT));
- FIRE_RING();
+ FIRE_RING(NULL);
}
static boolean
diff --git a/src/gallium/drivers/nv30/nv30_state.c b/src/gallium/drivers/nv30/nv30_state.c
index b0055892ae..983638adcc 100644
--- a/src/gallium/drivers/nv30/nv30_state.c
+++ b/src/gallium/drivers/nv30/nv30_state.c
@@ -710,24 +710,22 @@ nv30_set_viewport_state(struct pipe_context *pipe,
}
static void
-nv30_set_vertex_buffer(struct pipe_context *pipe, unsigned index,
- const struct pipe_vertex_buffer *vb)
+nv30_set_vertex_buffers(struct pipe_context *pipe, unsigned count,
+ const struct pipe_vertex_buffer *vb)
{
struct nv30_context *nv30 = nv30_context(pipe);
- nv30->vtxbuf[index] = *vb;
-
+ memcpy(nv30->vtxbuf, vb, sizeof(*vb) * count);
nv30->dirty |= NV30_NEW_ARRAYS;
}
static void
-nv30_set_vertex_element(struct pipe_context *pipe, unsigned index,
- const struct pipe_vertex_element *ve)
+nv30_set_vertex_elements(struct pipe_context *pipe, unsigned count,
+ const struct pipe_vertex_element *ve)
{
struct nv30_context *nv30 = nv30_context(pipe);
- nv30->vtxelt[index] = *ve;
-
+ memcpy(nv30->vtxelt, ve, sizeof(*ve) * count);
nv30->dirty |= NV30_NEW_ARRAYS;
}
@@ -770,7 +768,7 @@ nv30_init_state_functions(struct nv30_context *nv30)
nv30->pipe.set_scissor_state = nv30_set_scissor_state;
nv30->pipe.set_viewport_state = nv30_set_viewport_state;
- nv30->pipe.set_vertex_buffer = nv30_set_vertex_buffer;
- nv30->pipe.set_vertex_element = nv30_set_vertex_element;
+ nv30->pipe.set_vertex_buffers = nv30_set_vertex_buffers;
+ nv30->pipe.set_vertex_elements = nv30_set_vertex_elements;
}
diff --git a/src/gallium/drivers/nv30/nv30_vbo.c b/src/gallium/drivers/nv30/nv30_vbo.c
index a62462f7bc..b18a407ec5 100644
--- a/src/gallium/drivers/nv30/nv30_vbo.c
+++ b/src/gallium/drivers/nv30/nv30_vbo.c
@@ -229,7 +229,7 @@ nv30_draw_arrays(struct pipe_context *pipe, unsigned mode, unsigned start,
BEGIN_RING(rankine, NV34TCL_VERTEX_BEGIN_END, 1);
OUT_RING (0);
- pipe->flush(pipe, 0);
+ pipe->flush(pipe, 0, NULL);
return TRUE;
}
@@ -418,7 +418,7 @@ nv30_draw_elements(struct pipe_context *pipe,
mode, start, count);
}
- pipe->flush(pipe, 0);
+ pipe->flush(pipe, 0, NULL);
return TRUE;
}