mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
i965/miptree: Break miptree -> ISL tiling conversion into a helper
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
This commit is contained in:
parent
c30b7164b7
commit
6da8149601
2 changed files with 33 additions and 25 deletions
|
|
@ -3043,6 +3043,34 @@ get_isl_dim_layout(const struct gen_device_info *devinfo, uint32_t tiling,
|
|||
unreachable("Invalid texture target");
|
||||
}
|
||||
|
||||
enum isl_tiling
|
||||
intel_miptree_get_isl_tiling(const struct intel_mipmap_tree *mt)
|
||||
{
|
||||
if (mt->format == MESA_FORMAT_S_UINT8) {
|
||||
return ISL_TILING_W;
|
||||
} else {
|
||||
switch (mt->tiling) {
|
||||
case I915_TILING_NONE:
|
||||
return ISL_TILING_LINEAR;
|
||||
case I915_TILING_X:
|
||||
return ISL_TILING_X;
|
||||
case I915_TILING_Y:
|
||||
switch (mt->tr_mode) {
|
||||
case INTEL_MIPTREE_TRMODE_NONE:
|
||||
return ISL_TILING_Y0;
|
||||
case INTEL_MIPTREE_TRMODE_YF:
|
||||
return ISL_TILING_Yf;
|
||||
case INTEL_MIPTREE_TRMODE_YS:
|
||||
return ISL_TILING_Ys;
|
||||
default:
|
||||
unreachable("Invalid tiled resource mode");
|
||||
}
|
||||
default:
|
||||
unreachable("Invalid tiling mode");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
intel_miptree_get_isl_surf(struct brw_context *brw,
|
||||
const struct intel_mipmap_tree *mt,
|
||||
|
|
@ -3068,38 +3096,15 @@ intel_miptree_get_isl_surf(struct brw_context *brw,
|
|||
surf->msaa_layout = ISL_MSAA_LAYOUT_NONE;
|
||||
}
|
||||
|
||||
surf->tiling = intel_miptree_get_isl_tiling(mt);
|
||||
|
||||
if (mt->format == MESA_FORMAT_S_UINT8) {
|
||||
surf->tiling = ISL_TILING_W;
|
||||
/* The ISL definition of row_pitch matches the surface state pitch field
|
||||
* a bit better than intel_mipmap_tree. In particular, ISL incorporates
|
||||
* the factor of 2 for W-tiling in row_pitch.
|
||||
*/
|
||||
surf->row_pitch = 2 * mt->pitch;
|
||||
} else {
|
||||
switch (mt->tiling) {
|
||||
case I915_TILING_NONE:
|
||||
surf->tiling = ISL_TILING_LINEAR;
|
||||
break;
|
||||
case I915_TILING_X:
|
||||
surf->tiling = ISL_TILING_X;
|
||||
break;
|
||||
case I915_TILING_Y:
|
||||
switch (mt->tr_mode) {
|
||||
case INTEL_MIPTREE_TRMODE_NONE:
|
||||
surf->tiling = ISL_TILING_Y0;
|
||||
break;
|
||||
case INTEL_MIPTREE_TRMODE_YF:
|
||||
surf->tiling = ISL_TILING_Yf;
|
||||
break;
|
||||
case INTEL_MIPTREE_TRMODE_YS:
|
||||
surf->tiling = ISL_TILING_Ys;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
unreachable("Invalid tiling mode");
|
||||
}
|
||||
|
||||
surf->row_pitch = mt->pitch;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -813,6 +813,9 @@ enum isl_dim_layout
|
|||
get_isl_dim_layout(const struct gen_device_info *devinfo, uint32_t tiling,
|
||||
GLenum target);
|
||||
|
||||
enum isl_tiling
|
||||
intel_miptree_get_isl_tiling(const struct intel_mipmap_tree *mt);
|
||||
|
||||
void
|
||||
intel_miptree_get_isl_surf(struct brw_context *brw,
|
||||
const struct intel_mipmap_tree *mt,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue