i965: Push everything if pull_param == NULL
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
963513bb24
commit
f1d29099b4
|
@ -2019,8 +2019,14 @@ fs_visitor::assign_constant_locations()
|
|||
if (!contiguous[u]) {
|
||||
unsigned chunk_size = u - chunk_start + 1;
|
||||
|
||||
if (num_push_constants + chunk_size <= max_push_components &&
|
||||
chunk_size <= max_chunk_size) {
|
||||
/* Decide whether we should push or pull this parameter. In the
|
||||
* Vulkan driver, push constants are explicitly exposed via the API
|
||||
* so we push everything. In GL, we only push small arrays.
|
||||
*/
|
||||
if (stage_prog_data->pull_param == NULL ||
|
||||
(num_push_constants + chunk_size <= max_push_components &&
|
||||
chunk_size <= max_chunk_size)) {
|
||||
assert(num_push_constants + chunk_size <= max_push_components);
|
||||
for (unsigned j = chunk_start; j <= u; j++)
|
||||
push_constant_loc[j] = num_push_constants++;
|
||||
} else {
|
||||
|
|
|
@ -1629,6 +1629,12 @@ vec4_visitor::emit_pull_constant_load(bblock_t *block, vec4_instruction *inst,
|
|||
void
|
||||
vec4_visitor::move_uniform_array_access_to_pull_constants()
|
||||
{
|
||||
/* The vulkan dirver doesn't support pull constants other than UBOs so
|
||||
* everything has to be pushed regardless.
|
||||
*/
|
||||
if (stage_prog_data->pull_param == NULL)
|
||||
return;
|
||||
|
||||
int pull_constant_loc[this->uniforms];
|
||||
memset(pull_constant_loc, -1, sizeof(pull_constant_loc));
|
||||
|
||||
|
|
Loading…
Reference in New Issue