[Mesa-dev] [PATCH 07/22] i965/gen6: Surface state overrides for sampling w-tiled as y-tiled
Topi Pohjolainen
topi.pohjolainen at intel.com
Mon Jun 9 00:45:41 PDT 2014
Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index c9d9614..f3efdbc 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -122,6 +122,27 @@ brw_configure_w_tiled(const struct intel_mipmap_tree *mt,
if (is_render_target) {
*format = BRW_SURFACEFORMAT_R8_UINT;
+ } else {
+ /* Manual sampling of W-tiled surfaces reads one 2x2 pixel block at a
+ * time and the program extracts individual pixels/samples from the
+ * 32-bit integer "behind the scene". In case of msaa 2x2 blocks
+ * represent sample values for particular index - eight samples per
+ * pixel has two 2x2 blocks side-by-side and hence the surface is
+ * configured for 64-bit elements.
+ * This organization prevents the pixel dimensions given to the sampling
+ * engine from exceeding the maximum allowed.
+ */
+ switch (mt->num_samples) {
+ case 0:
+ case 4:
+ *width /= 4;
+ *format = BRW_SURFACEFORMAT_R32_UINT;
+ break;
+ case 8:
+ *width /= 8;
+ *format = BRW_SURFACEFORMAT_R32G32_UINT;
+ break;
+ }
}
}
--
1.8.3.1
More information about the mesa-dev
mailing list