aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/gallivm/lp_bld_sample.h
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2019-07-19 19:06:48 +1000
committerDave Airlie <[email protected]>2019-08-27 12:29:58 +1000
commitceb8d0ac5ac665a1cbb2537586d192374ab1e327 (patch)
tree473720976b5cd1a98f4c0c130f3f216c9aeb3e9f /src/gallium/auxiliary/gallivm/lp_bld_sample.h
parent15f7688ac9d75dcc10a07f103881c062bf9fdb9a (diff)
gallivm: add image load/store/atomic support
Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_sample.h')
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
index c00997b8983..8509179d08f 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
@@ -49,6 +49,7 @@ extern "C" {
struct pipe_resource;
struct pipe_sampler_view;
struct pipe_sampler_state;
+struct pipe_image_view;
struct util_format_description;
struct lp_type;
struct lp_build_context;
@@ -122,6 +123,27 @@ struct lp_sampler_size_query_params
LLVMValueRef explicit_lod;
LLVMValueRef *sizes_out;
};
+
+#define LP_IMG_LOAD 0
+#define LP_IMG_STORE 1
+#define LP_IMG_ATOMIC 2
+#define LP_IMG_ATOMIC_CAS 3
+
+struct lp_img_params
+{
+ struct lp_type type;
+ unsigned image_index;
+ unsigned img_op;
+ unsigned target;
+ LLVMAtomicRMWBinOp op;
+ LLVMValueRef exec_mask;
+ LLVMValueRef context_ptr;
+ LLVMValueRef thread_data_ptr;
+ const LLVMValueRef *coords;
+ LLVMValueRef indata[4];
+ LLVMValueRef indata2[4];
+ LLVMValueRef *outdata;
+};
/**
* Texture static state.
*
@@ -489,6 +511,9 @@ void
lp_sampler_static_texture_state(struct lp_static_texture_state *state,
const struct pipe_sampler_view *view);
+void
+lp_sampler_static_texture_state_image(struct lp_static_texture_state *state,
+ const struct pipe_image_view *view);
void
lp_build_lod_selector(struct lp_build_sample_context *bld,
@@ -639,6 +664,12 @@ lp_build_minify(struct lp_build_context *bld,
LLVMValueRef level,
boolean lod_scalar);
+void
+lp_build_img_op_soa(const struct lp_static_texture_state *static_texture_state,
+ struct lp_sampler_dynamic_state *dynamic_state,
+ struct gallivm_state *gallivm,
+ const struct lp_img_params *params);
+
#ifdef __cplusplus
}
#endif