i965/miptree: Add real support for HiZ
[mesa.git] / src / mesa / drivers / dri / i965 / brw_blorp.h
index 7aa67be12a3359de3b3d277bd9ea7ffa96a33b3e..076d26dba1a003061683c915ab89b2bb3568b1e5 100644 (file)
@@ -76,61 +76,13 @@ struct brw_blorp_surface_info
    struct isl_surf aux_surf;
    enum isl_aux_usage aux_usage;
 
-   /**
-    * The miplevel to use.
-    */
-   uint32_t level;
-
-   /**
-    * The 2D layer within the miplevel. Combined, level and layer define the
-    * 2D miptree slice to use.
-    *
-    * Note: if mt is a 2D multisample array texture on Gen7+ using
-    * INTEL_MSAA_LAYOUT_UMS or INTEL_MSAA_LAYOUT_CMS, layer is the physical
-    * layer holding sample 0.  So, for example, if mt->num_samples == 4, then
-    * logical layer n corresponds to layer == 4*n.
-    */
-   uint32_t layer;
-
-   /**
-    * Width of the miplevel to be used.  For surfaces using
-    * INTEL_MSAA_LAYOUT_IMS, this is measured in samples, not pixels.
-    */
-   uint32_t width;
-
-   /**
-    * Height of the miplevel to be used.  For surfaces using
-    * INTEL_MSAA_LAYOUT_IMS, this is measured in samples, not pixels.
-    */
-   uint32_t height;
+   struct isl_view view;
 
-   /**
-    * X offset within the surface to texture from (or render to).  For
-    * surfaces using INTEL_MSAA_LAYOUT_IMS, this is measured in samples, not
-    * pixels.
-    */
-   uint32_t x_offset;
-
-   /**
-    * Y offset within the surface to texture from (or render to).  For
-    * surfaces using INTEL_MSAA_LAYOUT_IMS, this is measured in samples, not
-    * pixels.
-    */
-   uint32_t y_offset;
-
-   /**
-    * Format that should be used when setting up the surface state for this
-    * surface.  Should correspond to one of the BRW_SURFACEFORMAT_* enums.
-    */
-   uint32_t brw_surfaceformat;
+   /* Z offset into a 3-D texture or slice of a 2-D array texture. */
+   uint32_t z_offset;
 
-   /**
-    * In order to support cases where RGBA format is backing client requested
-    * RGB, one needs to have means to force alpha channel to one when user
-    * requested RGB surface is used as blit source. This is possible by
-    * setting source swizzle for the texture surface.
-    */
-   int swizzle;
+   uint32_t bo_offset;
+   uint32_t tile_x_sa, tile_y_sa;
 };
 
 void
@@ -370,6 +322,12 @@ brw_blorp_compile_nir_shader(struct brw_context *brw, struct nir_shader *nir,
                              struct brw_blorp_prog_data *prog_data,
                              unsigned *program_size);
 
+void
+blorp_get_image_offset_sa(struct isl_device *dev, const struct isl_surf *surf,
+                          uint32_t level, uint32_t layer,
+                          uint32_t *x_offset_sa,
+                          uint32_t *y_offset_sa);
+
 uint32_t
 brw_blorp_emit_surface_state(struct brw_context *brw,
                              const struct brw_blorp_surface_info *surface,