gallium: add compute shader IR type
Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -317,8 +317,10 @@ void trace_dump_compute_state(const struct pipe_compute_state *state)
|
|||||||
|
|
||||||
trace_dump_struct_begin("pipe_compute_state");
|
trace_dump_struct_begin("pipe_compute_state");
|
||||||
|
|
||||||
|
trace_dump_member(uint, state, ir_type);
|
||||||
|
|
||||||
trace_dump_member_begin("prog");
|
trace_dump_member_begin("prog");
|
||||||
if (state->prog) {
|
if (state->prog && state->ir_type == PIPE_SHADER_IR_TGSI) {
|
||||||
static char str[64 * 1024];
|
static char str[64 * 1024];
|
||||||
tgsi_dump_str(state->prog, 0, str, sizeof(str));
|
tgsi_dump_str(state->prog, 0, str, sizeof(str));
|
||||||
trace_dump_string(str);
|
trace_dump_string(str);
|
||||||
|
@@ -727,6 +727,7 @@ struct pipe_llvm_program_header
|
|||||||
|
|
||||||
struct pipe_compute_state
|
struct pipe_compute_state
|
||||||
{
|
{
|
||||||
|
enum pipe_shader_ir ir_type; /**< IR type contained in prog. */
|
||||||
const void *prog; /**< Compute program to be executed. */
|
const void *prog; /**< Compute program to be executed. */
|
||||||
unsigned req_local_mem; /**< Required size of the LOCAL resource. */
|
unsigned req_local_mem; /**< Required size of the LOCAL resource. */
|
||||||
unsigned req_private_mem; /**< Required size of the PRIVATE resource. */
|
unsigned req_private_mem; /**< Required size of the PRIVATE resource. */
|
||||||
|
@@ -223,6 +223,7 @@ kernel::exec_context::bind(intrusive_ptr<command_queue> _q,
|
|||||||
if (st)
|
if (st)
|
||||||
_q->pipe->delete_compute_state(_q->pipe, st);
|
_q->pipe->delete_compute_state(_q->pipe, st);
|
||||||
|
|
||||||
|
cs.ir_type = q->device().ir_format();
|
||||||
cs.prog = &(msec.data[0]);
|
cs.prog = &(msec.data[0]);
|
||||||
cs.req_local_mem = mem_local;
|
cs.req_local_mem = mem_local;
|
||||||
cs.req_input_mem = input.size();
|
cs.req_input_mem = input.size();
|
||||||
|
@@ -144,6 +144,7 @@ static void init_prog(struct context *ctx, unsigned local_sz,
|
|||||||
struct pipe_context *pipe = ctx->pipe;
|
struct pipe_context *pipe = ctx->pipe;
|
||||||
struct tgsi_token prog[1024];
|
struct tgsi_token prog[1024];
|
||||||
struct pipe_compute_state cs = {
|
struct pipe_compute_state cs = {
|
||||||
|
.ir_type = PIPE_SHADER_IR_TGSI,
|
||||||
.prog = prog,
|
.prog = prog,
|
||||||
.req_local_mem = local_sz,
|
.req_local_mem = local_sz,
|
||||||
.req_private_mem = private_sz,
|
.req_private_mem = private_sz,
|
||||||
|
@@ -1463,6 +1463,7 @@ st_translate_compute_program(struct st_context *st,
|
|||||||
st_translate_program_common(st, &stcp->Base.Base, stcp->glsl_to_tgsi, ureg,
|
st_translate_program_common(st, &stcp->Base.Base, stcp->glsl_to_tgsi, ureg,
|
||||||
TGSI_PROCESSOR_COMPUTE, &prog);
|
TGSI_PROCESSOR_COMPUTE, &prog);
|
||||||
|
|
||||||
|
stcp->tgsi.ir_type = PIPE_SHADER_IR_TGSI;
|
||||||
stcp->tgsi.prog = prog.tokens;
|
stcp->tgsi.prog = prog.tokens;
|
||||||
stcp->tgsi.req_local_mem = stcp->Base.SharedSize;
|
stcp->tgsi.req_local_mem = stcp->Base.SharedSize;
|
||||||
stcp->tgsi.req_private_mem = 0;
|
stcp->tgsi.req_private_mem = 0;
|
||||||
|
Reference in New Issue
Block a user