nir: Create sampler2D variables in nir_lower_{bitmap,drawpixels}.
This is needed for nir_gather_info to actually count the new textures, since it operates solely on variables. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
b7397b09d5
commit
ed169c9ad2
|
@ -88,6 +88,13 @@ lower_bitmap(nir_shader *shader, nir_builder *b,
|
||||||
|
|
||||||
texcoord = nir_load_var(b, get_texcoord(shader));
|
texcoord = nir_load_var(b, get_texcoord(shader));
|
||||||
|
|
||||||
|
const struct glsl_type *sampler2D =
|
||||||
|
glsl_sampler_type(GLSL_SAMPLER_DIM_2D, false, false, GLSL_TYPE_FLOAT);
|
||||||
|
|
||||||
|
nir_variable *tex_var =
|
||||||
|
nir_variable_create(shader, nir_var_uniform, sampler2D, "bitmap_tex");
|
||||||
|
tex_var->data.binding = options->sampler;
|
||||||
|
|
||||||
tex = nir_tex_instr_create(shader, 1);
|
tex = nir_tex_instr_create(shader, 1);
|
||||||
tex->op = nir_texop_tex;
|
tex->op = nir_texop_tex;
|
||||||
tex->sampler_dim = GLSL_SAMPLER_DIM_2D;
|
tex->sampler_dim = GLSL_SAMPLER_DIM_2D;
|
||||||
|
|
|
@ -35,7 +35,7 @@ typedef struct {
|
||||||
const nir_lower_drawpixels_options *options;
|
const nir_lower_drawpixels_options *options;
|
||||||
nir_shader *shader;
|
nir_shader *shader;
|
||||||
nir_builder b;
|
nir_builder b;
|
||||||
nir_variable *texcoord, *scale, *bias;
|
nir_variable *texcoord, *scale, *bias, *tex, *pixelmap;
|
||||||
} lower_drawpixels_state;
|
} lower_drawpixels_state;
|
||||||
|
|
||||||
static nir_ssa_def *
|
static nir_ssa_def *
|
||||||
|
@ -125,6 +125,15 @@ lower_color(lower_drawpixels_state *state, nir_intrinsic_instr *intr)
|
||||||
|
|
||||||
texcoord = get_texcoord(state);
|
texcoord = get_texcoord(state);
|
||||||
|
|
||||||
|
const struct glsl_type *sampler2D =
|
||||||
|
glsl_sampler_type(GLSL_SAMPLER_DIM_2D, false, false, GLSL_TYPE_FLOAT);
|
||||||
|
|
||||||
|
if (!state->tex) {
|
||||||
|
state->tex =
|
||||||
|
nir_variable_create(b->shader, nir_var_uniform, sampler2D, "drawpix");
|
||||||
|
state->tex->data.binding = state->options->drawpix_sampler;
|
||||||
|
}
|
||||||
|
|
||||||
/* replace load_var(gl_Color) w/ texture sample:
|
/* replace load_var(gl_Color) w/ texture sample:
|
||||||
* TEX def, texcoord, drawpix_sampler, 2D
|
* TEX def, texcoord, drawpix_sampler, 2D
|
||||||
*/
|
*/
|
||||||
|
@ -151,6 +160,12 @@ lower_color(lower_drawpixels_state *state, nir_intrinsic_instr *intr)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->options->pixel_maps) {
|
if (state->options->pixel_maps) {
|
||||||
|
if (!state->pixelmap) {
|
||||||
|
state->pixelmap = nir_variable_create(b->shader, nir_var_uniform,
|
||||||
|
sampler2D, "pixelmap");
|
||||||
|
state->pixelmap->data.binding = state->options->pixelmap_sampler;
|
||||||
|
}
|
||||||
|
|
||||||
/* do four pixel map look-ups with two TEX instructions: */
|
/* do four pixel map look-ups with two TEX instructions: */
|
||||||
nir_ssa_def *def_xy, *def_zw;
|
nir_ssa_def *def_xy, *def_zw;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue