aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2019-07-19 16:33:03 +1000
committerDave Airlie <[email protected]>2019-08-27 12:29:55 +1000
commit15f7688ac9d75dcc10a07f103881c062bf9fdb9a (patch)
tree7acc750c972c9d61d9fa80d4197b036925cb4f76 /src
parentb2be174be270d653fcdf190e8252e266ff8176c3 (diff)
gallivm/tgsi: add image interface to tgsi builder
This adds the callbacks for the driver/gallium binding for image operations. Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi.h20
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c1
2 files changed, 20 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
index 26e8e405869..ed3465874bc 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
@@ -210,6 +210,23 @@ struct lp_build_sampler_aos
enum lp_build_tex_modifier modifier);
};
+struct lp_img_params;
+
+struct lp_build_image_soa
+{
+ void
+ (*destroy)( struct lp_build_image_soa *image );
+
+ void
+ (*emit_op)(const struct lp_build_image_soa *image,
+ struct gallivm_state *gallivm,
+ const struct lp_img_params *params);
+
+ void
+ (*emit_size_query)( const struct lp_build_image_soa *sampler,
+ struct gallivm_state *gallivm,
+ const struct lp_sampler_size_query_params *params);
+};
void
lp_build_tgsi_info(const struct tgsi_token *tokens,
@@ -230,6 +247,7 @@ struct lp_build_tgsi_params {
const struct lp_build_tgsi_gs_iface *gs_iface;
LLVMValueRef ssbo_ptr;
LLVMValueRef ssbo_sizes_ptr;
+ const struct lp_build_image_soa *image;
};
void
@@ -238,7 +256,6 @@ lp_build_tgsi_soa(struct gallivm_state *gallivm,
const struct lp_build_tgsi_params *params,
LLVMValueRef (*outputs)[4]);
-
void
lp_build_tgsi_aos(struct gallivm_state *gallivm,
const struct tgsi_token *tokens,
@@ -464,6 +481,7 @@ struct lp_build_tgsi_soa_context
LLVMValueRef ssbo_sizes[LP_MAX_TGSI_SHADER_BUFFERS];
const struct lp_build_sampler_soa *sampler;
+ const struct lp_build_image_soa *image;
struct tgsi_declaration_sampler_view sv[PIPE_MAX_SHADER_SAMPLER_VIEWS];
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index c51ab658f50..ab78e6bb50c 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -4180,6 +4180,7 @@ lp_build_tgsi_soa(struct gallivm_state *gallivm,
bld.indirect_files = params->info->indirect_files;
bld.context_ptr = params->context_ptr;
bld.thread_data_ptr = params->thread_data_ptr;
+ bld.image = params->image;
/*
* If the number of temporaries is rather large then we just