Re: [Mesa-dev] [PATCH] i965: Add a better PRM citation for the IMS dimension mangling.

2015-01-29 Thread Chad Versace
On 01/29/2015 12:00 AM, Kenneth Graunke wrote:
> Paul originally had to reverse engineer these formulas based on the
> description about how the sampler works.  The description here is not
> the easiest to follow - especially given that it's from the Sandybridge
> era, when the hardware only did 4x multisampling.
> 
> Jordan and I recently found another part of the documentation where they
> simply state that IMS dimensions must be adjusted by a set of formulas.
> Quoting this section provides an easy to follow explanation for the
> code, including 2x/4x/8x/16x.
> 
> Signed-off-by: Kenneth Graunke 

Reviewed-by: Chad Versace 




signature.asc
Description: OpenPGP digital signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] i965: Add a better PRM citation for the IMS dimension mangling.

2015-01-29 Thread Kenneth Graunke
Paul originally had to reverse engineer these formulas based on the
description about how the sampler works.  The description here is not
the easiest to follow - especially given that it's from the Sandybridge
era, when the hardware only did 4x multisampling.

Jordan and I recently found another part of the documentation where they
simply state that IMS dimensions must be adjusted by a set of formulas.
Quoting this section provides an easy to follow explanation for the
code, including 2x/4x/8x/16x.

Signed-off-by: Kenneth Graunke 
---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 23 ++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 26e137d..9e79f6e 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -290,7 +290,28 @@ intel_miptree_create_layout(struct brw_context *brw,
   /* Adjust width/height/depth for MSAA */
   mt->msaa_layout = compute_msaa_layout(brw, format, mt->target);
   if (mt->msaa_layout == INTEL_MSAA_LAYOUT_IMS) {
- /* In the Sandy Bridge PRM, volume 4, part 1, page 31, it says:
+ /* From the Ivybridge PRM, Volume 1, Part 1, page 108:
+  * "If the surface is multisampled and it is a depth or stencil
+  *  surface or Multisampled Surface StorageFormat in SURFACE_STATE is
+  *  MSFMT_DEPTH_STENCIL, WL and HL must be adjusted as follows before
+  *  proceeding:
+  *
+  *  ++
+  *  | Num Multisamples |W_l = |H_l = |
+  *  ++
+  *  | 2| ceiling(W_l / 2) * 4 | H_l (no adjustment)  |
+  *  | 4| ceiling(W_l / 2) * 4 | ceiling(H_l / 2) * 4 |
+  *  | 8| ceiling(W_l / 2) * 8 | ceiling(H_l / 2) * 4 |
+  *  |16| ceiling(W_l / 2) * 8 | ceiling(H_l / 2) * 8 |
+  *  ++
+  * "
+  *
+  * Note that MSFMT_DEPTH_STENCIL just means the IMS (interleaved)
+  * format rather than UMS/CMS (array slices).  The Sandybridge PRM,
+  * Volume 1, Part 1, Page 111 has the same formula for 4x MSAA.
+  *
+  * Another more complicated explanation for these adjustments comes
+  * from the Sandybridge PRM, volume 4, part 1, page 31:
   *
   * "Any of the other messages (sample*, LOD, load4) used with a
   *  (4x) multisampled surface will in-effect sample a surface with
-- 
2.2.2

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev