mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
winsys/intel: test for and expose address swizzling
Without knowing whether addresses are swizzled or not, we cannot manipulate a tiled surface in CPU.
This commit is contained in:
parent
639d0f73c1
commit
5c9b69d259
2 changed files with 23 additions and 0 deletions
|
|
@ -584,6 +584,26 @@ get_param(struct intel_drm_winsys *drm_ws, int param, int *value)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
test_address_swizzling(struct intel_drm_winsys *drm_ws)
|
||||
{
|
||||
drm_intel_bo *bo;
|
||||
uint32_t tiling = I915_TILING_X, swizzle;
|
||||
unsigned long pitch;
|
||||
|
||||
bo = drm_intel_bo_alloc_tiled(drm_ws->bufmgr,
|
||||
"address swizzling test", 64, 64, 4, &tiling, &pitch, 0);
|
||||
if (bo) {
|
||||
drm_intel_bo_get_tiling(bo, &tiling, &swizzle);
|
||||
drm_intel_bo_unreference(bo);
|
||||
}
|
||||
else {
|
||||
swizzle = I915_BIT_6_SWIZZLE_NONE;
|
||||
}
|
||||
|
||||
return (swizzle != I915_BIT_6_SWIZZLE_NONE);
|
||||
}
|
||||
|
||||
static bool
|
||||
init_info(struct intel_drm_winsys *drm_ws)
|
||||
{
|
||||
|
|
@ -605,6 +625,8 @@ init_info(struct intel_drm_winsys *drm_ws)
|
|||
get_param(drm_ws, I915_PARAM_HAS_GEN7_SOL_RESET, &val);
|
||||
info->has_gen7_sol_reset = val;
|
||||
|
||||
info->has_address_swizzling = test_address_swizzling(drm_ws);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ struct intel_winsys_info {
|
|||
int devid;
|
||||
bool has_llc;
|
||||
bool has_gen7_sol_reset;
|
||||
bool has_address_swizzling;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue