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 <za...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev