<div dir="ltr">I'll throw together a patch to make nir_src_copy take pointers to keep things consistent.<br><br>Reviewed-by: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 22, 2015 at 11:08 AM, Eric Anholt <span dir="ltr"><<a href="mailto:eric@anholt.net" target="_blank">eric@anholt.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> writes:<br>
<br>
> On Wed, Jan 21, 2015 at 5:26 PM, Eric Anholt <<a href="mailto:eric@anholt.net">eric@anholt.net</a>> wrote:<br>
><br>
>> There aren't many users yet, but I wanted to do this from my scalarizing<br>
>> pass.<br>
>> ---<br>
>>  src/glsl/nir/nir.c                     | 18 ++++++++++++++++++<br>
>>  src/glsl/nir/nir.h                     |  5 ++++-<br>
>>  src/glsl/nir/nir_lower_vec_to_movs.c   |  7 ++-----<br>
>>  src/glsl/nir/nir_opt_peephole_select.c |  5 +----<br>
>>  4 files changed, 25 insertions(+), 10 deletions(-)<br>
>><br>
>> diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c<br>
>> index 16ad2da..e414df9 100644<br>
>> --- a/src/glsl/nir/nir.c<br>
>> +++ b/src/glsl/nir/nir.c<br>
>> @@ -175,6 +175,24 @@ nir_dest nir_dest_copy(nir_dest dest, void *mem_ctx)<br>
>>     return ret;<br>
>>  }<br>
>><br>
>> +void<br>
>> +nir_alu_src_copy(nir_alu_src *dest, nir_alu_src *src, void *mem_ctx)<br>
>> +{<br>
>><br>
><br>
> We already have nir_src_copy which returns a nir_src instead of taking a<br>
> pointer.  TBH, I'm not sure which I prefer, but it would be good to be<br>
> consistent.  Thoughts?<br>
<br>
</span>Yeah, I was thinking that as the struct gets bigger, passing it around<br>
on the stack gets worse.  For API consistency, I think that would mean<br>
pointers for both.<br>
<span class=""><br>
>> diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h<br>
>> index 8dc5222..7f0aa36 100644<br>
>> --- a/src/glsl/nir/nir.h<br>
>> +++ b/src/glsl/nir/nir.h<br>
>> @@ -569,7 +569,10 @@ typedef struct {<br>
>>     unsigned write_mask : 4; /* ignored if dest.is_ssa is true */<br>
>>  } nir_alu_dest;<br>
>><br>
>> -#define OPCODE(name, num_inputs, output_size, output_type, \<br>
>> +void nir_alu_src_copy(nir_alu_src *dest, nir_alu_src *src, void *mem_ctx);<br>
>> +void nir_alu_dest_copy(nir_alu_dest *dest, nir_alu_dest *src, void<br>
>> *mem_ctx);<br>
>> +<br>
>> +#define OPCODE(name, num_inputs, output_size, output_type,      \<br>
>><br>
><br>
> Accidental whitespace change?<br>
<br>
</span>Not sure how that happened, will fix.<br>
</blockquote></div><br></div>