[Mesa-dev] [PATCH 07/10] st/mesa: write vertices directly into the buffer for glClear fallback
Marek Olšák
maraeo at gmail.com
Fri Apr 13 14:33:06 PDT 2012
---
src/mesa/state_tracker/st_cb_clear.c | 40 +++++++++++++++++----------------
src/mesa/state_tracker/st_context.h | 1 -
2 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c
index f0c30b6..3cd8756 100644
--- a/src/mesa/state_tracker/st_cb_clear.c
+++ b/src/mesa/state_tracker/st_cb_clear.c
@@ -139,35 +139,37 @@ draw_quad(struct st_context *st,
struct pipe_context *pipe = st->pipe;
struct pipe_resource *vbuf = NULL;
GLuint i, offset;
+ float (*vertices)[2][4]; /**< vertex pos + color */
+
+ u_upload_alloc(st->uploader, 0, 4 * sizeof(vertices[0]), &offset, &vbuf,
+ (void**)&vertices);
+ if (!vbuf) {
+ return;
+ }
/* positions */
- st->clear.vertices[0][0][0] = x0;
- st->clear.vertices[0][0][1] = y0;
+ vertices[0][0][0] = x0;
+ vertices[0][0][1] = y0;
- st->clear.vertices[1][0][0] = x1;
- st->clear.vertices[1][0][1] = y0;
+ vertices[1][0][0] = x1;
+ vertices[1][0][1] = y0;
- st->clear.vertices[2][0][0] = x1;
- st->clear.vertices[2][0][1] = y1;
+ vertices[2][0][0] = x1;
+ vertices[2][0][1] = y1;
- st->clear.vertices[3][0][0] = x0;
- st->clear.vertices[3][0][1] = y1;
+ vertices[3][0][0] = x0;
+ vertices[3][0][1] = y1;
/* same for all verts: */
for (i = 0; i < 4; i++) {
- st->clear.vertices[i][0][2] = z;
- st->clear.vertices[i][0][3] = 1.0;
- st->clear.vertices[i][1][0] = color->f[0];
- st->clear.vertices[i][1][1] = color->f[1];
- st->clear.vertices[i][1][2] = color->f[2];
- st->clear.vertices[i][1][3] = color->f[3];
+ vertices[i][0][2] = z;
+ vertices[i][0][3] = 1.0;
+ vertices[i][1][0] = color->f[0];
+ vertices[i][1][1] = color->f[1];
+ vertices[i][1][2] = color->f[2];
+ vertices[i][1][3] = color->f[3];
}
- u_upload_data(st->uploader, 0, sizeof(st->clear.vertices),
- st->clear.vertices, &offset, &vbuf);
- if (!vbuf) {
- return;
- }
u_upload_unmap(st->uploader);
/* draw */
diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
index f1342a6..dbcc2b1 100644
--- a/src/mesa/state_tracker/st_context.h
+++ b/src/mesa/state_tracker/st_context.h
@@ -170,7 +170,6 @@ struct st_context
struct pipe_viewport_state viewport;
void *vs;
void *fs;
- float vertices[4][2][4]; /**< vertex pos + color */
boolean enable_ds_separate;
} clear;
--
1.7.5.4
More information about the mesa-dev
mailing list