Instead, just pass the key and prog_data as separate parameters.
This moves it up a level - one step further toward getting rid of it.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
#include "brw_blorp.h"
brw_blorp_eu_emitter::brw_blorp_eu_emitter(struct brw_context *brw)
- : mem_ctx(ralloc_context(NULL)), c(rzalloc(mem_ctx, struct brw_wm_compile)),
- generator(brw, mem_ctx, c, NULL, NULL, false)
+ : 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),
+ NULL, NULL, false)
{
}
fs_inst *emit_cmp(int op, const struct brw_reg &x, const struct brw_reg &y);
void *mem_ctx;
- struct brw_wm_compile *c;
exec_list insts;
fs_generator generator;
};
const unsigned *
brw_wm_fs_emit(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_fragment_program *fp,
struct gl_shader_program *prog,
unsigned *final_assembly_size)
/* Now the main event: Visit the shader IR and generate our FS IR for it.
*/
- fs_visitor v(brw, mem_ctx, c, prog, fp, 8);
+ fs_visitor v(brw, mem_ctx, key, prog_data, prog, fp, 8);
if (!v.run()) {
if (prog) {
prog->LinkStatus = false;
}
exec_list *simd16_instructions = NULL;
- fs_visitor v2(brw, mem_ctx, c, prog, fp, 16);
+ fs_visitor v2(brw, mem_ctx, key, prog_data, prog, fp, 16);
if (brw->gen >= 5 && likely(!(INTEL_DEBUG & DEBUG_NO16))) {
if (!v.simd16_unsupported) {
/* Try a SIMD16 compile */
const unsigned *assembly = NULL;
if (brw->gen >= 8) {
- gen8_fs_generator g(brw, mem_ctx, c, prog, fp, v.do_dual_src);
+ gen8_fs_generator g(brw, mem_ctx, key, prog_data, prog, fp, v.do_dual_src);
assembly = g.generate_assembly(&v.instructions, simd16_instructions,
final_assembly_size);
} else {
- fs_generator g(brw, mem_ctx, c, prog, fp, v.do_dual_src);
+ fs_generator g(brw, mem_ctx, key, prog_data, prog, fp, v.do_dual_src);
assembly = g.generate_assembly(&v.instructions, simd16_instructions,
final_assembly_size);
}
if (unlikely(brw->perf_debug) && shader) {
if (shader->compiled_once)
- brw_wm_debug_recompile(brw, prog, &c->key);
+ brw_wm_debug_recompile(brw, prog, key);
shader->compiled_once = true;
if (start_busy && !drm_intel_bo_busy(brw->batch.last_bo)) {
fs_visitor(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_shader_program *shader_prog,
struct gl_fragment_program *fp,
unsigned dispatch_width);
void visit_atomic_counter_intrinsic(ir_call *ir);
struct gl_fragment_program *fp;
- struct brw_wm_compile *c;
const struct brw_wm_prog_key *const key;
struct brw_wm_prog_data *prog_data;
unsigned int sanity_param_count;
public:
fs_generator(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_shader_program *prog,
struct gl_fragment_program *fp,
bool dual_source_output);
struct gl_context *ctx;
struct brw_compile *p;
- struct brw_wm_compile *c;
const struct brw_wm_prog_key *const key;
struct brw_wm_prog_data *prog_data;
public:
gen8_fs_generator(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_shader_program *prog,
struct gl_fragment_program *fp,
bool dual_source_output);
void patch_discard_jumps_to_fb_writes();
- struct brw_wm_compile *c;
const struct brw_wm_prog_key *const key;
struct brw_wm_prog_data *prog_data;
const struct gl_fragment_program *fp;
fs_generator::fs_generator(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_shader_program *prog,
struct gl_fragment_program *fp,
bool dual_source_output)
- : brw(brw), c(c), key(&c->key), prog(prog), fp(fp), dual_source_output(dual_source_output), mem_ctx(mem_ctx)
+ : brw(brw), key(key), prog_data(prog_data), prog(prog), fp(fp),
+ dual_source_output(dual_source_output), mem_ctx(mem_ctx)
{
ctx = &brw->ctx;
- prog_data = &c->prog_data;
p = rzalloc(mem_ctx, struct brw_compile);
brw_init_compile(brw, p, mem_ctx);
fs_visitor::fs_visitor(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_shader_program *shader_prog,
struct gl_fragment_program *fp,
unsigned dispatch_width)
- : backend_visitor(brw, shader_prog, &fp->Base, &c->prog_data.base,
+ : backend_visitor(brw, shader_prog, &fp->Base, &prog_data->base,
MESA_SHADER_FRAGMENT),
- key(&c->key),
+ key(key), prog_data(prog_data),
dispatch_width(dispatch_width)
{
- this->c = c;
- this->prog_data = &c->prog_data;
this->fp = fp;
this->mem_ctx = mem_ctx;
this->failed = false;
c->key.persample_shading,
&fp->program);
- program = brw_wm_fs_emit(brw, mem_ctx, c, &fp->program, prog, &program_size);
+ program = brw_wm_fs_emit(brw, mem_ctx, &c->key, &c->prog_data,
+ &fp->program, prog, &program_size);
if (program == NULL) {
ralloc_free(mem_ctx);
return false;
*/
const unsigned *brw_wm_fs_emit(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_fragment_program *fp,
struct gl_shader_program *prog,
unsigned *final_assembly_size);
gen8_fs_generator::gen8_fs_generator(struct brw_context *brw,
void *mem_ctx,
- struct brw_wm_compile *c,
+ const struct brw_wm_prog_key *key,
+ struct brw_wm_prog_data *prog_data,
struct gl_shader_program *shader_prog,
struct gl_fragment_program *fp,
bool dual_source_output)
: gen8_generator(brw, shader_prog, fp ? &fp->Base : NULL, mem_ctx),
- c(c), key(&c->key),
+ key(key), prog_data(prog_data),
fp(fp), dual_source_output(dual_source_output)
{
- prog_data = &c->prog_data;
}
gen8_fs_generator::~gen8_fs_generator()