i965/tiled_memcpy: avoid creating bswap32 if it exists as a macro (e.g. on FreeBSD)
[mesa.git] / src / intel / isl / isl_drm.c
index 8fccc40862f6367837613e2d4a4b47859b4e43dd..e7abe74778516fcd01f7a0a7bc366f4c93b8acbe 100644 (file)
 #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",
@@ -45,6 +87,13 @@ struct isl_drm_modifier_info modifier_info[] = {
       .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 *