On Sun, Mar 27, 2016 at 4:38 AM, Edward O'Callaghan <eocallag...@alterapraxis.com> wrote: > Using PIPE_FORMAT_NONE to indicate what MSAA modes are supported > with a framebuffer using no attachment. > > V.2: > Rewrite MSAA mode loop to be more general. > > Signed-off-by: Edward O'Callaghan <eocallag...@alterapraxis.com> > --- > src/mesa/state_tracker/st_atom_framebuffer.c | 52 > ++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c > b/src/mesa/state_tracker/st_atom_framebuffer.c > index ae883a2..14ff16d 100644 > --- a/src/mesa/state_tracker/st_atom_framebuffer.c > +++ b/src/mesa/state_tracker/st_atom_framebuffer.c > @@ -64,6 +64,47 @@ update_framebuffer_size(struct pipe_framebuffer_state > *framebuffer, > framebuffer->height = MIN2(framebuffer->height, surface->height); > } > > +/** > + * Round up the requested multisample count to the next supported sample > size. > + */ > +static unsigned > +framebuffer_quantize_num_samples(struct st_context *st, unsigned num_samples) > +{ > + struct pipe_context *pipe = st->pipe; > + struct pipe_screen *screen = pipe->screen; > + int quantized_samples = 0; > + bool msaa_mode_supported; > + unsigned msaa_mode; > + > + if (!num_samples) > + return 0; > + > + assert(screen); > + > + /* Assumes the highest supported MSAA is a power of 2 */ > + msaa_mode = util_next_power_of_two(st->ctx->Const.MaxFramebufferSamples); > + assert(!(num_samples > msaa_mode)); /* be safe from infinite loops */ > + > + for (; msaa_mode >= num_samples; msaa_mode = msaa_mode/2) { > + /** > + * For ARB_framebuffer_no_attachment, A format of > + * PIPE_FORMAT_NONE implies what number of samples is > + * supported for a framebuffer with no attachment. Thus the > + * drivers callback must be adjusted for this. > + */ > + msaa_mode_supported = screen->is_format_supported(screen, > + PIPE_FORMAT_NONE, PIPE_TEXTURE_2D, > + msaa_mode, PIPE_BIND_RENDER_TARGET); > + /** > + * Check if the MSAA mode that is higher than the requested > + * num_samples is supported, and if so returning it. > + */
This comment doesn't make any sense with the code that follows it. Also, you could just do: if (!screen->is_format_supported(...)) continue; quantized_samples = msaa_mode; .. to make it shorter. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev