Mesa (master): r600g: avoid rebuilding the vertex shader if no change to input format
Jerome Glisse
glisse at kemper.freedesktop.org
Tue Sep 28 18:35:31 UTC 2010
Module: Mesa
Branch: master
Commit: 723a655ed3f3092f6fa74a903fb774a3cec93b79
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=723a655ed3f3092f6fa74a903fb774a3cec93b79
Author: Jerome Glisse <jglisse at redhat.com>
Date: Tue Sep 28 14:34:25 2010 -0400
r600g: avoid rebuilding the vertex shader if no change to input format
Signed-off-by: Jerome Glisse <jglisse at redhat.com>
---
src/gallium/drivers/r600/r600_pipe.h | 14 ++++++++------
src/gallium/drivers/r600/r600_state2.c | 4 ++++
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h
index 5abf910..e161dc5 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -69,12 +69,6 @@ struct r600_pipe_blend {
unsigned cb_target_mask;
};
-struct r600_pipe_shader {
- struct r600_shader shader;
- struct r600_pipe_state rstate;
- struct radeon_ws_bo *bo;
-};
-
struct r600_vertex_element
{
unsigned count;
@@ -82,6 +76,14 @@ struct r600_vertex_element
struct pipe_vertex_element elements[32];
};
+struct r600_pipe_shader {
+ struct r600_shader shader;
+ struct r600_pipe_state rstate;
+ struct radeon_ws_bo *bo;
+ struct r600_vertex_element vertex_elements;
+};
+
+
struct r600_pipe_context {
struct pipe_context context;
struct blitter_context *blitter;
diff --git a/src/gallium/drivers/r600/r600_state2.c b/src/gallium/drivers/r600/r600_state2.c
index 72d0453..796442f 100644
--- a/src/gallium/drivers/r600/r600_state2.c
+++ b/src/gallium/drivers/r600/r600_state2.c
@@ -257,6 +257,10 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader
if (shader->processor_type != TGSI_PROCESSOR_VERTEX)
return 0;
+ if (!memcmp(&rshader->vertex_elements, rctx->vertex_elements, sizeof(struct r600_vertex_element))) {
+ return 0;
+ }
+ rshader->vertex_elements = *rctx->vertex_elements;
for (i = 0; i < rctx->vertex_elements->count; i++) {
resource_format[nresources++] = rctx->vertex_elements->elements[i].src_format;
}
More information about the mesa-commit
mailing list