Mesa (master): i965: Generalize fs_generator further

Kristian Høgsberg krh at kemper.freedesktop.org
Wed Dec 10 20:45:04 UTC 2014


Module: Mesa
Branch: master
Commit: 7bb9d33b8d6ecc03670078c3f9623f188135abb7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7bb9d33b8d6ecc03670078c3f9623f188135abb7

Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Mon Oct 20 22:53:31 2014 -0700

i965: Generalize fs_generator further

This removes all stage specific data from the generator, and lets us
create a generator for any stage.

Signed-off-by: Kristian Høgsberg <krh at bitplanet.net>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp |    5 ++---
 src/mesa/drivers/dri/i965/brw_fs.cpp            |    2 +-
 src/mesa/drivers/dri/i965/brw_fs.h              |    7 +++----
 src/mesa/drivers/dri/i965/brw_fs_generator.cpp  |   14 ++++++--------
 4 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp
index 7802c9f..86ed953 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp
@@ -29,9 +29,8 @@
 brw_blorp_eu_emitter::brw_blorp_eu_emitter(struct brw_context *brw,
                                            bool debug_flag)
    : mem_ctx(ralloc_context(NULL)),
-     generator(brw, mem_ctx,
-               rzalloc(mem_ctx, struct brw_wm_prog_key),
-               rzalloc(mem_ctx, struct brw_wm_prog_data),
+     generator(brw, mem_ctx, (void *) rzalloc(mem_ctx, struct brw_wm_prog_key),
+               (struct brw_stage_prog_data *) rzalloc(mem_ctx, struct brw_wm_prog_data),
                NULL, NULL, false, debug_flag)
 {
 }
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 389c8ae..b4db1ca 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3716,7 +3716,7 @@ brw_wm_fs_emit(struct brw_context *brw,
       prog_data->no_8 = false;
    }
 
-   fs_generator g(brw, mem_ctx, key, prog_data, prog, fp,
+   fs_generator g(brw, mem_ctx, (void *) key, &prog_data->base, prog, &fp->Base,
                   v.runtime_check_aads_emit, INTEL_DEBUG & DEBUG_WM);
    if (simd8_cfg)
       g.generate_code(simd8_cfg, 8);
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 807001b..5b33ad2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -689,10 +689,10 @@ class fs_generator
 public:
    fs_generator(struct brw_context *brw,
                 void *mem_ctx,
-                const struct brw_wm_prog_key *key,
-                struct brw_wm_prog_data *prog_data,
+                const void *key,
+                struct brw_stage_prog_data *prog_data,
                 struct gl_shader_program *shader_prog,
-                struct gl_fragment_program *fp,
+                struct gl_program *fp,
                 bool runtime_check_aads_emit,
                 bool debug_flag);
    ~fs_generator();
@@ -794,7 +794,6 @@ private:
    struct gl_context *ctx;
 
    struct brw_compile *p;
-   gl_shader_stage stage;
    const void * const key;
    struct brw_stage_prog_data * const prog_data;
 
diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index a650abb..6c528c6 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -122,16 +122,16 @@ brw_reg_from_fs_reg(fs_reg *reg)
 
 fs_generator::fs_generator(struct brw_context *brw,
                            void *mem_ctx,
-                           const struct brw_wm_prog_key *key,
-                           struct brw_wm_prog_data *prog_data,
+                           const void *key,
+                           struct brw_stage_prog_data *prog_data,
                            struct gl_shader_program *shader_prog,
-                           struct gl_fragment_program *fp,
+                           struct gl_program *prog,
                            bool runtime_check_aads_emit,
                            bool debug_flag)
 
-   : brw(brw), stage(MESA_SHADER_FRAGMENT), key(key),
-     prog_data(&prog_data->base), shader_prog(shader_prog),
-     prog(&fp->Base), runtime_check_aads_emit(runtime_check_aads_emit),
+   : brw(brw), key(key),
+     prog_data(prog_data), shader_prog(shader_prog),
+     prog(prog), runtime_check_aads_emit(runtime_check_aads_emit),
      debug_flag(debug_flag), mem_ctx(mem_ctx)
 {
    ctx = &brw->ctx;
@@ -201,7 +201,6 @@ fs_generator::fire_fb_write(fs_inst *inst,
 {
    uint32_t msg_control;
 
-   assert(stage == MESA_SHADER_FRAGMENT);
    brw_wm_prog_data *prog_data = (brw_wm_prog_data*) this->prog_data;
 
    if (brw->gen < 6) {
@@ -242,7 +241,6 @@ fs_generator::fire_fb_write(fs_inst *inst,
 void
 fs_generator::generate_fb_write(fs_inst *inst, struct brw_reg payload)
 {
-   assert(stage == MESA_SHADER_FRAGMENT);
    brw_wm_prog_data *prog_data = (brw_wm_prog_data*) this->prog_data;
    const brw_wm_prog_key * const key = (brw_wm_prog_key * const) this->key;
    struct brw_reg implied_header;




More information about the mesa-commit mailing list