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
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.
*/
#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)); \
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;
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;
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
/* 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.
*/
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);
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