[Mesa-dev] [PATCH 1/4] gallium: Add support for multiple viewports
Roland Scheidegger
sroland at vmware.com
Thu May 23 14:02:24 PDT 2013
Am 23.05.2013 22:33, schrieb Zack Rusin:
> Gallium supported only a single viewport/scissor combination. This
> commit changes the interface to allow us to add support for multiple
> viewports/scissors.
>
> Signed-off-by: Zack Rusin <zackr at vmware.com>
> ---
> diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
> index d1130bc..eaaa043 100644
> --- a/src/gallium/include/pipe/p_context.h
> +++ b/src/gallium/include/pipe/p_context.h
> @@ -211,11 +211,13 @@ struct pipe_context {
> void (*set_polygon_stipple)( struct pipe_context *,
> const struct pipe_poly_stipple * );
>
> - void (*set_scissor_state)( struct pipe_context *,
> - const struct pipe_scissor_state * );
> + void (*set_scissor_states)( struct pipe_context *,
> + unsigned num_scissors,
> + const struct pipe_scissor_state * );
>
> - void (*set_viewport_state)( struct pipe_context *,
> - const struct pipe_viewport_state * );
> + void (*set_viewport_states)( struct pipe_context *,
> + unsigned num_viewports,
> + const struct pipe_viewport_state *);
>
> void (*set_fragment_sampler_views)(struct pipe_context *,
> unsigned num_views,
> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
> index bb86968..00f0a37 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -507,7 +507,8 @@ enum pipe_cap {
> PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER = 80,
> PIPE_CAP_QUERY_PIPELINE_STATISTICS = 81,
> PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK = 82,
> - PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE = 83
> + PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE = 83,
> + PIPE_CAP_MULTIPLE_VIEWPORTS = 84
Would it be better if this were PIPE_CAP_MAX_VIEWPORTS instead? Though I
guess there's no real need right now to support anything but 16 (as
that's needed by d3d10/11, and is the minimum supported value for GL,
though GL would allow for more), so I don't have a strong opinion on that.
Also please document that CAP bit.
> };
>
> #define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 (1 << 0)
> diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
> index 50de2d3..b33cf1d 100644
> --- a/src/gallium/include/pipe/p_shader_tokens.h
> +++ b/src/gallium/include/pipe/p_shader_tokens.h
> @@ -164,7 +164,8 @@ struct tgsi_declaration_interp
> #define TGSI_SEMANTIC_THREAD_ID 18 /**< block-relative id of the current thread */
> #define TGSI_SEMANTIC_TEXCOORD 19 /**< texture or sprite coordinates */
> #define TGSI_SEMANTIC_PCOORD 20 /**< point sprite coordinate */
> -#define TGSI_SEMANTIC_COUNT 21 /**< number of semantic values */
> +#define TGSI_SEMANTIC_VIEWPORT_INDEX 21 /**< viewport index */
> +#define TGSI_SEMANTIC_COUNT 22 /**< number of semantic values */
>
> struct tgsi_declaration_semantic
> {
> diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
> index 262078d..ff0aac7 100644
> --- a/src/gallium/include/pipe/p_state.h
> +++ b/src/gallium/include/pipe/p_state.h
> @@ -65,6 +65,7 @@ extern "C" {
> #define PIPE_MAX_TEXTURE_LEVELS 16
> #define PIPE_MAX_SO_BUFFERS 4
> #define PIPE_MAX_SO_OUTPUTS 64
> +#define PIPE_MAX_VIEWPORTS 16
>
>
> struct pipe_reference
Otherwise looks good to me.
Roland
More information about the mesa-dev
mailing list