diff options
author | Chia-I Wu <[email protected]> | 2014-10-30 10:03:17 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2014-11-06 10:42:19 +0800 |
commit | 1d5194769371767d046210df83c430a448bb3a53 (patch) | |
tree | 4b47e58ead5c932a8cc760dd52725ee837cd3712 /src/gallium/drivers/ilo | |
parent | 99742998fc3a4520c9106f4ef5cc1246e38a35a9 (diff) |
ilo: add kernel queries for compute shaders
We need to know the local/input/private sizes and others. This is not
complete. We need many others for CURBE setup.
Signed-off-by: Chia-I Wu <[email protected]>
Diffstat (limited to 'src/gallium/drivers/ilo')
-rw-r--r-- | src/gallium/drivers/ilo/ilo_shader.c | 25 | ||||
-rw-r--r-- | src/gallium/drivers/ilo/ilo_shader.h | 9 | ||||
-rw-r--r-- | src/gallium/drivers/ilo/shader/ilo_shader_internal.h | 3 |
3 files changed, 37 insertions, 0 deletions
diff --git a/src/gallium/drivers/ilo/ilo_shader.c b/src/gallium/drivers/ilo/ilo_shader.c index f4203aa9756..626bc1b9c45 100644 --- a/src/gallium/drivers/ilo/ilo_shader.c +++ b/src/gallium/drivers/ilo/ilo_shader.c @@ -1036,6 +1036,12 @@ ilo_shader_get_kernel_param(const struct ilo_shader_state *shader, case ILO_KERNEL_SURFACE_CONST_COUNT: val = kernel->bt.const_count; break; + case ILO_KERNEL_SURFACE_RES_BASE: + val = kernel->bt.res_base; + break; + case ILO_KERNEL_SURFACE_RES_COUNT: + val = kernel->bt.res_count; + break; case ILO_KERNEL_VS_INPUT_INSTANCEID: val = shader->info.has_instanceid; @@ -1111,6 +1117,25 @@ ilo_shader_get_kernel_param(const struct ilo_shader_state *shader, val = kernel->bt.rt_count; break; + case ILO_KERNEL_CS_LOCAL_SIZE: + val = shader->info.compute.req_local_mem; + break; + case ILO_KERNEL_CS_PRIVATE_SIZE: + val = shader->info.compute.req_private_mem; + break; + case ILO_KERNEL_CS_INPUT_SIZE: + val = shader->info.compute.req_input_mem; + break; + case ILO_KERNEL_CS_SIMD_SIZE: + val = 16; + break; + case ILO_KERNEL_CS_SURFACE_GLOBAL_BASE: + val = kernel->bt.global_base; + break; + case ILO_KERNEL_CS_SURFACE_GLOBAL_COUNT: + val = kernel->bt.global_count; + break; + default: assert(!"unknown kernel parameter"); val = 0; diff --git a/src/gallium/drivers/ilo/ilo_shader.h b/src/gallium/drivers/ilo/ilo_shader.h index c66513e27e0..ea500e328ee 100644 --- a/src/gallium/drivers/ilo/ilo_shader.h +++ b/src/gallium/drivers/ilo/ilo_shader.h @@ -43,6 +43,8 @@ enum ilo_kernel_param { ILO_KERNEL_SURFACE_TEX_COUNT, ILO_KERNEL_SURFACE_CONST_BASE, ILO_KERNEL_SURFACE_CONST_COUNT, + ILO_KERNEL_SURFACE_RES_BASE, + ILO_KERNEL_SURFACE_RES_COUNT, ILO_KERNEL_VS_INPUT_INSTANCEID, ILO_KERNEL_VS_INPUT_VERTEXID, @@ -69,6 +71,13 @@ enum ilo_kernel_param { ILO_KERNEL_FS_SURFACE_RT_BASE, ILO_KERNEL_FS_SURFACE_RT_COUNT, + ILO_KERNEL_CS_LOCAL_SIZE, + ILO_KERNEL_CS_PRIVATE_SIZE, + ILO_KERNEL_CS_INPUT_SIZE, + ILO_KERNEL_CS_SIMD_SIZE, + ILO_KERNEL_CS_SURFACE_GLOBAL_BASE, + ILO_KERNEL_CS_SURFACE_GLOBAL_COUNT, + ILO_KERNEL_PARAM_COUNT, }; diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_internal.h b/src/gallium/drivers/ilo/shader/ilo_shader_internal.h index 98ec8dd0e04..c55fde78ef0 100644 --- a/src/gallium/drivers/ilo/shader/ilo_shader_internal.h +++ b/src/gallium/drivers/ilo/shader/ilo_shader_internal.h @@ -138,9 +138,12 @@ struct ilo_shader { int rt_base, rt_count; int tex_base, tex_count; int const_base, const_count; + int res_base, res_count; int gen6_so_base, gen6_so_count; + int global_base, global_count; + int total_count; } bt; |