nir/lower_tex: add lowering for texture gradient on cube maps
This is ported from the Intel lowering pass that we use with GLSL IR. The NIR pass only handles cube maps, not shadow samplers, which are also lowered for gen < 8 on Intel hardware. We will add support for that in a later patch, at which point we should be able to remove the GLSL IR lowering pass. v2: - added a helper to retrieve ddx/ddy parameters (Ken) - No need to make size.z=1.0, we are only using component x anyway (Iago) v3: - Get rid of the ddx/ddy helper and use nir_tex_instr_src_index instead (Ken, Eric) v4: - When emitting the textureLod operation, copy all texture parameters from the original textureGrad() (except for ddx/ddy) using a loop - Add a 'continue' statement if the lowering makes progress because it replaces the original texture instruction Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v3)
This commit is contained in:
@@ -2394,6 +2394,11 @@ typedef struct nir_lower_tex_options {
|
||||
* of the texture are lowered to linear.
|
||||
*/
|
||||
unsigned lower_srgb;
|
||||
|
||||
/**
|
||||
* If true, lower nir_texop_txd on cube maps with nir_texop_txl.
|
||||
*/
|
||||
bool lower_txd_cube_map;
|
||||
} nir_lower_tex_options;
|
||||
|
||||
bool nir_lower_tex(nir_shader *shader,
|
||||
|
Reference in New Issue
Block a user