gallivm: add ssbo pointers to the soa build api.

Need to pass ssbo + ssbo size pointers just like constants.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
Dave Airlie 2019-06-26 15:34:52 +10:00
parent 2a55acbc1d
commit 5ff697aa65
5 changed files with 20 additions and 8 deletions

View File

@ -630,7 +630,7 @@ generate_vs(struct draw_llvm_variant *variant,
NULL,
draw_sampler,
&llvm->draw->vs.vertex_shader->info,
NULL);
NULL, NULL, NULL);
{
LLVMValueRef out;
@ -2363,7 +2363,7 @@ draw_gs_llvm_generate(struct draw_llvm *llvm,
NULL,
sampler,
&llvm->draw->gs.geometry_shader->info,
(const struct lp_build_tgsi_gs_iface *)&gs_iface);
(const struct lp_build_tgsi_gs_iface *)&gs_iface, NULL, NULL);
sampler->destroy(sampler);

View File

@ -230,7 +230,9 @@ lp_build_tgsi_soa(struct gallivm_state *gallivm,
LLVMValueRef thread_data_ptr,
const struct lp_build_sampler_soa *sampler,
const struct tgsi_shader_info *info,
const struct lp_build_tgsi_gs_iface *gs_iface);
const struct lp_build_tgsi_gs_iface *gs_iface,
LLVMValueRef ssbo_ptr,
LLVMValueRef ssbo_sizes_ptr);
void
@ -452,6 +454,9 @@ struct lp_build_tgsi_soa_context
LLVMValueRef context_ptr;
LLVMValueRef thread_data_ptr;
LLVMValueRef ssbo_ptr;
LLVMValueRef ssbo_sizes_ptr;
const struct lp_build_sampler_soa *sampler;
struct tgsi_declaration_sampler_view sv[PIPE_MAX_SHADER_SAMPLER_VIEWS];

View File

@ -3838,7 +3838,9 @@ lp_build_tgsi_soa(struct gallivm_state *gallivm,
LLVMValueRef thread_data_ptr,
const struct lp_build_sampler_soa *sampler,
const struct tgsi_shader_info *info,
const struct lp_build_tgsi_gs_iface *gs_iface)
const struct lp_build_tgsi_gs_iface *gs_iface,
LLVMValueRef ssbo_ptr,
LLVMValueRef ssbo_sizes_ptr)
{
struct lp_build_tgsi_soa_context bld;
@ -3879,6 +3881,8 @@ lp_build_tgsi_soa(struct gallivm_state *gallivm,
bld.outputs = outputs;
bld.consts_ptr = consts_ptr;
bld.const_sizes_ptr = const_sizes_ptr;
bld.ssbo_ptr = ssbo_ptr;
bld.ssbo_sizes_ptr = ssbo_sizes_ptr;
bld.sampler = sampler;
bld.bld_base.info = info;
bld.indirect_files = info->indirect_files;

View File

@ -479,7 +479,7 @@ generate_fs_loop(struct gallivm_state *gallivm,
consts_ptr, num_consts_ptr, &system_values,
interp->inputs,
outputs, context_ptr, thread_data_ptr,
sampler, &shader->info.base, NULL);
sampler, &shader->info.base, NULL, NULL, NULL);
/* Alpha test */
if (key->alpha.enabled) {

View File

@ -693,7 +693,8 @@ BuilderSWR::CompileGS(struct swr_context *ctx, swr_jit_gs_key &key)
NULL, // thread data
sampler,
&gs->info.base,
&gs_iface.base);
&gs_iface.base,
NULL, NULL); // ssbos
lp_build_mask_end(&mask);
@ -844,7 +845,8 @@ BuilderSWR::CompileVS(struct swr_context *ctx, swr_jit_vs_key &key)
NULL, // thread data
sampler, // sampler
&swr_vs->info.base,
NULL); // geometry shader face
NULL, // geometry shader face
NULL, NULL); // ssbos
sampler->destroy(sampler);
@ -1334,7 +1336,8 @@ BuilderSWR::CompileFS(struct swr_context *ctx, swr_jit_fs_key &key)
NULL, // thread data
sampler, // sampler
&swr_fs->info.base,
NULL); // geometry shader face
NULL, // geometry shader face
NULL, NULL); //ssbos
sampler->destroy(sampler);