Initially TGSI used to be an union of all possible opcodes (NV/ARB fp/vp, Mesa 
IR, D3D Shader Model 1.x, 2.x, more recently D3D10).

But in practice it's just too much of a hassle, and many of the opcodes were 
never handled or generated. Many received little to no testing.

Particularly when implementing drivers for modern hardware that doesn't have 
opcodes to match with the Shader Model 1.x and 2.x quirky semantics, they are 
distractions.  Furthermore the apps who used to generate them are simple by 
nowadays standards and run fine on fast modern hardware.

By having a smaller set of opcodes they can be tested more easily, so one can 
have more confidence that they do actually work as intended; and developing 
analysis/optimization/transformation passes becomes easier too.


But I have no definite answer on which should or not be in TGSI.  D3D10/11 
assembly is not a bad reference, but it has some omissions   It's a matter of 
deciding on case by case..

Jose

________________________________________
From: ibmir...@gmail.com <ibmir...@gmail.com> on behalf of Ilia Mirkin 
<imir...@alum.mit.edu>
Sent: 13 November 2014 17:13
To: Marek Olšák
Cc: Jose Fonseca; Eric Anholt; mesa-dev@lists.freedesktop.org
Subject: Re: [Mesa-dev] Removing unused opcodes (TGSI, Mesa IR)

As long as we have NAND, pretty much anything can be lowered to
that... I am, of course, not advocating keeping around every insane
instruction, but it does seem a bit arbitrary as to which ones we have
and which ones we don't... I am personally guilty of adding a bunch,
and it was never clear to me how much should be left to the backend
optimizer to un-lower and how much should be done as separate
instructions.

My take was that as long there was a state tracker providing it as
input, it made sense to keep the instruction. But perhaps there's a
different policy that'd work better.

Cheers,

  -ilia


On Thu, Nov 13, 2014 at 11:40 AM, Marek Olšák <mar...@gmail.com> wrote:
> Nine can lower ARR into ROUND+ARL easily.
>
> Marek
>
> On Thu, Nov 13, 2014 at 3:33 PM, Jose Fonseca <jfons...@vmware.com> wrote:
>> It looks like ARR is generated, as 
>> src/gallium/state_trackers/nine/nine_shader.c has
>>
>> #define _OPI(o,t,vv1,vv2,pv1,pv2,d,s,h) \
>>     { D3DSIO_##o, TGSI_OPCODE_##t, { vv1, vv2 }, { pv1, pv2, }, d, s, h }
>>
>> [...]
>>
>>   _OPI(MOVA, ARR, V(2,0), V(3,0), V(0,0), V(0,0), 1, 1, NULL),
>>
>>
>> Jose
>>
>> ________________________________________
>> From: mesa-dev <mesa-dev-boun...@lists.freedesktop.org> on behalf of Eric 
>> Anholt <e...@anholt.net>
>> Sent: 13 November 2014 01:43
>> To: Ilia Mirkin
>> Cc: mesa-dev@lists.freedesktop.org
>> Subject: Re: [Mesa-dev] Removing unused opcodes (TGSI, Mesa IR)
>>
>> Ilia Mirkin <imir...@alum.mit.edu> writes:
>>
>>> AFAIK at least some of these (NRM, ARR, probably others) were being used by
>>> the d3d9 state tracker. Not sure what its status is, but I believe the hope
>>> was to eventually get it into the tree.
>>
>> They've got code for lowering NRM and CND to sanity, and no use of ARR,
>> ARA, X2D, RFL, STR, SFL, or BRA.
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev@lists.freedesktop.org
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=AAIFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=j854NOxlaV5nq8kWcima4dP_7hhtaOc2Uj1eJJzZOUM&s=51MpEXASrETyaVvEjR8y1V-NPHxlTTfeHhX4Bb8TgKE&e=
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to