[Mesa-dev] Stream output

Alex Deucher alexdeucher at gmail.com
Mon Jun 7 12:19:25 PDT 2010


On Mon, Jun 7, 2010 at 2:53 PM, Corbin Simpson
<mostawesomedude at gmail.com> wrote:
> On Mon, Jun 7, 2010 at 11:43 AM, Zack Rusin <zackr at vmware.com> wrote:
>> Dear friends,
>>
>> I'm a long lost prince of Nigeria and I'm writing to you with an incredible business offer. I have this gallium-stream-output branch which is worth $10000000 and I'm going to send it your mesa/master account for free! All you have to do is review it (and send me $20 to cover my transaction costs).
>>
>> In case of a successful completion of this transaction you'll be able to indulge all your senses with a plethora of amazing new words_combined_with_underscores. Some of my personal favorites include:
>>
>> struct pipe_stream_output_state
>> {
>>   /**< number of the output buffer to insert each element into */
>>   int output_buffer[PIPE_MAX_SHADER_OUTPUTS];
>>   /**< which register to grab each output from */
>>   int register_index[PIPE_MAX_SHADER_OUTPUTS];
>>   /**< TGSI_WRITEMASK signifying which components to output */
>>   ubyte register_mask[PIPE_MAX_SHADER_OUTPUTS];
>>   /**< number of outputs */
>>   int num_outputs;
>>
>>   /**< stride for an entire vertex, only used if all output_buffers
>>    * are 0 */
>>   unsigned stride;
>> };
>>
>> which is the main stream output object and
>>
>> struct p_context {
>> ...
>>   void * (*create_stream_output_state)(struct pipe_context *,
>>                                        const struct pipe_stream_output_state *);
>>   void   (*bind_stream_output_state)(struct pipe_context *, void *);
>>   void   (*delete_stream_output_state)(struct pipe_context*, void*);
>>   void (*set_stream_output_buffers)(struct pipe_context *,
>>                                     struct pipe_resource **buffers,
>>                                     int *offsets, /*array of offsets
>>                                                     from the start of each
>>                                                     of the buffers */
>>                                     int num_buffers);
>> };
>>
>> There's also a short blurb about the whole thing in the official gallium docs, you can preview it at http://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/docs/source/context.rst?h=gallium-stream-out .
>> If you have any concerns please let me know.
>
> Ah, hello. I am going to university and working on a project. The
> project is in C# and Java but I think that your project is like mine.
> I would appreciate very much if you could email me the codes for your
> project. My name is Corbin and I am in university. I do have several
> questions though.
>
> This is for vert feedback, not render-to-VBO, correct? Do we have a
> list of HW that can do it? Is there a trivial way to emulate this on
> older HW, or should those chipsets just use Draw?

It's a DX10 feature.  R6xx+ class hardware can stream out.  See the
VGT_STRMOUT regs in the reg spec.  It basically dumps verts to a
buffer after the vertex shader and/or geometry shaders have run.

Alex

>
> Thank you very much for the docs. Looks good.
>
> ~ C.
>
> --
> When the facts change, I change my mind. What do you do, sir? ~ Keynes
>
> Corbin Simpson
> <MostAwesomeDude at gmail.com>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>


More information about the mesa-dev mailing list