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[3] + SV_POSITION, I get "vs_5_0 output limit (32) exceeded, shader uses 33 outputs", but float4[28] works just fine. For indirect access I still get: error X3500: array reference cannot be used as an l-value; not natively addressable for struct IA2VS { float4 position : POSITION; float4 color : COLOR; }; struct VS2PS { float4 position : SV_POSITION; float4 color[2] : 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[0]; } > Roland _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev