Mesa (lp-binning): llvmpipe: Put jit_context in store.
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Fri Oct 9 13:33:18 UTC 2009
Module: Mesa
Branch: lp-binning
Commit: 608c22272327d3b554c7665b60f6322716e5fd9d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=608c22272327d3b554c7665b60f6322716e5fd9d
Author: José Fonseca <jfonseca at vmware.com>
Date: Fri Oct 9 14:30:25 2009 +0100
llvmpipe: Put jit_context in store.
---
src/gallium/drivers/llvmpipe/lp_setup.c | 26 +++++++++++++++++++++++
src/gallium/drivers/llvmpipe/lp_setup_context.h | 2 +
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index ba9d801..8a9c169 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -480,12 +480,36 @@ lp_setup_is_texture_referenced( struct setup_context *setup,
}
+static INLINE void
+lp_setup_update_shader_state( struct setup_context *setup )
+{
+
+ if(setup->fs.jit_context_dirty) {
+ if(!setup->fs.last_jc ||
+ memcmp(setup->fs.last_jc, &setup->fs.jit_context, sizeof *setup->fs.last_jc)) {
+ struct lp_jit_context *jc;
+
+ jc = get_data(&setup->data, sizeof *jc);
+ if(jc) {
+ memcpy(jc, &setup->fs.jit_context, sizeof *jc);
+ setup->fs.last_jc = jc;
+ }
+ }
+
+ setup->fs.jit_context_dirty = FALSE;
+ }
+
+ assert(setup->fs.last_jc);
+}
+
+
/* Stubs for lines & points for now:
*/
void
lp_setup_point(struct setup_context *setup,
const float (*v0)[4])
{
+ lp_setup_update_shader_state(setup);
setup->point( setup, v0 );
}
@@ -494,6 +518,7 @@ lp_setup_line(struct setup_context *setup,
const float (*v0)[4],
const float (*v1)[4])
{
+ lp_setup_update_shader_state(setup);
setup->line( setup, v0, v1 );
}
@@ -503,6 +528,7 @@ lp_setup_tri(struct setup_context *setup,
const float (*v1)[4],
const float (*v2)[4])
{
+ lp_setup_update_shader_state(setup);
setup->triangle( setup, v0, v1, v2 );
}
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h
index 2e2380d..747e90f 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_context.h
+++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h
@@ -114,6 +114,8 @@ struct setup_context {
lp_jit_frag_func jit_function;
boolean jit_context_dirty;
+
+ const struct lp_jit_context *last_jc;
} fs;
void (*point)( struct setup_context *,
More information about the mesa-commit
mailing list