[Mesa-dev] [PATCH 13/18] i965/blorp: Use flat inputs instead of uniforms
Topi Pohjolainen
topi.pohjolainen at intel.com
Thu Jun 23 19:17:09 UTC 2016
Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 43 ++++++++++++++-------------
src/mesa/drivers/dri/i965/brw_blorp_clear.cpp | 9 +++---
2 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index 1683f8e..616f87e 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -331,10 +331,10 @@ enum sampler_message_arg
struct brw_blorp_blit_vars {
/* Input values from brw_blorp_wm_inputs */
- nir_variable *u_discard_rect;
- nir_variable *u_rect_grid;
- nir_variable *u_coord_transform;
- nir_variable *u_src_z;
+ nir_variable *v_discard_rect;
+ nir_variable *v_rect_grid;
+ nir_variable *v_coord_transform;
+ nir_variable *v_src_z;
/* gl_FragCoord */
nir_variable *frag_coord;
@@ -349,34 +349,35 @@ brw_blorp_blit_vars_init(nir_builder *b, struct brw_blorp_blit_vars *v,
{
if (key->use_kill) {
assert(!(key->blend && key->blit_scaled));
- v->u_discard_rect = nir_variable_create(b->shader, nir_var_uniform,
+ v->v_discard_rect = nir_variable_create(b->shader, nir_var_shader_in,
glsl_type::uvec4_type,
"discard_rect");
- v->u_discard_rect->data.location =
- offsetof(struct brw_blorp_wm_inputs, discard_rect);
- v->u_rect_grid = NULL;
+ v->v_discard_rect->data.location = VARYING_SLOT_VAR0;
+ v->v_discard_rect->data.interpolation = INTERP_QUALIFIER_FLAT;
+ v->v_rect_grid = NULL;
} else {
/* Blending grid only has two components but loading it as vec4
* will keep offsets for the subsequent inputs the same between
* this and the discard branch.
*/
- v->u_rect_grid = nir_variable_create(b->shader, nir_var_uniform,
+ v->v_rect_grid = nir_variable_create(b->shader, nir_var_shader_in,
glsl_type::vec2_type,
"rect_grid");
- v->u_rect_grid->data.location =
- offsetof(struct brw_blorp_wm_inputs, rect_grid);
- v->u_discard_rect = NULL;
+ v->v_rect_grid->data.location = VARYING_SLOT_VAR0;
+ v->v_rect_grid->data.interpolation = INTERP_QUALIFIER_FLAT;
+ v->v_discard_rect = NULL;
}
- v->u_coord_transform = nir_variable_create(b->shader, nir_var_uniform,
+ v->v_coord_transform = nir_variable_create(b->shader, nir_var_shader_in,
glsl_type::vec4_type,
"coord_transform");
- v->u_coord_transform->data.location =
- offsetof(struct brw_blorp_wm_inputs, x_transform.multiplier);
+ v->v_coord_transform->data.location = VARYING_SLOT_VAR1;
+ v->v_coord_transform->data.interpolation = INTERP_QUALIFIER_FLAT;
- v->u_src_z = nir_variable_create(b->shader, nir_var_uniform,
+ v->v_src_z = nir_variable_create(b->shader, nir_var_shader_in,
glsl_type::uint_type, "src_z");
- v->u_src_z->data.location = offsetof(struct brw_blorp_wm_inputs, src_z);
+ v->v_src_z->data.location = VARYING_SLOT_VAR2;
+ v->v_src_z->data.interpolation = INTERP_QUALIFIER_FLAT;
v->frag_coord = nir_variable_create(b->shader, nir_var_shader_in,
glsl_vec4_type(), "gl_FragCoord");
@@ -411,7 +412,7 @@ nir_ssa_def *
blorp_blit_apply_transform(nir_builder *b, nir_ssa_def *src_pos,
struct brw_blorp_blit_vars *v)
{
- nir_ssa_def *coord_transform = nir_load_var(b, v->u_coord_transform);
+ nir_ssa_def *coord_transform = nir_load_var(b, v->v_coord_transform);
nir_ssa_def *offset = nir_vec2(b, nir_channel(b, coord_transform, 1),
nir_channel(b, coord_transform, 3));
@@ -426,7 +427,7 @@ blorp_nir_discard_if_outside_rect(nir_builder *b, nir_ssa_def *pos,
struct brw_blorp_blit_vars *v)
{
nir_ssa_def *c0, *c1, *c2, *c3;
- nir_ssa_def *discard_rect = nir_load_var(b, v->u_discard_rect);
+ nir_ssa_def *discard_rect = nir_load_var(b, v->v_discard_rect);
nir_ssa_def *dst_x0 = nir_channel(b, discard_rect, 0);
nir_ssa_def *dst_x1 = nir_channel(b, discard_rect, 1);
nir_ssa_def *dst_y0 = nir_channel(b, discard_rect, 2);
@@ -514,7 +515,7 @@ blorp_nir_txf(nir_builder *b, struct brw_blorp_blit_vars *v,
*/
assert(pos->num_components == 2);
pos = nir_vec3(b, nir_channel(b, pos, 0), nir_channel(b, pos, 1),
- nir_load_var(b, v->u_src_z));
+ nir_load_var(b, v->v_src_z));
tex->sampler_dim = GLSL_SAMPLER_DIM_3D;
tex->coord_components = 3;
@@ -1047,7 +1048,7 @@ blorp_nir_manual_blend_bilinear(nir_builder *b, nir_ssa_def *pos,
struct brw_blorp_blit_vars *v)
{
nir_ssa_def *pos_xy = nir_channels(b, pos, 0x3);
- nir_ssa_def *rect_grid = nir_load_var(b, v->u_rect_grid);
+ nir_ssa_def *rect_grid = nir_load_var(b, v->v_rect_grid);
nir_ssa_def *scale = nir_imm_vec2(b, key->x_scale, key->y_scale);
/* Translate coordinates to lay out the samples in a rectangular grid
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp b/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp
index b4beec2..2308b8d 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_clear.cpp
@@ -67,16 +67,17 @@ brw_blorp_params_get_clear_kernel(struct brw_context *brw,
nir_builder_init_simple_shader(&b, NULL, MESA_SHADER_FRAGMENT, NULL);
b.shader->info.name = ralloc_strdup(b.shader, "BLORP-clear");
- nir_variable *u_color = nir_variable_create(b.shader, nir_var_uniform,
- glsl_vec4_type(), "u_color");
- u_color->data.location = 0;
+ nir_variable *v_color = nir_variable_create(b.shader, nir_var_shader_in,
+ glsl_vec4_type(), "v_color");
+ v_color->data.location = VARYING_SLOT_VAR0;
+ v_color->data.interpolation = INTERP_QUALIFIER_FLAT;
nir_variable *frag_color = nir_variable_create(b.shader, nir_var_shader_out,
glsl_vec4_type(),
"gl_FragColor");
frag_color->data.location = FRAG_RESULT_COLOR;
- nir_copy_var(&b, frag_color, u_color);
+ nir_copy_var(&b, frag_color, v_color);
struct brw_wm_prog_key wm_key;
brw_blorp_init_wm_prog_key(&wm_key);
--
2.5.5
More information about the mesa-dev
mailing list