X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fintel%2Fblorp%2Fblorp_priv.h;h=b265362f9b1bc105420d17d3fd7fdb23db54b363;hb=bacae7221bf9b82520175fd7c8d1f5089096159d;hp=409c69d2332f30fef3d05a23ff6f98d58c6f9846;hpb=1ba2f05bc039a19768d893a8ffa98488697a7b20;p=mesa.git diff --git a/src/intel/blorp/blorp_priv.h b/src/intel/blorp/blorp_priv.h index 409c69d2332..b265362f9b1 100644 --- a/src/intel/blorp/blorp_priv.h +++ b/src/intel/blorp/blorp_priv.h @@ -27,7 +27,7 @@ #include #include "compiler/nir/nir.h" -#include "brw_compiler.h" +#include "compiler/brw_compiler.h" #include "blorp.h" @@ -71,6 +71,9 @@ 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); struct brw_blorp_coord_transform @@ -124,6 +127,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. */ @@ -179,6 +185,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 +195,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; @@ -201,6 +210,7 @@ enum blorp_shader_type { BLORP_SHADER_TYPE_BLIT, BLORP_SHADER_TYPE_CLEAR, BLORP_SHADER_TYPE_LAYER_OFFSET_VS, + BLORP_SHADER_TYPE_GEN4_SF, }; struct brw_blorp_blit_prog_key @@ -225,6 +235,12 @@ struct brw_blorp_blit_prog_key /* Actual MSAA layout used by the source image. */ enum isl_msaa_layout src_layout; + /* 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. */ @@ -239,6 +255,9 @@ struct brw_blorp_blit_prog_key /* Actual MSAA layout used by the destination image. */ enum isl_msaa_layout dst_layout; + /* Number of bits per channel in the destination image. */ + uint8_t dst_bpc; + /* Type of the data to be read from the texture (one of * nir_type_(int|uint|float)). */ @@ -315,7 +334,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); @@ -326,6 +345,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