[Mesa-dev] [PATCH 05/12] i965/fs: Switch from GLSL IR to NIR for un/packHalf2x16 lowering.
Matt Turner
mattst88 at gmail.com
Wed Jan 27 12:29:08 PST 2016
On Wed, Jan 27, 2016 at 5:22 AM, Iago Toral <itoral at igalia.com> wrote:
> I think it would be a good idea to change the shortlog so it is clear
> that we are only talking about the scalarization aspect. There is still
> GLSL IR lowering for un/packHalf2x16 that remains in use after this
> patch, as made clear by the last hunk in this patch.
Yes, I will do that.
> On Mon, 2016-01-25 at 15:18 -0800, Matt Turner wrote:
>> ---
>> src/mesa/drivers/dri/i965/brw_compiler.c | 2 ++
>> src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp | 4 ++++
>> src/mesa/drivers/dri/i965/brw_link.cpp | 12 +-----------
>> 3 files changed, 7 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/brw_compiler.c b/src/mesa/drivers/dri/i965/brw_compiler.c
>> index dbd5ad2..21fff1d 100644
>> --- a/src/mesa/drivers/dri/i965/brw_compiler.c
>> +++ b/src/mesa/drivers/dri/i965/brw_compiler.c
>> @@ -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 = {
>> diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
>> index 21f0b70..566257c 100644
>> --- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
>> @@ -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:
>
> This opcode is still being handled below as:
>
> ...
> case ir_unop_pack_half_2x16:
> ...
> unreachable("should have been lowered");
>
> so that should probably go away in this patch.
Well, it is still unreachable and we don't have a default case.
> Also, don't we need to do all this same stuff for the unpack opcode?
No, channel_expressions only handles operations that have a vector
source, and only the pack operation takes a vector source.
More information about the mesa-dev
mailing list