From: Karol Herbst <kher...@redhat.com> The initial plan was to use this for OpenCL kernels, but back then the plan was to convert from LLVM to TGSI. As it turns out, we didn't went that way.
Right now for OpenCL we don't reqiure supporting multiple entry points inside the same binary and if we want to support it later, we can add this back. Signed-off-by: Karol Herbst <kher...@redhat.com> --- src/gallium/drivers/nouveau/codegen/nv50_ir.h | 2 -- .../drivers/nouveau/codegen/nv50_ir_driver.h | 2 -- .../nouveau/codegen/nv50_ir_target.cpp | 23 ------------------- .../drivers/nouveau/nv50/nv50_compute.c | 17 +------------- .../drivers/nouveau/nv50/nv50_program.c | 10 -------- .../drivers/nouveau/nv50/nv50_program.h | 2 -- .../drivers/nouveau/nvc0/nvc0_compute.c | 2 +- .../drivers/nouveau/nvc0/nvc0_context.h | 2 -- .../drivers/nouveau/nvc0/nvc0_program.c | 21 ----------------- .../drivers/nouveau/nvc0/nvc0_program.h | 2 -- .../drivers/nouveau/nvc0/nve4_compute.c | 4 ++-- 11 files changed, 4 insertions(+), 83 deletions(-) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir.h b/src/gallium/drivers/nouveau/codegen/nv50_ir.h index 296b79f5d49..d2200fc4ea9 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir.h +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir.h @@ -1297,8 +1297,6 @@ public: const Target *getTarget() const { return target; } private: - void emitSymbolTable(struct nv50_ir_prog_info *); - Type progType; Target *target; diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h index 322bdd02557..55cc4c609f0 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h @@ -97,8 +97,6 @@ struct nv50_ir_prog_info const void *source; void *relocData; void *fixupData; - struct nv50_ir_prog_symbol *syms; - uint16_t numSyms; } bin; struct nv50_ir_varying sv[PIPE_MAX_SHADER_INPUTS]; diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp index 5c6d0570ae2..0af79e9d50a 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp @@ -343,27 +343,6 @@ CodeEmitter::prepareEmission(BasicBlock *bb) func->binSize += bb->binSize; } -void -Program::emitSymbolTable(struct nv50_ir_prog_info *info) -{ - unsigned int n = 0, nMax = allFuncs.getSize(); - - info->bin.syms = - (struct nv50_ir_prog_symbol *)MALLOC(nMax * sizeof(*info->bin.syms)); - - for (ArrayList::Iterator fi = allFuncs.iterator(); - !fi.end(); - fi.next(), ++n) { - Function *f = (Function *)fi.get(); - assert(n < nMax); - - info->bin.syms[n].label = f->getLabel(); - info->bin.syms[n].offset = f->binPos; - } - - info->bin.numSyms = n; -} - bool Program::emitBinary(struct nv50_ir_prog_info *info) { @@ -403,8 +382,6 @@ Program::emitBinary(struct nv50_ir_prog_info *info) info->bin.relocData = emit->getRelocInfo(); info->bin.fixupData = emit->getFixupInfo(); - emitSymbolTable(info); - // the nvc0 driver will print the binary iself together with the header if ((dbgFlags & NV50_IR_DEBUG_BASIC) && getTarget()->getChipset() < 0xc0) emit->printBinary(); diff --git a/src/gallium/drivers/nouveau/nv50/nv50_compute.c b/src/gallium/drivers/nouveau/nv50/nv50_compute.c index d781f6fd7d4..1a78a371405 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_compute.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_compute.c @@ -225,21 +225,6 @@ nv50_compute_upload_input(struct nv50_context *nv50, const uint32_t *input) } } -static uint32_t -nv50_compute_find_symbol(struct nv50_context *nv50, uint32_t label) -{ - struct nv50_program *prog = nv50->compprog; - const struct nv50_ir_prog_symbol *syms = - (const struct nv50_ir_prog_symbol *)prog->cp.syms; - unsigned i; - - for (i = 0; i < prog->cp.num_syms; ++i) { - if (syms[i].label == label) - return prog->code_base + syms[i].offset; - } - return prog->code_base; /* no symbols or symbol not found */ -} - void nv50_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) { @@ -258,7 +243,7 @@ nv50_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) nv50_compute_upload_input(nv50, info->input); BEGIN_NV04(push, NV50_CP(CP_START_ID), 1); - PUSH_DATA (push, nv50_compute_find_symbol(nv50, info->pc)); + PUSH_DATA (push, cp->code_base); BEGIN_NV04(push, NV50_CP(SHARED_SIZE), 1); PUSH_DATA (push, align(cp->cp.smem_size + cp->parm_size + 0x10, 0x40)); diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.c b/src/gallium/drivers/nouveau/nv50/nv50_program.c index c9d01e8cee7..58c0463f1a2 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_program.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.c @@ -434,13 +434,6 @@ nv50_program_translate(struct nv50_program *prog, uint16_t chipset, prog->gp.vert_count = CLAMP(info->prop.gp.maxVertices, 1, 1024); } - if (prog->type == PIPE_SHADER_COMPUTE) { - prog->cp.syms = info->bin.syms; - prog->cp.num_syms = info->bin.numSyms; - } else { - FREE(info->bin.syms); - } - if (prog->pipe.stream_output.num_outputs) prog->so = nv50_program_create_strmout_state(info, &prog->pipe.stream_output); @@ -543,9 +536,6 @@ nv50_program_destroy(struct nv50_context *nv50, struct nv50_program *p) FREE(p->interps); FREE(p->so); - if (type == PIPE_SHADER_COMPUTE) - FREE(p->cp.syms); - memset(p, 0, sizeof(*p)); p->pipe = pipe; diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.h b/src/gallium/drivers/nouveau/nv50/nv50_program.h index 2b45b09f01e..1a89e0d5067 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_program.h +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.h @@ -104,8 +104,6 @@ struct nv50_program { struct { uint32_t lmem_size; /* local memory (TGSI PRIVATE resource) size */ uint32_t smem_size; /* shared memory (TGSI LOCAL resource) size */ - void *syms; - unsigned num_syms; } cp; bool mul_zero_wins; diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c index af5c6f7e690..62ff39172fc 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c @@ -437,7 +437,7 @@ nvc0_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info) nvc0_compute_upload_input(nvc0, info); BEGIN_NVC0(push, NVC0_CP(CP_START_ID), 1); - PUSH_DATA (push, nvc0_program_symbol_offset(cp, info->pc)); + PUSH_DATA (push, cp->code_base); BEGIN_NVC0(push, NVC0_CP(LOCAL_POS_ALLOC), 3); PUSH_DATA (push, (cp->hdr[1] & 0xfffff0) + align(cp->cp.lmem_size, 0x10)); diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h index 4cfd207d4c0..8a2a8f2797e 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h @@ -325,8 +325,6 @@ bool nvc0_program_translate(struct nvc0_program *, uint16_t chipset, bool nvc0_program_upload(struct nvc0_context *, struct nvc0_program *); void nvc0_program_destroy(struct nvc0_context *, struct nvc0_program *); void nvc0_program_library_upload(struct nvc0_context *); -uint32_t nvc0_program_symbol_offset(const struct nvc0_program *, - uint32_t label); void nvc0_program_init_tcp_empty(struct nvc0_context *); /* nvc0_shader_state.c */ diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c index 128b94e1da5..3e982dbeec7 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c @@ -636,8 +636,6 @@ nvc0_program_translate(struct nvc0_program *prog, uint16_t chipset, NOUVEAU_ERR("shader translation failed: %i\n", ret); goto out; } - if (prog->type != PIPE_SHADER_COMPUTE) - FREE(info->bin.syms); prog->code = info->bin.code; prog->code_size = info->bin.codeSize; @@ -671,8 +669,6 @@ nvc0_program_translate(struct nvc0_program *prog, uint16_t chipset, ret = nvc0_fp_gen_header(prog, info); break; case PIPE_SHADER_COMPUTE: - prog->cp.syms = info->bin.syms; - prog->cp.num_syms = info->bin.numSyms; break; default: ret = -1; @@ -929,8 +925,6 @@ nvc0_program_destroy(struct nvc0_context *nvc0, struct nvc0_program *prog) FREE(prog->code); /* may be 0 for hardcoded shaders */ FREE(prog->relocs); FREE(prog->fixups); - if (prog->type == PIPE_SHADER_COMPUTE && prog->cp.syms) - FREE(prog->cp.syms); if (prog->tfb) { if (nvc0->state.tfb == prog->tfb) nvc0->state.tfb = NULL; @@ -943,21 +937,6 @@ nvc0_program_destroy(struct nvc0_context *nvc0, struct nvc0_program *prog) prog->type = type; } -uint32_t -nvc0_program_symbol_offset(const struct nvc0_program *prog, uint32_t label) -{ - const struct nv50_ir_prog_symbol *syms = - (const struct nv50_ir_prog_symbol *)prog->cp.syms; - unsigned base = 0; - unsigned i; - if (prog->type != PIPE_SHADER_COMPUTE) - base = NVC0_SHADER_HEADER_SIZE; - for (i = 0; i < prog->cp.num_syms; ++i) - if (syms[i].label == label) - return prog->code_base + base + syms[i].offset; - return prog->code_base; /* no symbols or symbol not found */ -} - void nvc0_program_init_tcp_empty(struct nvc0_context *nvc0) { diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_program.h b/src/gallium/drivers/nouveau/nvc0/nvc0_program.h index 183b14a42c2..c4df4342dff 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_program.h +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_program.h @@ -58,8 +58,6 @@ struct nvc0_program { struct { uint32_t lmem_size; /* local memory (TGSI PRIVATE resource) size */ uint32_t smem_size; /* shared memory (TGSI LOCAL resource) size */ - void *syms; - unsigned num_syms; } cp; uint8_t num_barriers; diff --git a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c index 146eeb35f85..53fe49fcffd 100644 --- a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c +++ b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c @@ -586,7 +586,7 @@ nve4_compute_setup_launch_desc(struct nvc0_context *nvc0, nve4_cp_launch_desc_init_default(desc); - desc->entry = nvc0_program_symbol_offset(cp, info->pc); + desc->entry = cp->code_base; desc->griddim_x = info->grid[0]; desc->griddim_y = info->grid[1]; @@ -631,7 +631,7 @@ gp100_compute_setup_launch_desc(struct nvc0_context *nvc0, gp100_cp_launch_desc_init_default(desc); - desc->entry = nvc0_program_symbol_offset(cp, info->pc); + desc->entry = cp->code_base; desc->griddim_x = info->grid[0]; desc->griddim_y = info->grid[1]; -- 2.24.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev