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

Roland Scheidegger sroland at vmware.com
Thu Apr 25 10:22:25 PDT 2013


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
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


More information about the mesa-dev mailing list