intel/vs: Grow the param array for clip planes
Instead of requiring the caller of brw_compile_vs to figure it out, just grow the param array on-demand. Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -470,6 +470,13 @@ fs_visitor::setup_uniform_clipplane_values()
|
|||||||
const struct brw_vs_prog_key *key =
|
const struct brw_vs_prog_key *key =
|
||||||
(const struct brw_vs_prog_key *) this->key;
|
(const struct brw_vs_prog_key *) this->key;
|
||||||
|
|
||||||
|
if (key->nr_userclip_plane_consts == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
assert(stage_prog_data->nr_params == uniforms);
|
||||||
|
brw_stage_prog_data_add_params(stage_prog_data,
|
||||||
|
key->nr_userclip_plane_consts * 4);
|
||||||
|
|
||||||
for (int i = 0; i < key->nr_userclip_plane_consts; i++) {
|
for (int i = 0; i < key->nr_userclip_plane_consts; i++) {
|
||||||
this->userplane[i] = fs_reg(UNIFORM, uniforms);
|
this->userplane[i] = fs_reg(UNIFORM, uniforms);
|
||||||
for (int j = 0; j < 4; ++j) {
|
for (int j = 0; j < 4; ++j) {
|
||||||
|
@@ -119,6 +119,13 @@ vec4_vs_visitor::emit_clip_distances(dst_reg reg, int offset)
|
|||||||
void
|
void
|
||||||
vec4_vs_visitor::setup_uniform_clipplane_values()
|
vec4_vs_visitor::setup_uniform_clipplane_values()
|
||||||
{
|
{
|
||||||
|
if (key->nr_userclip_plane_consts == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
assert(stage_prog_data->nr_params == (unsigned)this->uniforms * 4);
|
||||||
|
brw_stage_prog_data_add_params(stage_prog_data,
|
||||||
|
key->nr_userclip_plane_consts * 4);
|
||||||
|
|
||||||
for (int i = 0; i < key->nr_userclip_plane_consts; ++i) {
|
for (int i = 0; i < key->nr_userclip_plane_consts; ++i) {
|
||||||
this->userplane[i] = dst_reg(UNIFORM, this->uniforms);
|
this->userplane[i] = dst_reg(UNIFORM, this->uniforms);
|
||||||
this->userplane[i].type = BRW_REGISTER_TYPE_F;
|
this->userplane[i].type = BRW_REGISTER_TYPE_F;
|
||||||
|
@@ -184,11 +184,6 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
|||||||
*/
|
*/
|
||||||
int param_count = vp->program.nir->num_uniforms / 4;
|
int param_count = vp->program.nir->num_uniforms / 4;
|
||||||
|
|
||||||
/* vec4_visitor::setup_uniform_clipplane_values() also uploads user clip
|
|
||||||
* planes as uniforms.
|
|
||||||
*/
|
|
||||||
param_count += key->nr_userclip_plane_consts * 4;
|
|
||||||
|
|
||||||
stage_prog_data->param = rzalloc_array(NULL, uint32_t, param_count);
|
stage_prog_data->param = rzalloc_array(NULL, uint32_t, param_count);
|
||||||
stage_prog_data->pull_param = rzalloc_array(NULL, uint32_t, param_count);
|
stage_prog_data->pull_param = rzalloc_array(NULL, uint32_t, param_count);
|
||||||
stage_prog_data->nr_params = param_count;
|
stage_prog_data->nr_params = param_count;
|
||||||
|
Reference in New Issue
Block a user