diff options
author | Tom Stellard <[email protected]> | 2013-03-07 10:51:25 -0500 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2013-04-05 18:43:34 -0400 |
commit | c5e5b3401c52f83bd885497cb30125e78a21d666 (patch) | |
tree | 895fceb4d43d1d6d8e9427907bc081007a86d9fa /src/gallium/drivers/radeonsi | |
parent | 1a868acbecdd7b7cb71342a75a36ad9a80d8eb17 (diff) |
gallium: PIPE_COMPUTE_CAP_IR_TARGET - allow drivers to specify a processor v2
This target string now contains four values instead of three. The old
processor field (which was really being interpreted as arch) has been split
into two fields: processor and arch. This allows drivers to pass a
more a more detailed description of the hardware to compiler frontends.
v2:
- Adapt to libclc changes
Reviewed-by: Francisco Jerez <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r-- | src/gallium/drivers/radeonsi/radeonsi_pipe.c | 11 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/radeonsi_pipe.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/radeonsi_shader.c | 4 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c b/src/gallium/drivers/radeonsi/radeonsi_pipe.c index 17d825b1d42..ce6fabba65c 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c +++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c @@ -274,6 +274,17 @@ static const char* r600_get_vendor(struct pipe_screen* pscreen) return "X.Org"; } +const char *r600_get_llvm_processor_name(enum radeon_family family) +{ + switch (family) { + case CHIP_TAHITI: return "tahiti"; + case CHIP_PITCAIRN: return "pitcairn"; + case CHIP_VERDE: return "verde"; + case CHIP_OLAND: return "oland"; + default: return ""; + } +} + static const char *r600_get_family_name(enum radeon_family family) { switch(family) { diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.h b/src/gallium/drivers/radeonsi/radeonsi_pipe.h index 40a5c8c3d90..496741f3726 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_pipe.h +++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.h @@ -218,6 +218,7 @@ void r600_upload_index_buffer(struct r600_context *rctx, /* r600_pipe.c */ void radeonsi_flush(struct pipe_context *ctx, struct pipe_fence_handle **fence, unsigned flags); +const char *r600_get_llvm_processor_name(enum radeon_family family); /* r600_query.c */ void r600_init_query_functions(struct r600_context *rctx); diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c index 5fdf46e7358..0db4555d59a 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c @@ -1165,7 +1165,9 @@ int si_pipe_shader_create( if (dump) { LLVMDumpModule(mod); } - radeon_llvm_compile(mod, &inst_bytes, &inst_byte_count, "SI", dump); + radeon_llvm_compile(mod, &inst_bytes, &inst_byte_count, + r600_get_llvm_processor_name(rctx->screen->family) + , dump); if (dump) { fprintf(stderr, "SI CODE:\n"); for (i = 0; i < inst_byte_count; i+=4 ) { |