ac/llvm: drop v4f32empty. (v2)
[mesa.git] / src / intel / blorp / blorp_priv.h
index c61ab08746d483c9b174d43cf40c4f82385a4787..c7d5d308da77bb69f23ef0012adb649245e9e8ac 100644 (file)
@@ -71,6 +71,14 @@ brw_blorp_surface_info_init(struct blorp_context *blorp,
                             const struct blorp_surf *surf,
                             unsigned int level, unsigned int layer,
                             enum isl_format format, bool is_render_target);
+void
+blorp_surf_convert_to_single_slice(const struct isl_device *isl_dev,
+                                   struct brw_blorp_surface_info *info);
+void
+blorp_surf_convert_to_uncompressed(const struct isl_device *isl_dev,
+                                   struct brw_blorp_surface_info *info,
+                                   uint32_t *x, uint32_t *y,
+                                   uint32_t *width, uint32_t *height);
 
 
 struct brw_blorp_coord_transform
@@ -124,6 +132,9 @@ struct brw_blorp_wm_inputs
    struct blorp_surf_offset src_offset;
    struct blorp_surf_offset dst_offset;
 
+   /* (1/width, 1/height) for the source surface */
+   float src_inv_size[2];
+
    /* Minimum layer setting works for all the textures types but texture_3d
     * for which the setting has no effect. Use the z-coordinate instead.
     */
@@ -136,7 +147,7 @@ struct brw_blorp_wm_inputs
 #define BLORP_CREATE_NIR_INPUT(shader, name, type) ({ \
    nir_variable *input = nir_variable_create((shader), nir_var_shader_in, \
                                              type, #name); \
-   if ((shader)->stage == MESA_SHADER_FRAGMENT) \
+   if ((shader)->info.stage == MESA_SHADER_FRAGMENT) \
       input->data.interpolation = INTERP_MODE_FLAT; \
    input->data.location = VARYING_SLOT_VAR0 + \
       offsetof(struct brw_blorp_wm_inputs, name) / (4 * sizeof(float)); \
@@ -179,6 +190,7 @@ struct blorp_params
    struct brw_blorp_surface_info src;
    struct brw_blorp_surface_info dst;
    enum blorp_hiz_op hiz_op;
+   bool full_surface_hiz_op;
    enum blorp_fast_clear_op fast_clear_op;
    bool color_write_disable[4];
    struct brw_blorp_wm_inputs wm_inputs;
@@ -188,6 +200,8 @@ struct blorp_params
    unsigned num_layers;
    uint32_t vs_prog_kernel;
    struct brw_vs_prog_data *vs_prog_data;
+   uint32_t sf_prog_kernel;
+   struct brw_sf_prog_data *sf_prog_data;
    uint32_t wm_prog_kernel;
    struct brw_wm_prog_data *wm_prog_data;
 
@@ -200,7 +214,9 @@ void blorp_params_init(struct blorp_params *params);
 enum blorp_shader_type {
    BLORP_SHADER_TYPE_BLIT,
    BLORP_SHADER_TYPE_CLEAR,
+   BLORP_SHADER_TYPE_MCS_PARTIAL_RESOLVE,
    BLORP_SHADER_TYPE_LAYER_OFFSET_VS,
+   BLORP_SHADER_TYPE_GEN4_SF,
 };
 
 struct brw_blorp_blit_prog_key
@@ -228,6 +244,9 @@ struct brw_blorp_blit_prog_key
    /* Number of bits per channel in the source image. */
    uint8_t src_bpc;
 
+   /* True if the source requires normalized coordinates */
+   bool src_coords_normalized;
+
    /* Number of samples per pixel that have been configured in the render
     * target.
     */
@@ -321,7 +340,7 @@ void brw_blorp_init_wm_prog_key(struct brw_wm_prog_key *wm_key);
 const unsigned *
 blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx,
                  struct nir_shader *nir,
-                 const struct brw_wm_prog_key *wm_key,
+                 struct brw_wm_prog_key *wm_key,
                  bool use_repclear,
                  struct brw_wm_prog_data *wm_prog_data,
                  unsigned *program_size);
@@ -332,6 +351,10 @@ blorp_compile_vs(struct blorp_context *blorp, void *mem_ctx,
                  struct brw_vs_prog_data *vs_prog_data,
                  unsigned *program_size);
 
+bool
+blorp_ensure_sf_program(struct blorp_context *blorp,
+                        struct blorp_params *params);
+
 /** \} */
 
 #ifdef __cplusplus