iris: Add iris_resource fields for aux surfaces
But without fast clears or HiZ per-level tracking just yet.
This commit is contained in:
@@ -196,12 +196,26 @@ iris_get_depth_stencil_resources(struct pipe_resource *res,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
iris_resource_disable_aux(struct iris_resource *res)
|
||||
{
|
||||
iris_bo_unreference(res->aux.bo);
|
||||
free(res->aux.state);
|
||||
|
||||
res->aux.usage = ISL_AUX_USAGE_NONE;
|
||||
res->aux.surf.size_B = 0;
|
||||
res->aux.bo = NULL;
|
||||
res->aux.state = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
iris_resource_destroy(struct pipe_screen *screen,
|
||||
struct pipe_resource *resource)
|
||||
{
|
||||
struct iris_resource *res = (struct iris_resource *)resource;
|
||||
|
||||
iris_resource_disable_aux(res);
|
||||
|
||||
iris_bo_unreference(res->bo);
|
||||
free(res);
|
||||
}
|
||||
|
@@ -67,6 +67,46 @@ struct iris_resource {
|
||||
* in the past. Only meaningful for PIPE_BUFFER; used for flushing.
|
||||
*/
|
||||
unsigned bind_history;
|
||||
|
||||
/**
|
||||
* Auxiliary buffer information (CCS, MCS, or HiZ).
|
||||
*/
|
||||
struct {
|
||||
/** The surface layout for the auxiliary buffer. */
|
||||
struct isl_surf surf;
|
||||
|
||||
/** The buffer object containing the auxiliary data. */
|
||||
struct iris_bo *bo;
|
||||
|
||||
/** Offset into 'bo' where the auxiliary surface starts. */
|
||||
uint32_t offset;
|
||||
|
||||
/**
|
||||
* \brief The type of auxiliary compression used by this resource.
|
||||
*
|
||||
* This describes the type of auxiliary compression that is intended to
|
||||
* be used by this resource. An aux usage of ISL_AUX_USAGE_NONE means
|
||||
* that auxiliary compression is permanently disabled. An aux usage
|
||||
* other than ISL_AUX_USAGE_NONE does not imply that auxiliary
|
||||
* compression will always be enabled for this surface.
|
||||
*/
|
||||
enum isl_aux_usage usage;
|
||||
|
||||
/**
|
||||
* A bitfield of ISL_AUX_* modes that might this resource might use.
|
||||
*
|
||||
* For example, a surface might use both CCS_E and CCS_D at times.
|
||||
*/
|
||||
unsigned possible_usages;
|
||||
|
||||
/**
|
||||
* \brief Maps miptree slices to their current aux state.
|
||||
*
|
||||
* This two-dimensional array is indexed as [level][layer] and stores an
|
||||
* aux state for each slice.
|
||||
*/
|
||||
enum isl_aux_state **state;
|
||||
} aux;
|
||||
};
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user