On Fri, Dec 01, 2017 at 07:19:17PM +0200, kevin.rogo...@intel.com wrote: > From: Kevin Rogovin <kevin.rogo...@intel.com> > > This patch series implements a needed workaround for Gen9 for ASTC5x5 > sampler reads. The crux of the work around is to make sure that the > sampler does not read an ASTC5x5 texture and a surface with an auxilary > buffer without having a texture cache invalidate between such accesses.
The solution here is to store the types of read access (aux, astc5x5) into context. This information is then used for two purposes: 1) do extra tex cache flush when needed and specifically only when needed 2) resolve surfaces when undesired combination is about to be sampled Latter case could be addressed also with on-the-fly check in brw_predraw_resolve_inputs(). There one goes thru all the active textures for the next draw call and resolves when necessary. One could check for the undesired combination of textures there. I understand we would need to walk the textures twice, first to check for any occurences of one type and then for the other. This, however, would fit to the way we resolve other texture types and prevent from adding more things to check into the context. In the first case, if one didn't optimize, i.e., do the extra flush only when needed, one could instead check if ASTC5x5 texture is going to be sampled and flush before and after the draw call to be safe. This is not optimal but also code-wise that simple that I'd be curious to know how much the optimized flushing helps. I think the non-optimized cases should be doable also in Vulkan. Jason, what do you think? > > > Kevin Rogovin (5): > i965: define astc5x5 workaround infrastructure > i965: ASTC5x5 workaround logic for blorp > i965: set ASTC5x5 workaround texture type tracking on texture validate > i965: use ASTC5x5 workaround in brw_draw > i965: use ASTC5x5 workaround in brw_compute > > src/mesa/drivers/dri/i965/brw_compute.c | 6 +++ > src/mesa/drivers/dri/i965/brw_context.c | 63 > ++++++++++++++++++++++++ > src/mesa/drivers/dri/i965/brw_context.h | 23 +++++++++ > src/mesa/drivers/dri/i965/brw_draw.c | 6 +++ > src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 5 ++ > src/mesa/drivers/dri/i965/genX_blorp_exec.c | 5 ++ > src/mesa/drivers/dri/i965/intel_batchbuffer.c | 1 + > src/mesa/drivers/dri/i965/intel_tex_image.c | 16 ++++-- > src/mesa/drivers/dri/i965/intel_tex_validate.c | 13 +++++ > 9 files changed, 134 insertions(+), 4 deletions(-) > > -- > 2.14.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev