Update XGL_FORMAT.
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 937db9a..e734b16 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -185,14 +185,14 @@
         region.imageExtent = Image::extent(info_.extent, lv);
 
         if (info_.usage & XGL_IMAGE_USAGE_DEPTH_STENCIL_BIT) {
-            if (info_.format.channelFormat != XGL_CH_FMT_R8) {
+            if (info_.format != XGL_FMT_S8_UINT) {
                 region.imageSubresource.aspect = XGL_IMAGE_ASPECT_DEPTH;
                 regions_.push_back(region);
             }
 
-            if (info_.format.channelFormat == XGL_CH_FMT_R16G8 ||
-                info_.format.channelFormat == XGL_CH_FMT_R32G8 ||
-                info_.format.channelFormat == XGL_CH_FMT_R8) {
+            if (info_.format == XGL_FMT_D16_UNORM_S8_UINT ||
+                info_.format == XGL_FMT_D32_SFLOAT_S8_UINT ||
+                info_.format == XGL_FMT_S8_UINT) {
                 region.imageSubresource.aspect = XGL_IMAGE_ASPECT_STENCIL;
                 regions_.push_back(region);
             }
@@ -389,48 +389,178 @@
     static const struct format_info {
         XGL_SIZE size;
         XGL_UINT channel_count;
-    } format_table[XGL_MAX_CH_FMT + 1] = {
-        [XGL_CH_FMT_UNDEFINED]      = { 0,  0 },
-        [XGL_CH_FMT_R4G4]           = { 1,  2 },
-        [XGL_CH_FMT_R4G4B4A4]       = { 2,  4 },
-        [XGL_CH_FMT_R5G6B5]         = { 2,  3 },
-        [XGL_CH_FMT_B5G6R5]         = { 2,  3 },
-        [XGL_CH_FMT_R5G5B5A1]       = { 2,  4 },
-        [XGL_CH_FMT_R8]             = { 1,  1 },
-        [XGL_CH_FMT_R8G8]           = { 2,  2 },
-        [XGL_CH_FMT_R8G8B8A8]       = { 4,  4 },
-        [XGL_CH_FMT_B8G8R8A8]       = { 4,  4 },
-        [XGL_CH_FMT_R10G11B11]      = { 4,  3 },
-        [XGL_CH_FMT_R11G11B10]      = { 4,  3 },
-        [XGL_CH_FMT_R10G10B10A2]    = { 4,  4 },
-        [XGL_CH_FMT_R16]            = { 2,  1 },
-        [XGL_CH_FMT_R16G16]         = { 4,  2 },
-        [XGL_CH_FMT_R16G16B16A16]   = { 8,  4 },
-        [XGL_CH_FMT_R32]            = { 4,  1 },
-        [XGL_CH_FMT_R32G32]         = { 8,  2 },
-        [XGL_CH_FMT_R32G32B32]      = { 12, 3 },
-        [XGL_CH_FMT_R32G32B32A32]   = { 16, 4 },
-        [XGL_CH_FMT_R16G8]          = { 3,  2 },
-        [XGL_CH_FMT_R32G8]          = { 5,  2 },
-        [XGL_CH_FMT_R9G9B9E5]       = { 4,  3 },
-        [XGL_CH_FMT_BC1]            = { 8,  4 },
-        [XGL_CH_FMT_BC2]            = { 16, 4 },
-        [XGL_CH_FMT_BC3]            = { 16, 4 },
-        [XGL_CH_FMT_BC4]            = { 8,  4 },
-        [XGL_CH_FMT_BC5]            = { 16, 4 },
-        [XGL_CH_FMT_BC6U]           = { 16, 4 },
-        [XGL_CH_FMT_BC6S]           = { 16, 4 },
-        [XGL_CH_FMT_BC7]            = { 16, 4 },
-        [XGL_CH_FMT_R8G8B8]         = { 3,  3 },
-        [XGL_CH_FMT_R16G16B16]      = { 6,  3 },
-        [XGL_CH_FMT_B10G10R10A2]    = { 4,  4 },
-        [XGL_CH_FMT_R64]            = { 8,  1 },
-        [XGL_CH_FMT_R64G64]         = { 16, 2 },
-        [XGL_CH_FMT_R64G64B64]      = { 24, 3 },
-        [XGL_CH_FMT_R64G64B64A64]   = { 32, 4 },
+    } format_table[XGL_NUM_FMT] = {
+        [XGL_FMT_UNDEFINED]            = { 0,  0 },
+        [XGL_FMT_R4G4_UNORM]           = { 1,  2 },
+        [XGL_FMT_R4G4_USCALED]         = { 1,  2 },
+        [XGL_FMT_R4G4B4A4_UNORM]       = { 2,  4 },
+        [XGL_FMT_R4G4B4A4_USCALED]     = { 2,  4 },
+        [XGL_FMT_R5G6B5_UNORM]         = { 2,  3 },
+        [XGL_FMT_R5G6B5_USCALED]       = { 2,  3 },
+        [XGL_FMT_R5G5B5A1_UNORM]       = { 2,  4 },
+        [XGL_FMT_R5G5B5A1_USCALED]     = { 2,  4 },
+        [XGL_FMT_R8_UNORM]             = { 1,  1 },
+        [XGL_FMT_R8_SNORM]             = { 1,  1 },
+        [XGL_FMT_R8_USCALED]           = { 1,  1 },
+        [XGL_FMT_R8_SSCALED]           = { 1,  1 },
+        [XGL_FMT_R8_UINT]              = { 1,  1 },
+        [XGL_FMT_R8_SINT]              = { 1,  1 },
+        [XGL_FMT_R8_SRGB]              = { 1,  1 },
+        [XGL_FMT_R8G8_UNORM]           = { 2,  2 },
+        [XGL_FMT_R8G8_SNORM]           = { 2,  2 },
+        [XGL_FMT_R8G8_USCALED]         = { 2,  2 },
+        [XGL_FMT_R8G8_SSCALED]         = { 2,  2 },
+        [XGL_FMT_R8G8_UINT]            = { 2,  2 },
+        [XGL_FMT_R8G8_SINT]            = { 2,  2 },
+        [XGL_FMT_R8G8_SRGB]            = { 2,  2 },
+        [XGL_FMT_R8G8B8_UNORM]         = { 3,  3 },
+        [XGL_FMT_R8G8B8_SNORM]         = { 3,  3 },
+        [XGL_FMT_R8G8B8_USCALED]       = { 3,  3 },
+        [XGL_FMT_R8G8B8_SSCALED]       = { 3,  3 },
+        [XGL_FMT_R8G8B8_UINT]          = { 3,  3 },
+        [XGL_FMT_R8G8B8_SINT]          = { 3,  3 },
+        [XGL_FMT_R8G8B8_SRGB]          = { 3,  3 },
+        [XGL_FMT_R8G8B8A8_UNORM]       = { 4,  4 },
+        [XGL_FMT_R8G8B8A8_SNORM]       = { 4,  4 },
+        [XGL_FMT_R8G8B8A8_USCALED]     = { 4,  4 },
+        [XGL_FMT_R8G8B8A8_SSCALED]     = { 4,  4 },
+        [XGL_FMT_R8G8B8A8_UINT]        = { 4,  4 },
+        [XGL_FMT_R8G8B8A8_SINT]        = { 4,  4 },
+        [XGL_FMT_R8G8B8A8_SRGB]        = { 4,  4 },
+        [XGL_FMT_R10G10B10A2_UNORM]    = { 4,  4 },
+        [XGL_FMT_R10G10B10A2_SNORM]    = { 4,  4 },
+        [XGL_FMT_R10G10B10A2_USCALED]  = { 4,  4 },
+        [XGL_FMT_R10G10B10A2_SSCALED]  = { 4,  4 },
+        [XGL_FMT_R10G10B10A2_UINT]     = { 4,  4 },
+        [XGL_FMT_R10G10B10A2_SINT]     = { 4,  4 },
+        [XGL_FMT_R16_UNORM]            = { 2,  1 },
+        [XGL_FMT_R16_SNORM]            = { 2,  1 },
+        [XGL_FMT_R16_USCALED]          = { 2,  1 },
+        [XGL_FMT_R16_SSCALED]          = { 2,  1 },
+        [XGL_FMT_R16_UINT]             = { 2,  1 },
+        [XGL_FMT_R16_SINT]             = { 2,  1 },
+        [XGL_FMT_R16_SFLOAT]           = { 2,  1 },
+        [XGL_FMT_R16G16_UNORM]         = { 4,  2 },
+        [XGL_FMT_R16G16_SNORM]         = { 4,  2 },
+        [XGL_FMT_R16G16_USCALED]       = { 4,  2 },
+        [XGL_FMT_R16G16_SSCALED]       = { 4,  2 },
+        [XGL_FMT_R16G16_UINT]          = { 4,  2 },
+        [XGL_FMT_R16G16_SINT]          = { 4,  2 },
+        [XGL_FMT_R16G16_SFLOAT]        = { 4,  2 },
+        [XGL_FMT_R16G16B16_UNORM]      = { 6,  3 },
+        [XGL_FMT_R16G16B16_SNORM]      = { 6,  3 },
+        [XGL_FMT_R16G16B16_USCALED]    = { 6,  3 },
+        [XGL_FMT_R16G16B16_SSCALED]    = { 6,  3 },
+        [XGL_FMT_R16G16B16_UINT]       = { 6,  3 },
+        [XGL_FMT_R16G16B16_SINT]       = { 6,  3 },
+        [XGL_FMT_R16G16B16_SFLOAT]     = { 6,  3 },
+        [XGL_FMT_R16G16B16A16_UNORM]   = { 8,  4 },
+        [XGL_FMT_R16G16B16A16_SNORM]   = { 8,  4 },
+        [XGL_FMT_R16G16B16A16_USCALED] = { 8,  4 },
+        [XGL_FMT_R16G16B16A16_SSCALED] = { 8,  4 },
+        [XGL_FMT_R16G16B16A16_UINT]    = { 8,  4 },
+        [XGL_FMT_R16G16B16A16_SINT]    = { 8,  4 },
+        [XGL_FMT_R16G16B16A16_SFLOAT]  = { 8,  4 },
+        [XGL_FMT_R32_UINT]             = { 4,  1 },
+        [XGL_FMT_R32_SINT]             = { 4,  1 },
+        [XGL_FMT_R32_SFLOAT]           = { 4,  1 },
+        [XGL_FMT_R32G32_UINT]          = { 8,  2 },
+        [XGL_FMT_R32G32_SINT]          = { 8,  2 },
+        [XGL_FMT_R32G32_SFLOAT]        = { 8,  2 },
+        [XGL_FMT_R32G32B32_UINT]       = { 12, 3 },
+        [XGL_FMT_R32G32B32_SINT]       = { 12, 3 },
+        [XGL_FMT_R32G32B32_SFLOAT]     = { 12, 3 },
+        [XGL_FMT_R32G32B32A32_UINT]    = { 16, 4 },
+        [XGL_FMT_R32G32B32A32_SINT]    = { 16, 4 },
+        [XGL_FMT_R32G32B32A32_SFLOAT]  = { 16, 4 },
+        [XGL_FMT_R64_SFLOAT]           = { 8,  1 },
+        [XGL_FMT_R64G64_SFLOAT]        = { 16, 2 },
+        [XGL_FMT_R64G64B64_SFLOAT]     = { 24, 3 },
+        [XGL_FMT_R64G64B64A64_SFLOAT]  = { 32, 4 },
+        [XGL_FMT_R11G11B10_UFLOAT]     = { 4,  3 },
+        [XGL_FMT_R9G9B9E5_UFLOAT]      = { 4,  3 },
+        [XGL_FMT_D16_UNORM]            = { 2,  1 },
+        [XGL_FMT_D24_UNORM]            = { 3,  1 },
+        [XGL_FMT_D32_SFLOAT]           = { 4,  1 },
+        [XGL_FMT_S8_UINT]              = { 1,  1 },
+        [XGL_FMT_D16_UNORM_S8_UINT]    = { 3,  2 },
+        [XGL_FMT_D24_UNORM_S8_UINT]    = { 4,  2 },
+        [XGL_FMT_D32_SFLOAT_S8_UINT]   = { 4,  2 },
+        [XGL_FMT_BC1_UNORM]            = { 8,  4 },
+        [XGL_FMT_BC1_SRGB]             = { 8,  4 },
+        [XGL_FMT_BC2_UNORM]            = { 16, 4 },
+        [XGL_FMT_BC2_SRGB]             = { 16, 4 },
+        [XGL_FMT_BC3_UNORM]            = { 16, 4 },
+        [XGL_FMT_BC3_SRGB]             = { 16, 4 },
+        [XGL_FMT_BC4_UNORM]            = { 8,  4 },
+        [XGL_FMT_BC4_SNORM]            = { 8,  4 },
+        [XGL_FMT_BC5_UNORM]            = { 16, 4 },
+        [XGL_FMT_BC5_SNORM]            = { 16, 4 },
+        [XGL_FMT_BC6H_UFLOAT]          = { 16, 4 },
+        [XGL_FMT_BC6H_SFLOAT]          = { 16, 4 },
+        [XGL_FMT_BC7_UNORM]            = { 16, 4 },
+        [XGL_FMT_BC7_SRGB]             = { 16, 4 },
+        // TODO: Initialize remaining compressed formats.
+        [XGL_FMT_ETC2_R8G8B8_UNORM]    = { 0, 0 },
+        [XGL_FMT_ETC2_R8G8B8A1_UNORM]  = { 0, 0 },
+        [XGL_FMT_ETC2_R8G8B8A8_UNORM]  = { 0, 0 },
+        [XGL_FMT_EAC_R11_UNORM]        = { 0, 0 },
+        [XGL_FMT_EAC_R11_SNORM]        = { 0, 0 },
+        [XGL_FMT_EAC_R11G11_UNORM]     = { 0, 0 },
+        [XGL_FMT_EAC_R11G11_SNORM]     = { 0, 0 },
+        [XGL_FMT_ASTC_4x4_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_4x4_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_4x5_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_4x5_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_5x5_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_5x5_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_6x5_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_6x5_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_6x6_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_6x6_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_8x5_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_8x5_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_8x6_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_8x6_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_8x8_UNORM]       = { 0, 0 },
+        [XGL_FMT_ASTC_8x8_SRGB]        = { 0, 0 },
+        [XGL_FMT_ASTC_10x5_UNORM]      = { 0, 0 },
+        [XGL_FMT_ASTC_10x5_SRGB]       = { 0, 0 },
+        [XGL_FMT_ASTC_10x6_UNORM]      = { 0, 0 },
+        [XGL_FMT_ASTC_10x6_SRGB]       = { 0, 0 },
+        [XGL_FMT_ASTC_10x8_UNORM]      = { 0, 0 },
+        [XGL_FMT_ASTC_10x8_SRGB]       = { 0, 0 },
+        [XGL_FMT_ASTC_10x10_UNORM]     = { 0, 0 },
+        [XGL_FMT_ASTC_10x10_SRGB]      = { 0, 0 },
+        [XGL_FMT_ASTC_12x10_UNORM]     = { 0, 0 },
+        [XGL_FMT_ASTC_12x10_SRGB]      = { 0, 0 },
+        [XGL_FMT_ASTC_12x12_UNORM]     = { 0, 0 },
+        [XGL_FMT_ASTC_12x12_SRGB]      = { 0, 0 },
+        [XGL_FMT_B5G6R5_UNORM]         = { 2, 3 },
+        [XGL_FMT_B5G6R5_USCALED]       = { 2, 3 },
+        [XGL_FMT_B8G8R8_UNORM]         = { 3, 3 },
+        [XGL_FMT_B8G8R8_SNORM]         = { 3, 3 },
+        [XGL_FMT_B8G8R8_USCALED]       = { 3, 3 },
+        [XGL_FMT_B8G8R8_SSCALED]       = { 3, 3 },
+        [XGL_FMT_B8G8R8_UINT]          = { 3, 3 },
+        [XGL_FMT_B8G8R8_SINT]          = { 3, 3 },
+        [XGL_FMT_B8G8R8_SRGB]          = { 3, 3 },
+        [XGL_FMT_B8G8R8A8_UNORM]       = { 4, 4 },
+        [XGL_FMT_B8G8R8A8_SNORM]       = { 4, 4 },
+        [XGL_FMT_B8G8R8A8_USCALED]     = { 4, 4 },
+        [XGL_FMT_B8G8R8A8_SSCALED]     = { 4, 4 },
+        [XGL_FMT_B8G8R8A8_UINT]        = { 4, 4 },
+        [XGL_FMT_B8G8R8A8_SINT]        = { 4, 4 },
+        [XGL_FMT_B8G8R8A8_SRGB]        = { 4, 4 },
+        [XGL_FMT_B10G10R10A2_UNORM]    = { 4, 4 },
+        [XGL_FMT_B10G10R10A2_SNORM]    = { 4, 4 },
+        [XGL_FMT_B10G10R10A2_USCALED]  = { 4, 4 },
+        [XGL_FMT_B10G10R10A2_SSCALED]  = { 4, 4 },
+        [XGL_FMT_B10G10R10A2_UINT]     = { 4, 4 },
+        [XGL_FMT_B10G10R10A2_SINT]     = { 4, 4 },
     };
 
-    return format_table[format.channelFormat].size;
+    return format_table[format].size;
 }
 
 XGL_EXTENT3D get_mip_level_extent(const XGL_EXTENT3D &extent, XGL_UINT mip_level)
@@ -836,10 +966,8 @@
 protected:
     void init_test_formats(XGL_FLAGS features)
     {
-        first_linear_format_.channelFormat = XGL_CH_FMT_UNDEFINED;
-        first_linear_format_.numericFormat = XGL_NUM_FMT_UNDEFINED;
-        first_optimal_format_.channelFormat = XGL_CH_FMT_UNDEFINED;
-        first_optimal_format_.numericFormat = XGL_NUM_FMT_UNDEFINED;
+        first_linear_format_ = XGL_FMT_UNDEFINED;
+        first_optimal_format_ = XGL_FMT_UNDEFINED;
 
         for (std::vector<xgl_testing::Device::Format>::const_iterator it = dev_.formats().begin();
              it != dev_.formats().end(); it++) {
@@ -847,10 +975,10 @@
                 test_formats_.push_back(*it);
 
                 if (it->tiling == XGL_LINEAR_TILING &&
-                    first_linear_format_.channelFormat == XGL_CH_FMT_UNDEFINED)
+                    first_linear_format_ == XGL_FMT_UNDEFINED)
                     first_linear_format_ = it->format;
                 if (it->tiling == XGL_OPTIMAL_TILING &&
-                    first_optimal_format_.channelFormat == XGL_CH_FMT_UNDEFINED)
+                    first_optimal_format_ == XGL_FMT_UNDEFINED)
                     first_optimal_format_ = it->format;
             }
         }
@@ -965,6 +1093,13 @@
 {
     for (std::vector<xgl_testing::Device::Format>::const_iterator it = test_formats_.begin();
          it != test_formats_.end(); it++) {
+
+        // not sure what to do here
+        if (it->format == XGL_FMT_UNDEFINED ||
+            (it->format >= XGL_FMT_B8G8R8_UNORM &&
+             it->format <= XGL_FMT_B8G8R8_SRGB))
+            continue;
+
         XGL_IMAGE_CREATE_INFO img_info = xgl_testing::Image::create_info();
         img_info.imageType = XGL_IMAGE_2D;
         img_info.format = it->format;
@@ -1024,6 +1159,13 @@
 {
     for (std::vector<xgl_testing::Device::Format>::const_iterator it = test_formats_.begin();
          it != test_formats_.end(); it++) {
+
+        // not sure what to do here
+        if (it->format == XGL_FMT_UNDEFINED ||
+            (it->format >= XGL_FMT_B8G8R8_UNORM &&
+             it->format <= XGL_FMT_B8G8R8_SRGB))
+            continue;
+
         XGL_IMAGE_CREATE_INFO img_info = xgl_testing::Image::create_info();
         img_info.imageType = XGL_IMAGE_2D;
         img_info.format = it->format;
@@ -1096,6 +1238,13 @@
 {
     for (std::vector<xgl_testing::Device::Format>::const_iterator it = test_formats_.begin();
          it != test_formats_.end(); it++) {
+
+        // not sure what to do here
+        if (it->format == XGL_FMT_UNDEFINED ||
+            (it->format >= XGL_FMT_B8G8R8_UNORM &&
+             it->format <= XGL_FMT_B8G8R8_SRGB))
+            continue;
+
         XGL_IMAGE_CREATE_INFO img_info = xgl_testing::Image::create_info();
         img_info.imageType = XGL_IMAGE_2D;
         img_info.format = it->format;
@@ -1155,12 +1304,17 @@
     for (std::vector<xgl_testing::Device::Format>::const_iterator it = test_formats_.begin();
          it != test_formats_.end(); it++) {
         // not sure what to do here
-        if (it->format.channelFormat == XGL_CH_FMT_UNDEFINED ||
-            (it->format.channelFormat >= XGL_CH_FMT_BC1 &&
-             it->format.channelFormat <= XGL_CH_FMT_BC7) ||
-            it->format.channelFormat == XGL_CH_FMT_R64G64B64 ||
-            it->format.channelFormat == XGL_CH_FMT_R64G64B64A64 ||
-            it->format.numericFormat == XGL_NUM_FMT_DS)
+        if (it->format == XGL_FMT_UNDEFINED ||
+            (it->format >= XGL_FMT_R32G32B32_UINT &&
+             it->format <= XGL_FMT_R32G32B32_SFLOAT) ||
+            (it->format >= XGL_FMT_B8G8R8_UNORM &&
+             it->format <= XGL_FMT_B8G8R8_SRGB) ||
+            (it->format >= XGL_FMT_BC1_UNORM &&
+             it->format <= XGL_FMT_ASTC_12x12_SRGB) ||
+            (it->format >= XGL_FMT_D16_UNORM &&
+             it->format <= XGL_FMT_D32_SFLOAT_S8_UINT) ||
+            it->format == XGL_FMT_R64G64B64_SFLOAT ||
+            it->format == XGL_FMT_R64G64B64A64_SFLOAT)
             continue;
 
         XGL_IMAGE_CREATE_INFO img_info = xgl_testing::Image::create_info();
@@ -1208,23 +1362,21 @@
         std::vector<uint8_t> raw;
 
         // TODO support all formats
-        if (format.numericFormat == XGL_NUM_FMT_UNORM) {
-            switch (format.channelFormat) {
-            case XGL_CH_FMT_R8G8B8A8:
-                raw.push_back(color[0] * 255.0f);
-                raw.push_back(color[1] * 255.0f);
-                raw.push_back(color[2] * 255.0f);
-                raw.push_back(color[3] * 255.0f);
-                break;
-            case XGL_CH_FMT_B8G8R8A8:
-                raw.push_back(color[2] * 255.0f);
-                raw.push_back(color[1] * 255.0f);
-                raw.push_back(color[0] * 255.0f);
-                raw.push_back(color[3] * 255.0f);
-                break;
-            default:
-                break;
-            }
+        switch (format) {
+        case XGL_FMT_R8G8B8A8_UNORM:
+            raw.push_back(color[0] * 255.0f);
+            raw.push_back(color[1] * 255.0f);
+            raw.push_back(color[2] * 255.0f);
+            raw.push_back(color[3] * 255.0f);
+            break;
+        case XGL_FMT_B8G8R8A8_UNORM:
+            raw.push_back(color[2] * 255.0f);
+            raw.push_back(color[1] * 255.0f);
+            raw.push_back(color[0] * 255.0f);
+            raw.push_back(color[3] * 255.0f);
+            break;
+        default:
+            break;
         }
 
         return raw;
@@ -1235,23 +1387,21 @@
         std::vector<uint8_t> raw;
 
         // TODO support all formats
-        if (format.numericFormat == XGL_NUM_FMT_UNORM) {
-            switch (format.channelFormat) {
-            case XGL_CH_FMT_R8G8B8A8:
-                raw.push_back(static_cast<uint8_t>(color[0]));
-                raw.push_back(static_cast<uint8_t>(color[1]));
-                raw.push_back(static_cast<uint8_t>(color[2]));
-                raw.push_back(static_cast<uint8_t>(color[3]));
-                break;
-            case XGL_CH_FMT_B8G8R8A8:
-                raw.push_back(static_cast<uint8_t>(color[2]));
-                raw.push_back(static_cast<uint8_t>(color[1]));
-                raw.push_back(static_cast<uint8_t>(color[0]));
-                raw.push_back(static_cast<uint8_t>(color[3]));
-                break;
-            default:
-                break;
-            }
+        switch (format) {
+        case XGL_FMT_R8G8B8A8_UNORM:
+            raw.push_back(static_cast<uint8_t>(color[0]));
+            raw.push_back(static_cast<uint8_t>(color[1]));
+            raw.push_back(static_cast<uint8_t>(color[2]));
+            raw.push_back(static_cast<uint8_t>(color[3]));
+            break;
+        case XGL_FMT_B8G8R8A8_UNORM:
+            raw.push_back(static_cast<uint8_t>(color[2]));
+            raw.push_back(static_cast<uint8_t>(color[1]));
+            raw.push_back(static_cast<uint8_t>(color[0]));
+            raw.push_back(static_cast<uint8_t>(color[3]));
+            break;
+        default:
+            break;
         }
 
         return raw;
@@ -1399,13 +1549,19 @@
         const XGL_UINT32 color[4] = { 0x11111111, 0x22222222, 0x33333333, 0x44444444 };
 
         // not sure what to do here
-        if (it->format.channelFormat == XGL_CH_FMT_UNDEFINED ||
-            it->format.channelFormat == XGL_CH_FMT_R32G32B32 ||
-            it->format.channelFormat == XGL_CH_FMT_R8G8B8 ||
-            it->format.channelFormat == XGL_CH_FMT_R16G16B16 ||
-            it->format.channelFormat == XGL_CH_FMT_R64G64B64 ||
-            it->format.channelFormat == XGL_CH_FMT_R64G64B64A64 ||
-            it->format.numericFormat == XGL_NUM_FMT_DS)
+        if (it->format == XGL_FMT_UNDEFINED ||
+            (it->format >= XGL_FMT_R8G8B8_UNORM &&
+             it->format <= XGL_FMT_R8G8B8_SRGB) ||
+            (it->format >= XGL_FMT_B8G8R8_UNORM &&
+             it->format <= XGL_FMT_B8G8R8_SRGB) ||
+            (it->format >= XGL_FMT_R16G16B16_UNORM &&
+             it->format <= XGL_FMT_R16G16B16_SFLOAT) ||
+            (it->format >= XGL_FMT_R32G32B32_UINT &&
+             it->format <= XGL_FMT_R32G32B32_SFLOAT) ||
+            it->format == XGL_FMT_R64G64B64_SFLOAT ||
+            it->format == XGL_FMT_R64G64B64A64_SFLOAT ||
+            (it->format >= XGL_FMT_D16_UNORM &&
+             it->format <= XGL_FMT_D32_SFLOAT_S8_UINT))
             continue;
 
         XGL_IMAGE_CREATE_INFO img_info = xgl_testing::Image::create_info();
@@ -1438,17 +1594,17 @@
         std::vector<uint8_t> raw;
 
         // depth
-        switch (format.channelFormat) {
-        case XGL_CH_FMT_R16:
-        case XGL_CH_FMT_R16G8:
+        switch (format) {
+        case XGL_FMT_D16_UNORM:
+        case XGL_FMT_D16_UNORM_S8_UINT:
             {
                 const uint16_t unorm = depth * 65535.0f;
                 raw.push_back(unorm & 0xff);
                 raw.push_back(unorm >> 8);
             }
             break;
-        case XGL_CH_FMT_R32:
-        case XGL_CH_FMT_R32G8:
+        case XGL_FMT_D32_SFLOAT:
+        case XGL_FMT_D32_SFLOAT_S8_UINT:
             {
                 const union {
                     XGL_FLOAT depth;
@@ -1466,15 +1622,15 @@
         }
 
         // stencil
-        switch (format.channelFormat) {
-        case XGL_CH_FMT_R8:
+        switch (format) {
+        case XGL_FMT_S8_UINT:
             raw.push_back(stencil);
             break;
-        case XGL_CH_FMT_R16G8:
+        case XGL_FMT_D16_UNORM_S8_UINT:
             raw.push_back(stencil);
             raw.push_back(0);
             break;
-        case XGL_CH_FMT_R32G8:
+        case XGL_FMT_D32_SFLOAT_S8_UINT:
             raw.push_back(stencil);
             raw.push_back(0);
             raw.push_back(0);
@@ -1567,7 +1723,10 @@
     for (std::vector<xgl_testing::Device::Format>::const_iterator it = test_formats_.begin();
          it != test_formats_.end(); it++) {
         // known driver issues
-        if (it->format.channelFormat == XGL_CH_FMT_R8)
+        if (it->format == XGL_FMT_S8_UINT ||
+            it->format == XGL_FMT_D24_UNORM ||
+            it->format == XGL_FMT_D16_UNORM_S8_UINT ||
+            it->format == XGL_FMT_D24_UNORM_S8_UINT)
             continue;
 
         XGL_IMAGE_CREATE_INFO img_info = xgl_testing::Image::create_info();