[Mesa-dev] RFC: TGSI scalar arrays
sroland at vmware.com
Wed Mar 20 11:55:22 PDT 2013
Am 20.03.2013 19:09, schrieb Christoph Bumiller:
> On 20.03.2013 18:30, Roland Scheidegger wrote:
>> Am 20.03.2013 17:46, schrieb Christoph Bumiller:
>>> On 20.03.2013 17:05, Roland Scheidegger wrote:
>>>> Not sure I fully understand this, but I'm thinking "whenever in doubt,
>>>> use something close to what dx10 does" since that's likely going to work
>>>> reasonable with different hw. Maybe declaring those special values
>>>> differently (not just as output reg) would help?
>>> What DX10 does is making indirect access of varyings illegal. That's not
>>> possible with OpenGL ...
>> Hmm I thought dcl_indexRange would be used for indirect access of varyings?
> Interesting ... when last I tried that back when working on d3d1x, the
> compiler didn't like it, and I remember something about indexRange
> existing only for debugging (and I remember finding that strange).
> Also, d3d11 doesn't have the annoying limit that GLSL has so there is no
> need for it to pack varyings.
> When I use floats + SV_POSITION, I get "vs_5_0 output limit (32)
> exceeded, shader uses 33 outputs", but float4 works just fine.
> For indirect access I still get:
> error X3500: array reference cannot be used as an l-value; not natively
Hmm that's odd. On some quick look I couldn't find many examples using
it - and those I found it was used in hull shaders.
I can't see anything saying it shouldn't work at all though (it does
have some restrictions but they look reasonable to me).
> struct IA2VS
> float4 position : POSITION;
> float4 color : COLOR;
> struct VS2PS
> float4 position : SV_POSITION;
> float4 color : WHATEVER;
> VS2PS vs(IA2VS input)
> VS2PS result;
> int i = int(input.position.x);
> result.position = input.position;
> result.color[i] = input.color;
> return result;
> float4 ps(VS2PS input) : SV_TARGET
> return input.color;
More information about the mesa-dev