intel/isl: Add support for setting component write disables

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
Jason Ekstrand 2017-05-12 23:12:12 -07:00
parent 8958355549
commit 332a5d7a3f
2 changed files with 26 additions and 0 deletions

View file

@ -589,6 +589,21 @@ typedef uint64_t isl_surf_usage_flags_t;
#define ISL_SURF_USAGE_CCS_BIT (1u << 15)
/** @} */
/**
* @defgroup Channel Mask
*
* These #define values are chosen to match the values of
* RENDER_SURFACE_STATE::Color Buffer Component Write Disables
*
* @{
*/
typedef uint8_t isl_channel_mask_t;
#define ISL_CHANNEL_BLUE_BIT (1 << 0)
#define ISL_CHANNEL_GREEN_BIT (1 << 1)
#define ISL_CHANNEL_RED_BIT (1 << 2)
#define ISL_CHANNEL_ALPHA_BIT (1 << 3)
/** @} */
/**
* @brief A channel select (also known as texture swizzle) value
*/
@ -1009,6 +1024,11 @@ struct isl_surf_fill_state_info {
*/
union isl_color_value clear_color;
/**
* Surface write disables for gen4-5
*/
isl_channel_mask_t write_disables;
/* Intra-tile offset */
uint16_t x_offset_sa, y_offset_sa;
};

View file

@ -256,6 +256,12 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
s.SurfaceFormat = info->view->format;
#if GEN_GEN <= 5
s.ColorBufferComponentWriteDisables = info->write_disables;
#else
assert(info->write_disables == 0);
#endif
#if GEN_IS_HASWELL
s.IntegerSurfaceFormat = isl_format_has_int_channel(s.SurfaceFormat);
#endif