intel/compiler: add scale_factors to sampler_prog_key_data
Patch propagates given scale_factors to lowering options. Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -196,6 +196,9 @@ struct brw_sampler_prog_key_data {
|
|||||||
uint32_t yx_xuxv_image_mask;
|
uint32_t yx_xuxv_image_mask;
|
||||||
uint32_t xy_uxvx_image_mask;
|
uint32_t xy_uxvx_image_mask;
|
||||||
uint32_t ayuv_image_mask;
|
uint32_t ayuv_image_mask;
|
||||||
|
|
||||||
|
/* Scale factor for each texture. */
|
||||||
|
float scale_factors[32];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -964,6 +964,10 @@ brw_nir_apply_sampler_key(nir_shader *nir,
|
|||||||
tex_options.lower_xy_uxvx_external = key_tex->xy_uxvx_image_mask;
|
tex_options.lower_xy_uxvx_external = key_tex->xy_uxvx_image_mask;
|
||||||
tex_options.lower_ayuv_external = key_tex->ayuv_image_mask;
|
tex_options.lower_ayuv_external = key_tex->ayuv_image_mask;
|
||||||
|
|
||||||
|
/* Setup array of scaling factors for each texture. */
|
||||||
|
memcpy(&tex_options.scale_factors, &key_tex->scale_factors,
|
||||||
|
sizeof(tex_options.scale_factors));
|
||||||
|
|
||||||
if (nir_lower_tex(nir, &tex_options)) {
|
if (nir_lower_tex(nir, &tex_options)) {
|
||||||
nir_validate_shader(nir, "after nir_lower_tex");
|
nir_validate_shader(nir, "after nir_lower_tex");
|
||||||
nir = brw_nir_optimize(nir, compiler, is_scalar, false);
|
nir = brw_nir_optimize(nir, compiler, is_scalar, false);
|
||||||
|
@@ -309,6 +309,7 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
|
|||||||
const int s = u_bit_scan(&mask);
|
const int s = u_bit_scan(&mask);
|
||||||
|
|
||||||
key->swizzles[s] = SWIZZLE_NOOP;
|
key->swizzles[s] = SWIZZLE_NOOP;
|
||||||
|
key->scale_factors[s] = 0.0f;
|
||||||
|
|
||||||
int unit_id = prog->SamplerUnits[s];
|
int unit_id = prog->SamplerUnits[s];
|
||||||
const struct gl_texture_unit *unit = &ctx->Texture.Unit[unit_id];
|
const struct gl_texture_unit *unit = &ctx->Texture.Unit[unit_id];
|
||||||
|
Reference in New Issue
Block a user