[Mesa-dev] [PATCH 02/14] i965: Generalize fs_generator further
Matt Turner
mattst88 at gmail.com
Tue Oct 28 15:59:48 PDT 2014
On Tue, Oct 28, 2014 at 3:58 PM, Matt Turner <mattst88 at gmail.com> wrote:
> On Tue, Oct 28, 2014 at 3:17 PM, Kristian Høgsberg <krh at bitplanet.net> wrote:
>> 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>
>> ---
>> 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 | 20 +++++++-------------
>> 4 files changed, 13 insertions(+), 21 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 3afe0e7..7e02781 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 aa1d8d2..b3684bc 100644
>> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
>> @@ -3744,7 +3744,7 @@ brw_wm_fs_emit(struct brw_context *brw,
>> }
>>
>> const unsigned *assembly = NULL;
>> - 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);
>> assembly = g.generate_assembly(simd8_cfg, simd16_cfg,
>> final_assembly_size);
>> diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
>> index 67956bc..3c3e0d4 100644
>> --- a/src/mesa/drivers/dri/i965/brw_fs.h
>> +++ b/src/mesa/drivers/dri/i965/brw_fs.h
>> @@ -694,10 +694,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();
>> @@ -801,7 +801,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 c95beb6..06b94dd 100644
>> --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
>> @@ -38,16 +38,16 @@ extern "C" {
>>
>> 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;
>> @@ -105,7 +105,6 @@ fs_generator::fire_fb_write(fs_inst *inst,
>> {
>> uint32_t msg_control;
>>
>> - assert(stage == MESA_SHADER_FRAGMENT);
>
> I like removing these asserts from the function bodies, but I'm
> confused why you're doing it. The VS isn't going to call
> fire_fb_write, or emit a derivative instruction.
Oh, you're actually removing the stage member entirely. Isn't that
useful to have?
Maybe I need to keep reading the series..
More information about the mesa-dev
mailing list