nir: Save nir_variable pointers in nir_lower_clip_vs rather than locs.
I'll want the variables in the next patch. Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -159,9 +159,9 @@ nir_lower_clip_vs(nir_shader *shader, unsigned ucp_enables)
|
|||||||
nir_function_impl *impl = nir_shader_get_entrypoint(shader);
|
nir_function_impl *impl = nir_shader_get_entrypoint(shader);
|
||||||
nir_ssa_def *clipdist[MAX_CLIP_PLANES];
|
nir_ssa_def *clipdist[MAX_CLIP_PLANES];
|
||||||
nir_builder b;
|
nir_builder b;
|
||||||
int clipvertex = -1;
|
|
||||||
int position = -1;
|
|
||||||
int maxloc = -1;
|
int maxloc = -1;
|
||||||
|
nir_variable *position = NULL;
|
||||||
|
nir_variable *clipvertex = NULL;
|
||||||
nir_ssa_def *cv;
|
nir_ssa_def *cv;
|
||||||
nir_variable *out[2] = { NULL };
|
nir_variable *out[2] = { NULL };
|
||||||
|
|
||||||
@@ -184,20 +184,12 @@ nir_lower_clip_vs(nir_shader *shader, unsigned ucp_enables)
|
|||||||
|
|
||||||
/* find clipvertex/position outputs: */
|
/* find clipvertex/position outputs: */
|
||||||
nir_foreach_variable(var, &shader->outputs) {
|
nir_foreach_variable(var, &shader->outputs) {
|
||||||
int loc = var->data.driver_location;
|
|
||||||
|
|
||||||
/* keep track of last used driver-location.. we'll be
|
|
||||||
* appending CLIP_DIST0/CLIP_DIST1 after last existing
|
|
||||||
* output:
|
|
||||||
*/
|
|
||||||
maxloc = MAX2(maxloc, loc);
|
|
||||||
|
|
||||||
switch (var->data.location) {
|
switch (var->data.location) {
|
||||||
case VARYING_SLOT_POS:
|
case VARYING_SLOT_POS:
|
||||||
position = loc;
|
position = var;
|
||||||
break;
|
break;
|
||||||
case VARYING_SLOT_CLIP_VERTEX:
|
case VARYING_SLOT_CLIP_VERTEX:
|
||||||
clipvertex = loc;
|
clipvertex = var;
|
||||||
break;
|
break;
|
||||||
case VARYING_SLOT_CLIP_DIST0:
|
case VARYING_SLOT_CLIP_DIST0:
|
||||||
case VARYING_SLOT_CLIP_DIST1:
|
case VARYING_SLOT_CLIP_DIST1:
|
||||||
@@ -209,10 +201,10 @@ nir_lower_clip_vs(nir_shader *shader, unsigned ucp_enables)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clipvertex != -1)
|
if (clipvertex)
|
||||||
cv = find_output(shader, clipvertex);
|
cv = find_output(shader, clipvertex->data.driver_location);
|
||||||
else if (position != -1)
|
else if (position)
|
||||||
cv = find_output(shader, position);
|
cv = find_output(shader, position->data.driver_location);
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user