On Tue, Sep 16, 2014 at 12:29 PM, Marek Olšák <mar...@gmail.com> wrote: > On Tue, Sep 16, 2014 at 5:42 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: >> OK, so just to summarize: >> >> The approach suggested by Roland is to have the outputs be >> one-dimensional and only representing the current invocation's >> per-vertex outputs. Each invocation would also get access to other >> invocations' per-vertex outputs via a 2d input array. >> >> So a shader might look something like >> >> TESSC >> DECL IN[][0], POSITION (input patch's per-vertex position) >> DECL IN[][1], GENERIC (input patch's per-vertex generic attribute) >> DECL IN[][2], TCS_POSITION (output patch's per-vertex position) >> DECL IN[][3], TCS_OUTPUT (output patch's per-vertex generic attribute) >> DECL OUT[0], POSITION >> DECL OUT[1], GENERIC >> DECL OUT[2], PATCH >> >> And then anything written to OUT[0] would be aliased via IN[][2]. >> Roland, does that sound right? This seems kinda nasty that there are >> going to be 2 types of position/pointsize/clipdistance inputs -- do >> you have a better suggestion for handling that? > > The output-as-input arrays can be declared as system values (SV), then > you don't need to duplicate semantic names.
OK, that sounds reasonable. And what do you guys think about reading directly from per-patch outputs? Or should they also be mirrored as SV's? We definitely need something since it's shared between invocations and synchronizable using barrier. -ilia _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev