[Mesa-dev] [PATCH 2/5] gallium: increase the number of available stream output decls

Christoph Bumiller e0425955 at student.tuwien.ac.at
Thu Apr 25 11:46:39 PDT 2013


On 25.04.2013 19:22, Roland Scheidegger wrote:
> Am 24.04.2013 00:58, schrieb Zack Rusin:
>> There can be more stream output decls than shader outputs because
>> individual components from them can be split and distributed
>> among different so buffers.
>>
>> Signed-off-by: Zack Rusin <zackr at vmware.com>
>> ---
>>  src/gallium/include/pipe/p_state.h |    3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
>> index c0b2bcd..5830dff 100644
>> --- a/src/gallium/include/pipe/p_state.h
>> +++ b/src/gallium/include/pipe/p_state.h
>> @@ -64,6 +64,7 @@ extern "C" {
>>  #define PIPE_MAX_SHADER_RESOURCES 32
>>  #define PIPE_MAX_TEXTURE_LEVELS   16
>>  #define PIPE_MAX_SO_BUFFERS        4
>> +#define PIPE_MAX_SO_OUTPUT_COMPONENT_COUNT 128
>>  
>>  
>>  struct pipe_reference
>> @@ -198,7 +199,7 @@ struct pipe_stream_output_info
>>        unsigned num_components:3;  /** 1 to 4 */
>>        unsigned output_buffer:3;   /**< 0 to PIPE_MAX_SO_BUFFERS */
>>        unsigned dst_offset:16;     /**< offset into the buffer in dwords */
>> -   } output[PIPE_MAX_SHADER_OUTPUTS];
>> +   } output[PIPE_MAX_SO_BUFFERS * PIPE_MAX_SO_OUTPUT_COMPONENT_COUNT];
>>  };
>>  
>>  
>>
> Are you sure this isn't overkill, that is if you have multiple buffers
> this really increases the total number of attributes you can output? I

Actually yes, we can output 4 * [0 to 128] components on >= Fermi.

It's getting a bit large though (2 KiB), so I'd probably switch to not
storing that whole struct for each shader then (in the driver) ...

> thought this merely allows you to distribute the same number to
> different buffers.
> Also I'm not quite convinced with the 128 number. It looks like d3d10
> has a limit of 64 components, and it seems like OpenGL would be happy
> with that as well.
>
> Roland
> _______________________________________________
> 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