Re: [Mesa-dev] [PATCH 3/3] gallium/radeon: drop support for LLVM 3.5
On 10.02.2016 15:49, Marek Olšák wrote: From: Marek Olšák--- configure.ac | 2 +- src/gallium/drivers/r600/evergreen_compute.c | 75 -- .../drivers/r600/evergreen_compute_internal.h | 19 -- src/gallium/drivers/r600/r600_pipe.c | 4 -- src/gallium/drivers/radeon/r600_pipe_common.c | 7 +- src/gallium/drivers/radeonsi/si_compute.c | 58 + src/gallium/drivers/radeonsi/si_pipe.c | 17 + src/gallium/drivers/radeonsi/si_shader.c | 10 ++- src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 3 +- 9 files changed, 10 insertions(+), 185 deletions(-) diff --git a/configure.ac b/configure.ac index b05f33d..57fdde3 100644 --- a/configure.ac +++ b/configure.ac @@ -2186,7 +2186,7 @@ radeon_llvm_check() { if test "x$enable_gallium_llvm" != "xyes"; then AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) fi -llvm_check_version_for "3" "5" "0" $1 +llvm_check_version_for "3" "6" "0" $1 if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.]) fi diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c index d92e691..56c7fb9 100644 --- a/src/gallium/drivers/r600/evergreen_compute.c +++ b/src/gallium/drivers/r600/evergreen_compute.c @@ -208,23 +208,6 @@ void *evergreen_create_compute_state( COMPUTE_DBG(ctx->screen, "*** evergreen_create_compute_state\n"); header = cso->prog; code = cso->prog + sizeof(struct pipe_llvm_program_header); -#if HAVE_LLVM < 0x0306 -(void)use_kill; - (void)p; - shader->llvm_ctx = LLVMContextCreate(); - shader->num_kernels = radeon_llvm_get_num_kernels(shader->llvm_ctx, - code, header->num_bytes); - shader->kernels = CALLOC(sizeof(struct r600_kernel), - shader->num_kernels); - { - unsigned i; - for (i = 0; i < shader->num_kernels; i++) { - struct r600_kernel *kernel = >kernels[i]; - kernel->llvm_module = radeon_llvm_get_kernel_module( - shader->llvm_ctx, i, code, header->num_bytes); - } - } -#else radeon_shader_binary_init(>binary); radeon_elf_read(code, header->num_bytes, >binary); r600_create_shader(>bc, >binary, _kill); @@ -235,7 +218,6 @@ void *evergreen_create_compute_state( memcpy(p, shader->bc.bytecode, shader->bc.ndw * 4); ctx->b.ws->buffer_unmap(shader->code_bo->buf); #endif -#endif shader->ctx = ctx; shader->local_size = cso->req_local_mem; @@ -255,21 +237,12 @@ void evergreen_delete_compute_state(struct pipe_context *ctx_, void* state) return; #ifdef HAVE_OPENCL -#if HAVE_LLVM < 0x0306 - for (unsigned i = 0; i < shader->num_kernels; i++) { - struct r600_kernel *kernel = >kernels[i]; - LLVMDisposeModule(module); - } - FREE(shader->kernels); - LLVMContextDispose(shader->llvm_ctx); -#else radeon_shader_binary_clean(>binary); r600_destroy_shader(>bc); /* TODO destroy shader->code_bo, shader->const_bo * we'll need something like r600_buffer_free */ #endif -#endif FREE(shader); } @@ -372,11 +345,7 @@ static void evergreen_emit_direct_dispatch( int group_size = 1; int grid_size = 1; unsigned lds_size = shader->local_size / 4 + -#if HAVE_LLVM < 0x0306 - shader->active_kernel->bc.nlds_dw; -#else shader->bc.nlds_dw; -#endif /* Calculate group_size/grid_size */ @@ -565,18 +534,10 @@ void evergreen_emit_cs_shader( struct r600_resource *code_bo; unsigned ngpr, nstack; -#if HAVE_LLVM < 0x0306 - struct r600_kernel *kernel = >kernels[state->kernel_index]; - code_bo = kernel->code_bo; - va = kernel->code_bo->gpu_address; - ngpr = kernel->bc.ngpr; - nstack = kernel->bc.nstack; -#else code_bo = shader->code_bo; va = shader->code_bo->gpu_address + state->pc; ngpr = shader->bc.ngpr; nstack = shader->bc.nstack; -#endif radeon_compute_set_context_reg_seq(cs, R_0288D0_SQ_PGM_START_LS, 3); radeon_emit(cs, va >> 8); /* R_0288D0_SQ_PGM_START_LS */ @@ -601,46 +562,10 @@ static void evergreen_launch_grid( struct r600_pipe_compute *shader = ctx->cs_shader_state.shader; boolean use_kill; -#if HAVE_LLVM < 0x0306 - struct r600_kernel *kernel = >kernels[pc]; - (void)use_kill; -if (!kernel->code_bo) { -void *p; -struct r600_bytecode *bc = >bc; -LLVMModuleRef mod
[Mesa-dev] [PATCH 3/3] gallium/radeon: drop support for LLVM 3.5
From: Marek Olšák--- configure.ac | 2 +- src/gallium/drivers/r600/evergreen_compute.c | 75 -- .../drivers/r600/evergreen_compute_internal.h | 19 -- src/gallium/drivers/r600/r600_pipe.c | 4 -- src/gallium/drivers/radeon/r600_pipe_common.c | 7 +- src/gallium/drivers/radeonsi/si_compute.c | 58 + src/gallium/drivers/radeonsi/si_pipe.c | 17 + src/gallium/drivers/radeonsi/si_shader.c | 10 ++- src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 3 +- 9 files changed, 10 insertions(+), 185 deletions(-) diff --git a/configure.ac b/configure.ac index b05f33d..57fdde3 100644 --- a/configure.ac +++ b/configure.ac @@ -2186,7 +2186,7 @@ radeon_llvm_check() { if test "x$enable_gallium_llvm" != "xyes"; then AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) fi -llvm_check_version_for "3" "5" "0" $1 +llvm_check_version_for "3" "6" "0" $1 if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.]) fi diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c index d92e691..56c7fb9 100644 --- a/src/gallium/drivers/r600/evergreen_compute.c +++ b/src/gallium/drivers/r600/evergreen_compute.c @@ -208,23 +208,6 @@ void *evergreen_create_compute_state( COMPUTE_DBG(ctx->screen, "*** evergreen_create_compute_state\n"); header = cso->prog; code = cso->prog + sizeof(struct pipe_llvm_program_header); -#if HAVE_LLVM < 0x0306 -(void)use_kill; - (void)p; - shader->llvm_ctx = LLVMContextCreate(); - shader->num_kernels = radeon_llvm_get_num_kernels(shader->llvm_ctx, - code, header->num_bytes); - shader->kernels = CALLOC(sizeof(struct r600_kernel), - shader->num_kernels); - { - unsigned i; - for (i = 0; i < shader->num_kernels; i++) { - struct r600_kernel *kernel = >kernels[i]; - kernel->llvm_module = radeon_llvm_get_kernel_module( - shader->llvm_ctx, i, code, header->num_bytes); - } - } -#else radeon_shader_binary_init(>binary); radeon_elf_read(code, header->num_bytes, >binary); r600_create_shader(>bc, >binary, _kill); @@ -235,7 +218,6 @@ void *evergreen_create_compute_state( memcpy(p, shader->bc.bytecode, shader->bc.ndw * 4); ctx->b.ws->buffer_unmap(shader->code_bo->buf); #endif -#endif shader->ctx = ctx; shader->local_size = cso->req_local_mem; @@ -255,21 +237,12 @@ void evergreen_delete_compute_state(struct pipe_context *ctx_, void* state) return; #ifdef HAVE_OPENCL -#if HAVE_LLVM < 0x0306 - for (unsigned i = 0; i < shader->num_kernels; i++) { - struct r600_kernel *kernel = >kernels[i]; - LLVMDisposeModule(module); - } - FREE(shader->kernels); - LLVMContextDispose(shader->llvm_ctx); -#else radeon_shader_binary_clean(>binary); r600_destroy_shader(>bc); /* TODO destroy shader->code_bo, shader->const_bo * we'll need something like r600_buffer_free */ #endif -#endif FREE(shader); } @@ -372,11 +345,7 @@ static void evergreen_emit_direct_dispatch( int group_size = 1; int grid_size = 1; unsigned lds_size = shader->local_size / 4 + -#if HAVE_LLVM < 0x0306 - shader->active_kernel->bc.nlds_dw; -#else shader->bc.nlds_dw; -#endif /* Calculate group_size/grid_size */ @@ -565,18 +534,10 @@ void evergreen_emit_cs_shader( struct r600_resource *code_bo; unsigned ngpr, nstack; -#if HAVE_LLVM < 0x0306 - struct r600_kernel *kernel = >kernels[state->kernel_index]; - code_bo = kernel->code_bo; - va = kernel->code_bo->gpu_address; - ngpr = kernel->bc.ngpr; - nstack = kernel->bc.nstack; -#else code_bo = shader->code_bo; va = shader->code_bo->gpu_address + state->pc; ngpr = shader->bc.ngpr; nstack = shader->bc.nstack; -#endif radeon_compute_set_context_reg_seq(cs, R_0288D0_SQ_PGM_START_LS, 3); radeon_emit(cs, va >> 8); /* R_0288D0_SQ_PGM_START_LS */ @@ -601,46 +562,10 @@ static void evergreen_launch_grid( struct r600_pipe_compute *shader = ctx->cs_shader_state.shader; boolean use_kill; -#if HAVE_LLVM < 0x0306 - struct r600_kernel *kernel = >kernels[pc]; - (void)use_kill; -if (!kernel->code_bo) { -void *p; -struct r600_bytecode *bc = >bc; -LLVMModuleRef mod = kernel->llvm_module; -boolean