On Thu, Sep 17, 2015 at 05:00:12PM +0100, Neil Roberts wrote: > The destination rectangle is now drawn at 4x4 the size and the shader > code to calculate the sample number is adjusted accordingly. > --- > src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c | 22 +++++++++++++++++----- > 1 file changed, 17 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c > b/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c > index cbbb919..4e9aa94 100644 > --- a/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c > +++ b/src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c > @@ -163,6 +163,13 @@ static const char *fs_tmpl = > " txl_coords.x = ((X & int(0xfff8)) >> 2) | (X & int(0x1));\n" > " txl_coords.y = ((Y & int(0xfffc)) >> 1) | (Y & int(0x1));\n" > " sample_index = (X & 0x4) | (Y & 0x2) | ((X & 0x2) >> 1);\n" > + " break;\n" > + " case 16:\n" > + " txl_coords.x = ((X & int(0xfff8)) >> 2) | (X & int(0x1));\n" > + " txl_coords.y = ((Y & int(0xfff8)) >> 2) | (Y & int(0x1));\n" > + " sample_index = (((Y & 0x4) << 1) | (X & 0x4) | (Y & 0x2) |\n" > + " ((X & 0x2) >> 1));\n" > + " break;\n" > " }\n" > "}\n" > "\n" > @@ -313,11 +320,16 @@ adjust_msaa(struct blit_dims *dims, int num_samples) > dims->dst_x0 *= 2; > dims->dst_x1 *= 2; > } else if (num_samples) { > - const int x_num_samples = num_samples / 2; > - dims->dst_x0 = ROUND_DOWN_TO(dims->dst_x0 * x_num_samples, > num_samples); > - dims->dst_y0 = ROUND_DOWN_TO(dims->dst_y0 * 2, 4); > - dims->dst_x1 = ALIGN(dims->dst_x1 * x_num_samples, num_samples); > - dims->dst_y1 = ALIGN(dims->dst_y1 * 2, 4); > + const int y_num_samples = num_samples >= 16 ? 4 : 2; > + const int x_num_samples = num_samples / y_num_samples; > + dims->dst_x0 = ROUND_DOWN_TO(dims->dst_x0 * x_num_samples, > + x_num_samples * 2); > + dims->dst_y0 = ROUND_DOWN_TO(dims->dst_y0 * y_num_samples, > + y_num_samples * 2); > + dims->dst_x1 = ALIGN(dims->dst_x1 * x_num_samples, > + x_num_samples * 2); > + dims->dst_y1 = ALIGN(dims->dst_y1 * y_num_samples, > + y_num_samples * 2); > } > } >
I am in the middle of implementing stencil blits for gen9+ with stencil_export. I think this goes away if we do that, right (since only MSAA 16x is gen9+ only)? BTW, I don't actually care to understand what's going on here, hopefully my acked-by is good enough... _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev