summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/ilo
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2014-10-30 10:03:17 +0800
committerChia-I Wu <[email protected]>2014-11-06 10:42:19 +0800
commit1d5194769371767d046210df83c430a448bb3a53 (patch)
tree4b47e58ead5c932a8cc760dd52725ee837cd3712 /src/gallium/drivers/ilo
parent99742998fc3a4520c9106f4ef5cc1246e38a35a9 (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.c25
-rw-r--r--src/gallium/drivers/ilo/ilo_shader.h9
-rw-r--r--src/gallium/drivers/ilo/shader/ilo_shader_internal.h3
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;