summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Kocialkowski <paul.kocialkowski@bootlin.com>2018-12-28 11:18:19 +0100
committerPaul Kocialkowski <paul.kocialkowski@bootlin.com>2019-02-26 09:45:54 +0100
commit9f9e7c4213b1696c7f7b143d32b2bccebd0a8245 (patch)
tree908560d4b407cbd42c2cd9e2f184a10a29cba7be
parent08c9cc0d3dc7bdea948af7e85200ad5f4460b937 (diff)
lib/igt_fb: Add support for VC4 SAND tiling modes
This introduces support for the VC4 SAND tiling modes, that take a specific parameter indicating their column height. This parameter acts as a height-based stride equivalent, that shall be equal or greater than the displayed height. The parameter is extracted and returned as tile height so that enough memory can be reserved for column heights containing extra padding. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
-rw-r--r--lib/igt_fb.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index bfb47622a..a02b36211 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -271,8 +271,12 @@ static const struct format_desc_struct *lookup_drm_format(uint32_t drm_format)
void igt_get_fb_tile_size(int fd, uint64_t tiling, int fb_bpp,
unsigned *width_ret, unsigned *height_ret)
{
- if (is_vc4_device(fd))
+ uint32_t vc4_tiling_param = 0;
+
+ if (is_vc4_device(fd)) {
+ vc4_tiling_param = fourcc_mod_broadcom_param(tiling);
tiling = fourcc_mod_broadcom_mod(tiling);
+ }
switch (tiling) {
case LOCAL_DRM_FORMAT_MOD_NONE:
@@ -332,6 +336,26 @@ void igt_get_fb_tile_size(int fd, uint64_t tiling, int fb_bpp,
*width_ret = 128;
*height_ret = 32;
break;
+ case DRM_FORMAT_MOD_BROADCOM_SAND32:
+ igt_require_vc4(fd);
+ *width_ret = 32;
+ *height_ret = vc4_tiling_param;
+ break;
+ case DRM_FORMAT_MOD_BROADCOM_SAND64:
+ igt_require_vc4(fd);
+ *width_ret = 64;
+ *height_ret = vc4_tiling_param;
+ break;
+ case DRM_FORMAT_MOD_BROADCOM_SAND128:
+ igt_require_vc4(fd);
+ *width_ret = 128;
+ *height_ret = vc4_tiling_param;
+ break;
+ case DRM_FORMAT_MOD_BROADCOM_SAND256:
+ igt_require_vc4(fd);
+ *width_ret = 256;
+ *height_ret = vc4_tiling_param;
+ break;
default:
igt_assert(false);
}