intel/isl: Divide QPitch by 2 for 3-D stencil textures on SKL+
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
parent
00e79cec99
commit
c0b9776cd6
|
@ -173,7 +173,20 @@ get_qpitch(const struct isl_surf *surf)
|
|||
unreachable("Bad isl_surf_dim");
|
||||
case ISL_DIM_LAYOUT_GEN4_2D:
|
||||
if (GEN_GEN >= 9) {
|
||||
return isl_surf_get_array_pitch_el_rows(surf);
|
||||
if (surf->dim == ISL_SURF_DIM_3D && surf->tiling == ISL_TILING_W) {
|
||||
/* This is rather annoying and completely undocumented. It
|
||||
* appears that the hardware has a bug (or undocumented feature)
|
||||
* regarding stencil buffers most likely related to the way
|
||||
* W-tiling is handled as modified Y-tiling. If you bind a 3-D
|
||||
* stencil buffer normally, and use texelFetch on it, the z or
|
||||
* array index will get implicitly multiplied by 2 for no obvious
|
||||
* reason. The fix appears to be to divide qpitch by 2 for
|
||||
* W-tiled surfaces.
|
||||
*/
|
||||
return isl_surf_get_array_pitch_el_rows(surf) / 2;
|
||||
} else {
|
||||
return isl_surf_get_array_pitch_el_rows(surf);
|
||||
}
|
||||
} else {
|
||||
/* From the Broadwell PRM for RENDER_SURFACE_STATE.QPitch
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue