Re: [Mesa-dev] [PATCH V2 18/22] i965: take the target into account for Gen7 MSAA modes

2013-02-06 Thread Paul Berry
On 4 February 2013 21:48, Chris Forbes  wrote:

> Gen7 has an erratum affecting the ld_mcs message, making it unsafe to
> use when the surface doesn't have an associated MCS.
>

Would you mind quoting the exact text of the erratum here (and citing the
page number)?

With that addition, this patch is:

Reviewed-by: Paul Berry 


>
> To allow the shader to treat all surfaces uniformly, force UMS if the
> surface is to be used as a multisample texture, even if CMS would have
> been possible.
>
> Signed-off-by: Chris Forbes 
> ---
>  src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 15 ---
>  1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
> b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
> index e68285c..be13c07 100644
> --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
> +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
> @@ -72,7 +72,7 @@ target_to_target(GLenum target)
>   * created, based on the chip generation and the surface type.
>   */
>  static enum intel_msaa_layout
> -compute_msaa_layout(struct intel_context *intel, gl_format format)
> +compute_msaa_layout(struct intel_context *intel, gl_format format, GLenum
> target)
>  {
> /* Prior to Gen7, all MSAA surfaces used IMS layout. */
> if (intel->gen < 7)
> @@ -101,7 +101,16 @@ compute_msaa_layout(struct intel_context *intel,
> gl_format format)
>   assert(intel->gen == 7);
>   return INTEL_MSAA_LAYOUT_UMS;
>} else {
> - return INTEL_MSAA_LAYOUT_CMS;
> + /* For now, if we're going to be texturing from this surface,
> +  * force UMS, so that the shader doesn't have to do different
> things
> +  * based on whether there's a multisample control surface
> needing sampled first.
> +  */
> + if (target == GL_TEXTURE_2D_MULTISAMPLE ||
> +   target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) {
> +return INTEL_MSAA_LAYOUT_UMS;
> + } else {
> +return INTEL_MSAA_LAYOUT_CMS;
> + }
>}
> }
>  }
> @@ -150,7 +159,7 @@ intel_miptree_create_layout(struct intel_context
> *intel,
>
> if (num_samples > 1) {
>/* Adjust width/height/depth for MSAA */
> -  mt->msaa_layout = compute_msaa_layout(intel, format);
> +  mt->msaa_layout = compute_msaa_layout(intel, format, mt->target);
>if (mt->msaa_layout == INTEL_MSAA_LAYOUT_IMS) {
>   /* In the Sandy Bridge PRM, volume 4, part 1, page 31, it says:
>*
> --
> 1.8.1.2
>
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH V2 18/22] i965: take the target into account for Gen7 MSAA modes

2013-02-04 Thread Chris Forbes
Gen7 has an erratum affecting the ld_mcs message, making it unsafe to
use when the surface doesn't have an associated MCS.

To allow the shader to treat all surfaces uniformly, force UMS if the
surface is to be used as a multisample texture, even if CMS would have
been possible.

Signed-off-by: Chris Forbes 
---
 src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 15 ---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c 
b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
index e68285c..be13c07 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
@@ -72,7 +72,7 @@ target_to_target(GLenum target)
  * created, based on the chip generation and the surface type.
  */
 static enum intel_msaa_layout
-compute_msaa_layout(struct intel_context *intel, gl_format format)
+compute_msaa_layout(struct intel_context *intel, gl_format format, GLenum 
target)
 {
/* Prior to Gen7, all MSAA surfaces used IMS layout. */
if (intel->gen < 7)
@@ -101,7 +101,16 @@ compute_msaa_layout(struct intel_context *intel, gl_format 
format)
  assert(intel->gen == 7);
  return INTEL_MSAA_LAYOUT_UMS;
   } else {
- return INTEL_MSAA_LAYOUT_CMS;
+ /* For now, if we're going to be texturing from this surface,
+  * force UMS, so that the shader doesn't have to do different things
+  * based on whether there's a multisample control surface needing 
sampled first.
+  */
+ if (target == GL_TEXTURE_2D_MULTISAMPLE ||
+   target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) {
+return INTEL_MSAA_LAYOUT_UMS;
+ } else {
+return INTEL_MSAA_LAYOUT_CMS;
+ }
   }
}
 }
@@ -150,7 +159,7 @@ intel_miptree_create_layout(struct intel_context *intel,
 
if (num_samples > 1) {
   /* Adjust width/height/depth for MSAA */
-  mt->msaa_layout = compute_msaa_layout(intel, format);
+  mt->msaa_layout = compute_msaa_layout(intel, format, mt->target);
   if (mt->msaa_layout == INTEL_MSAA_LAYOUT_IMS) {
  /* In the Sandy Bridge PRM, volume 4, part 1, page 31, it says:
   *
-- 
1.8.1.2

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