[Mesa-dev] Fwd: Re: [PATCH 28/29] nir: add a pass for lowering (un)pack_double_2x32

Samuel Iglesias Gonsálvez siglesias at igalia.com
Mon Mar 21 13:36:20 UTC 2016


I forward this message to the mailing list after getting Michael's consent.

I am going to remove locally the Authors clause from the copyright
header and look for similar cases in the rest of patches.

Thanks a lot, Michael!

Sam

-------- Forwarded Message --------
Subject: Re: [Mesa-dev] [PATCH 28/29] nir: add a pass for lowering
(un)pack_double_2x32
Date: Mon, 21 Mar 2016 14:22:01 +0100
From: Michael Schellenberger Costa <mschellenbergercosta at googlemail.com>
To: Samuel Iglesias Gonsálvez <siglesias at igalia.com>

Hey Sam,

your right with the year, I didnt check that this is an old approach
from Connor.

As far as i remember this was the patch series regarding license:
https://lists.freedesktop.org/archives/mesa-dev/2015-August/092172.html
https://lists.freedesktop.org/archives/mesa-dev/2015-August/092244.html

Michael

Am 21.03.2016 um 14:10 schrieb Samuel Iglesias Gonsálvez:
> 
> Hello Michael,
> 
> On 21/03/16 13:40, Michael Schellenberger Costa wrote:
>> Hi Sam,
>>
>> some trivial style nitpicks in the license
>>
>> Am 21.03.2016 um 13:06 schrieb Samuel Iglesias Gonsálvez:
>>> From: Connor Abbott <connor.w.abbott at intel.com>
>>>
>>> v2: Undo unintended change to the signature of
>>>     nir_normalize_cubemap_coords (Iago).
>>>
>>> v3: Move to compiler/nir (Iago)
>>>
>>> Signed-off-by: Iago Toral Quiroga <itoral at igalia.com>
>>> ---
>>>  src/compiler/Makefile.sources               |   1 +
>>>  src/compiler/glsl/Makefile.sources          |   1 +
>>>  src/compiler/nir/Makefile.sources           |   1 +
>>>  src/compiler/nir/nir.h                      |   2 +
>>>  src/compiler/nir/nir_lower_double_packing.c | 109 ++++++++++++++++++++++++++++
>>>  5 files changed, 114 insertions(+)
>>>  create mode 100644 src/compiler/nir/nir_lower_double_packing.c
>>>
>>> diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources
>>> index 9f3bcf0..988c7a3 100644
>>> --- a/src/compiler/Makefile.sources
>>> +++ b/src/compiler/Makefile.sources
>>> @@ -184,6 +184,7 @@ NIR_FILES = \
>>>  	nir/nir_lower_alu_to_scalar.c \
>>>  	nir/nir_lower_atomics.c \
>>>  	nir/nir_lower_clip.c \
>>> +	nir/nir_lower_double_packing.c \
>>>  	nir/nir_lower_global_vars_to_local.c \
>>>  	nir/nir_lower_gs_intrinsics.c \
>>>  	nir/nir_lower_load_const_to_scalar.c \
>>> diff --git a/src/compiler/glsl/Makefile.sources b/src/compiler/glsl/Makefile.sources
>>> index 08b40c5..6303d96 100644
>>> --- a/src/compiler/glsl/Makefile.sources
>>> +++ b/src/compiler/glsl/Makefile.sources
>>> @@ -38,6 +38,7 @@ NIR_FILES = \
>>>  	nir/nir_lower_alu_to_scalar.c \
>>>  	nir/nir_lower_atomics.c \
>>>  	nir/nir_lower_clip.c \
>>> +	nir/nir_lower_double_packing.c \
>>>  	nir/nir_lower_global_vars_to_local.c \
>>>  	nir/nir_lower_gs_intrinsics.c \
>>>  	nir/nir_lower_load_const_to_scalar.c \
>>> diff --git a/src/compiler/nir/Makefile.sources b/src/compiler/nir/Makefile.sources
>>> index f31547b..766693e 100644
>>> --- a/src/compiler/nir/Makefile.sources
>>> +++ b/src/compiler/nir/Makefile.sources
>>> @@ -28,6 +28,7 @@ NIR_FILES = \
>>>  	nir_lower_alu_to_scalar.c \
>>>  	nir_lower_atomics.c \
>>>  	nir_lower_clip.c \
>>> +	nir_lower_double_packing.c \
>>>  	nir_lower_global_vars_to_local.c \
>>>  	nir_lower_gs_intrinsics.c \
>>>  	nir_lower_load_const_to_scalar.c \
>>> diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
>>> index 36f90fc..49de964 100644
>>> --- a/src/compiler/nir/nir.h
>>> +++ b/src/compiler/nir/nir.h
>>> @@ -2214,6 +2214,8 @@ void nir_lower_to_source_mods(nir_shader *shader);
>>>  
>>>  bool nir_lower_gs_intrinsics(nir_shader *shader);
>>>  
>>> +void nir_lower_double_pack(nir_shader *shader);
>>> +
>>>  bool nir_normalize_cubemap_coords(nir_shader *shader);
>>>  
>>>  void nir_live_ssa_defs_impl(nir_function_impl *impl);
>>> diff --git a/src/compiler/nir/nir_lower_double_packing.c b/src/compiler/nir/nir_lower_double_packing.c
>>> new file mode 100644
>>> index 0000000..5f6707c
>>> --- /dev/null
>>> +++ b/src/compiler/nir/nir_lower_double_packing.c
>>> @@ -0,0 +1,109 @@
>>> +/*
>>> + * Copyright © 2015 Intel Corporation
>> 2016?
> 
> 
> Actually this patch was developed in 2015. So unless we want to update
> it to the year where this code is pushed to master, I'd rather keep it
> as it is.
> 
>>> + *
>>> + * Permission is hereby granted, free of charge, to any person obtaining a
>>> + * copy of this software and associated documentation files (the "Software"),
>>> + * to deal in the Software without restriction, including without limitation
>>> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
>>> + * and/or sell copies of the Software, and to permit persons to whom the
>>> + * Software is furnished to do so, subject to the following conditions:
>>> + *
>>> + * The above copyright notice and this permission notice (including the next
>>> + * paragraph) shall be included in all copies or substantial portions of the
>>> + * Software.
>>> + *
>>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
>>> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>>> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
>>> + * IN THE SOFTWARE.
>>> + *
>>> + * Authors:
>>> + *    Connor Abbott (cwabbott0 at gmail.com)
>>> + *
>> There was a discussion in the mailing list, that Authors should be
>> removed, as it is accessible through git.
> 
> Oh, I did not know. Can you point me to the thread? I would like to
> verify it. If this is the case, I will fix it locally.
> 
> Thanks! :-)
> 
> Sam
> 
> P.S: You sent me the email privately right? Once we confirm the
> authors change, Would you mind if I forward my reply to the mailing
> list? I would like to notify any interested party about each change I
> do, even if they are minor.
> 
> 
>> --Michael
>>
>>> + */
>>> +
>>> +#include "nir.h"
>>> +#include "nir_builder.h"
>>> +
>>> +/*
>>> + * lowers:
>>> + *
>>> + * packDouble2x32(foo) -> packDouble2x32Split(foo.x, foo.y)
>>> + * unpackDouble2x32(foo) -> vec2(unpackDouble2x32_x(foo), unpackDouble2x32_y(foo))
>>> + */
>>> +
>>> +static nir_ssa_def *
>>> +component(nir_builder *b, nir_ssa_def *src, unsigned component)
>>> +{
>>> +   return nir_swizzle(b, src, (unsigned[]) {component}, 1, true);
>>> +}
>>> +
>>> +static nir_ssa_def *
>>> +lower_pack_double(nir_builder *b, nir_ssa_def *src)
>>> +{
>>> +   return nir_pack_double_2x32_split(b, component(b, src, 0),
>>> +                                        component(b, src, 1));
>>> +}
>>> +
>>> +static nir_ssa_def *
>>> +lower_unpack_double(nir_builder *b, nir_ssa_def *src)
>>> +{
>>> +   return nir_vec2(b, nir_unpack_double_2x32_split_x(b, src),
>>> +                      nir_unpack_double_2x32_split_y(b, src));
>>> +}
>>> +
>>> +static void
>>> +lower_double_pack_instr(nir_alu_instr *instr)
>>> +{
>>> +   if (instr->op != nir_op_pack_double_2x32 &&
>>> +       instr->op != nir_op_unpack_double_2x32)
>>> +      return;
>>> +
>>> +   nir_builder b;
>>> +   nir_builder_init(&b, nir_cf_node_get_function(&instr->instr.block->cf_node));
>>> +   b.cursor = nir_before_instr(&instr->instr);
>>> +
>>> +   nir_ssa_def *src = nir_fmov_alu(&b, instr->src[0],
>>> +                                   nir_op_infos[instr->op].input_sizes[0]);
>>> +   nir_ssa_def *dest =
>>> +      instr->op == nir_op_pack_double_2x32 ?
>>> +      lower_pack_double(&b, src) :
>>> +      lower_unpack_double(&b, src);
>>> +
>>> +   nir_ssa_def_rewrite_uses(&instr->dest.dest.ssa, nir_src_for_ssa(dest));
>>> +   nir_instr_remove(&instr->instr);
>>> +}
>>> +
>>> +static bool
>>> +lower_double_pack_block(nir_block *block, void *ctx)
>>> +{
>>> +   (void) ctx;
>>> +
>>> +   nir_foreach_instr_safe(block, instr) {
>>> +      if (instr->type != nir_instr_type_alu)
>>> +         continue;
>>> +
>>> +      lower_double_pack_instr(nir_instr_as_alu(instr));
>>> +   }
>>> +
>>> +   return true;
>>> +}
>>> +
>>> +static void
>>> +lower_double_pack_impl(nir_function_impl *impl)
>>> +{
>>> +   nir_foreach_block(impl, lower_double_pack_block, NULL);
>>> +}
>>> +
>>> +void
>>> +nir_lower_double_pack(nir_shader *shader)
>>> +{
>>> +   nir_foreach_function(shader, function) {
>>> +      if (function->impl)
>>> +         lower_double_pack_impl(function->impl);
>>> +   }
>>> +}
>>> +
>>>
>>





More information about the mesa-dev mailing list