[Mesa-dev] [PATCH 03/11] st/mesa: implement GL_ATI_fragment_shader

Roland Scheidegger sroland at vmware.com
Wed Dec 16 15:16:36 PST 2015


Am 16.12.2015 um 23:40 schrieb Ilia Mirkin:
> On Tue, Dec 15, 2015 at 6:05 PM, Miklós Máté <mtmkls at gmail.com> wrote:
>> +   } else if (desc->special == 3) {
>> +      src[0] = args[0];
>> +      src[1] = args[1];
>> +      src[2] = ureg_swizzle(args[2],
>> +            TGSI_SWIZZLE_Z, TGSI_SWIZZLE_Z, TGSI_SWIZZLE_Z, TGSI_SWIZZLE_Z);
>> +      emit_insn(t, TGSI_OPCODE_DP2A, dst, 1, src, 3);
>> +   }
> 
> Not strictly your fault, but in practice, no backends actually
> implement DP2A. Not sure why -- i915, nv30, and r300 even have
> explicit ops for this. You can use DP2 + ADD. Or go around all the
> backends an implement it.
>
Well you know why: stuff not emitted by st/mesa tends to not get
implemented. And st/mesa didn't have a reason to emit it as all
extensions potentially using it weren't implemented by mesa (or at least
not, as here, supported by the state tracker).
I don't know if that's generally a useful enough instruction to have (I
suppose probably not, new hw probably doesn't care in any case if it was
dp2a or dp2 + add, and if this extension is the only source for it that
isn't much). That said, I suppose that's exactly the reason why the nine
state tracker implements this as DP2 + ADD too.

Though it's not entirely true that no backend implements it.
llvmpipe/softpipe/ilo/svga by the looks of it.

Roland



More information about the mesa-dev mailing list