mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 09:30:11 +01:00
i965/fs: Switch from GLSL IR to NIR for un/packHalf2x16 scalarizing.
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
parent
9ce901058f
commit
1a53a4fc7a
3 changed files with 7 additions and 11 deletions
|
|
@ -86,6 +86,8 @@ shader_perf_log_mesa(void *data, const char *fmt, ...)
|
|||
|
||||
static const struct nir_shader_compiler_options scalar_nir_options = {
|
||||
COMMON_OPTIONS,
|
||||
.lower_pack_half_2x16 = true,
|
||||
.lower_unpack_half_2x16 = true,
|
||||
};
|
||||
|
||||
static const struct nir_shader_compiler_options vector_nir_options = {
|
||||
|
|
|
|||
|
|
@ -72,6 +72,9 @@ channel_expressions_predicate(ir_instruction *ir)
|
|||
return false;
|
||||
|
||||
switch (expr->operation) {
|
||||
case ir_unop_pack_half_2x16:
|
||||
return false;
|
||||
|
||||
/* these opcodes need to act on the whole vector,
|
||||
* just like texturing.
|
||||
*/
|
||||
|
|
@ -162,6 +165,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
|
|||
return visit_continue;
|
||||
|
||||
switch (expr->operation) {
|
||||
case ir_unop_pack_half_2x16:
|
||||
case ir_unop_interpolate_at_centroid:
|
||||
case ir_binop_interpolate_at_offset:
|
||||
case ir_binop_interpolate_at_sample:
|
||||
|
|
|
|||
|
|
@ -87,17 +87,7 @@ brw_lower_packing_builtins(struct brw_context *brw,
|
|||
| LOWER_PACK_SNORM_4x8;
|
||||
}
|
||||
|
||||
if (brw->gen >= 7) {
|
||||
/* Gen7 introduced the f32to16 and f16to32 instructions, which can be
|
||||
* used to execute packHalf2x16 and unpackHalf2x16. For AOS code, no
|
||||
* lowering is needed. For SOA code, the Half2x16 ops must be
|
||||
* scalarized.
|
||||
*/
|
||||
if (compiler->scalar_stage[shader_type]) {
|
||||
ops |= LOWER_PACK_HALF_2x16_TO_SPLIT
|
||||
| LOWER_UNPACK_HALF_2x16_TO_SPLIT;
|
||||
}
|
||||
} else {
|
||||
if (brw->gen < 7) {
|
||||
ops |= LOWER_PACK_HALF_2x16
|
||||
| LOWER_UNPACK_HALF_2x16;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue