#include <assert.h>
#include <stdlib.h>
-#include <drm_fourcc.h>
+#include "drm-uapi/drm_fourcc.h"
+#include "drm-uapi/i915_drm.h"
#include "isl.h"
-#include "common/gen_device_info.h"
+#include "dev/gen_device_info.h"
-struct isl_drm_modifier_info modifier_info[] = {
+uint32_t
+isl_tiling_to_i915_tiling(enum isl_tiling tiling)
+{
+ switch (tiling) {
+ case ISL_TILING_LINEAR:
+ return I915_TILING_NONE;
+
+ case ISL_TILING_X:
+ return I915_TILING_X;
+
+ case ISL_TILING_Y0:
+ return I915_TILING_Y;
+
+ case ISL_TILING_W:
+ case ISL_TILING_Yf:
+ case ISL_TILING_Ys:
+ case ISL_TILING_HIZ:
+ case ISL_TILING_CCS:
+ return I915_TILING_NONE;
+ }
+
+ unreachable("Invalid ISL tiling");
+}
+
+enum isl_tiling
+isl_tiling_from_i915_tiling(uint32_t tiling)
+{
+ switch (tiling) {
+ case I915_TILING_NONE:
+ return ISL_TILING_LINEAR;
+
+ case I915_TILING_X:
+ return ISL_TILING_X;
+
+ case I915_TILING_Y:
+ return ISL_TILING_Y0;
+ }
+
+ unreachable("Invalid i915 tiling");
+}
+
+static const struct isl_drm_modifier_info modifier_info[] = {
{
.modifier = DRM_FORMAT_MOD_NONE,
.name = "DRM_FORMAT_MOD_NONE",
.name = "I915_FORMAT_MOD_Y_TILED",
.tiling = ISL_TILING_Y0,
},
+ {
+ .modifier = I915_FORMAT_MOD_Y_TILED_CCS,
+ .name = "I915_FORMAT_MOD_Y_TILED_CCS",
+ .tiling = ISL_TILING_Y0,
+ .aux_usage = ISL_AUX_USAGE_CCS_E,
+ .supports_clear_color = false,
+ },
};
const struct isl_drm_modifier_info *