projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nir: fix lowering to scratch with boolean access
[mesa.git]
/
src
/
compiler
/
nir
/
nir_lower_tex.c
diff --git
a/src/compiler/nir/nir_lower_tex.c
b/src/compiler/nir/nir_lower_tex.c
index 191076f8c27a2e7fbc398df33b84a07b89634d1b..18bbd1e39a8c6ee7a98c74abdd3cbc5ad939895a 100644
(file)
--- a/
src/compiler/nir/nir_lower_tex.c
+++ b/
src/compiler/nir/nir_lower_tex.c
@@
-126,7
+126,7
@@
lower_offset(nir_builder *b, nir_tex_instr *tex)
if (tex->sampler_dim == GLSL_SAMPLER_DIM_RECT) {
offset_coord = nir_fadd(b, coord, nir_i2f32(b, offset));
} else {
if (tex->sampler_dim == GLSL_SAMPLER_DIM_RECT) {
offset_coord = nir_fadd(b, coord, nir_i2f32(b, offset));
} else {
- nir_ssa_def *txs = nir_
get_texture_size(b, tex
);
+ nir_ssa_def *txs = nir_
i2f32(b, nir_get_texture_size(b, tex)
);
nir_ssa_def *scale = nir_frcp(b, txs);
offset_coord = nir_fadd(b, coord,
nir_ssa_def *scale = nir_frcp(b, txs);
offset_coord = nir_fadd(b, coord,
@@
-168,7
+168,7
@@
lower_rect(nir_builder *b, nir_tex_instr *tex)
*/
tex->sampler_dim = GLSL_SAMPLER_DIM_2D;
*/
tex->sampler_dim = GLSL_SAMPLER_DIM_2D;
- nir_ssa_def *txs = nir_
get_texture_size(b, tex
);
+ nir_ssa_def *txs = nir_
i2f32(b, nir_get_texture_size(b, tex)
);
nir_ssa_def *scale = nir_frcp(b, txs);
/* Walk through the sources normalizing the requested arguments. */
nir_ssa_def *scale = nir_frcp(b, txs);
/* Walk through the sources normalizing the requested arguments. */
@@
-405,7
+405,7
@@
lower_gradient_cube_map(nir_builder *b, nir_tex_instr *tex)
assert(tex->dest.is_ssa);
/* Use textureSize() to get the width and height of LOD 0 */
assert(tex->dest.is_ssa);
/* Use textureSize() to get the width and height of LOD 0 */
- nir_ssa_def *size = nir_
get_texture_size(b, tex
);
+ nir_ssa_def *size = nir_
i2f32(b, nir_get_texture_size(b, tex)
);
/* Cubemap texture lookups first generate a texture coordinate normalized
* to [-1, 1] on the appropiate face. The appropiate face is determined
/* Cubemap texture lookups first generate a texture coordinate normalized
* to [-1, 1] on the appropiate face. The appropiate face is determined
@@
-572,7
+572,8
@@
lower_gradient(nir_builder *b, nir_tex_instr *tex)
}
nir_ssa_def *size =
}
nir_ssa_def *size =
- nir_channels(b, nir_get_texture_size(b, tex), component_mask);
+ nir_channels(b, nir_i2f32(b, nir_get_texture_size(b, tex)),
+ component_mask);
/* Scale the gradients by width and height. Effectively, the incoming
* gradients are s'(x,y), t'(x,y), and r'(x,y) from equation 3.19 in the
/* Scale the gradients by width and height. Effectively, the incoming
* gradients are s'(x,y), t'(x,y), and r'(x,y) from equation 3.19 in the
@@
-634,7
+635,7
@@
saturate_src(nir_builder *b, nir_tex_instr *tex, unsigned sat_mask)
/* non-normalized texture coords, so clamp to texture
* size rather than [0.0, 1.0]
*/
/* non-normalized texture coords, so clamp to texture
* size rather than [0.0, 1.0]
*/
- nir_ssa_def *txs = nir_
get_texture_size(b, tex
);
+ nir_ssa_def *txs = nir_
i2f32(b, nir_get_texture_size(b, tex)
);
comp[j] = nir_fmax(b, comp[j], nir_imm_float(b, 0.0));
comp[j] = nir_fmin(b, comp[j], nir_channel(b, txs, j));
} else {
comp[j] = nir_fmax(b, comp[j], nir_imm_float(b, 0.0));
comp[j] = nir_fmin(b, comp[j], nir_channel(b, txs, j));
} else {
@@
-934,12
+935,6
@@
nir_lower_tex_block(nir_block *block, nir_builder *b,
nir_tex_instr *tex = nir_instr_as_tex(instr);
bool lower_txp = !!(options->lower_txp & (1 << tex->sampler_dim));
nir_tex_instr *tex = nir_instr_as_tex(instr);
bool lower_txp = !!(options->lower_txp & (1 << tex->sampler_dim));
- /* we aren't really going to do the right thing if we haven't
- * lowered tex/samp derefs yet:
- */
- assume(nir_tex_instr_src_index(tex, nir_tex_src_texture_deref) < 0);
- assume(nir_tex_instr_src_index(tex, nir_tex_src_sampler_deref) < 0);
-
/* mask of src coords to saturate (clamp): */
unsigned sat_mask = 0;
/* mask of src coords to saturate (clamp): */
unsigned sat_mask = 0;