diff --git a/src/Main/Config.hpp b/src/Main/Config.hpp
index 46ba961..9eb7e11 100644
--- a/src/Main/Config.hpp
+++ b/src/Main/Config.hpp
@@ -20,8 +20,6 @@
 #define PERF_HUD 0       // Display time spent on vertex, setup and pixel processing for each thread
 #define PERF_PROFILE 0   // Profile various pipeline stages and display the timing in SwiftConfig
 
-#define ASTC_SUPPORT 0
-
 // Worker thread count when not set by SwiftConfig
 // 0 = process affinity count (recommended)
 // 1 = rendering on main thread (no worker threads), useful for debugging
diff --git a/src/OpenGL/common/Image.cpp b/src/OpenGL/common/Image.cpp
index 2052041..0392450 100644
--- a/src/OpenGL/common/Image.cpp
+++ b/src/OpenGL/common/Image.cpp
@@ -375,34 +375,6 @@
 		case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: return sw::FORMAT_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2;
 		case GL_COMPRESSED_RGBA8_ETC2_EAC:        return sw::FORMAT_RGBA8_ETC2_EAC;
 		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: return sw::FORMAT_SRGB8_ALPHA8_ETC2_EAC;
-		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:   return sw::FORMAT_RGBA_ASTC_4x4_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:   return sw::FORMAT_RGBA_ASTC_5x4_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:   return sw::FORMAT_RGBA_ASTC_5x5_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:   return sw::FORMAT_RGBA_ASTC_6x5_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:   return sw::FORMAT_RGBA_ASTC_6x6_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:   return sw::FORMAT_RGBA_ASTC_8x5_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:   return sw::FORMAT_RGBA_ASTC_8x6_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:   return sw::FORMAT_RGBA_ASTC_8x8_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:  return sw::FORMAT_RGBA_ASTC_10x5_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:  return sw::FORMAT_RGBA_ASTC_10x6_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:  return sw::FORMAT_RGBA_ASTC_10x8_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR: return sw::FORMAT_RGBA_ASTC_10x10_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR: return sw::FORMAT_RGBA_ASTC_12x10_KHR;
-		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR: return sw::FORMAT_RGBA_ASTC_12x12_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:   return sw::FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:  return sw::FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:  return sw::FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:  return sw::FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: return sw::FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: return sw::FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR;
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: return sw::FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR;
 		case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:    return sw::FORMAT_DXT1;
 		case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:   return sw::FORMAT_DXT1;
 		case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: return sw::FORMAT_DXT3;
@@ -584,48 +556,7 @@
 		case GL_COMPRESSED_SIGNED_RG11_EAC:
 		case GL_COMPRESSED_RGBA8_ETC2_EAC:
 		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
-		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
 			return 16 * GetNumCompressedBlocks(width, height, 4, 4);
-		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 5, 4);
-		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 5, 5);
-		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 6, 5);
-		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 6, 6);
-		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 8, 5);
-		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 8, 6);
-		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 8, 8);
-		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 10, 5);
-		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 10, 6);
-		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 10, 8);
-		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 10, 10);
-		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 12, 10);
-		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
-			return 16 * GetNumCompressedBlocks(width, height, 12, 12);
 		default:
 			UNREACHABLE(format);
 			return 0;
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.hpp b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
index 325578e..b2ab08d 100644
--- a/src/OpenGL/libGLES_CM/libGLES_CM.hpp
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
@@ -20,11 +20,11 @@
 #include <EGL/egl.h>
 
 #include "Common/SharedLibrary.hpp"
+#include "Renderer/Surface.hpp"
 
 namespace sw
 {
 class FrameBuffer;
-enum Format : unsigned char;
 }
 
 namespace egl
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 76b20ec..2ad6b02 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4532,10 +4532,6 @@
 		"GL_EXT_texture_filter_anisotropic",
 		"GL_EXT_texture_format_BGRA8888",
 		"GL_EXT_texture_rg",
-#if (ASTC_SUPPORT)
-		"GL_KHR_texture_compression_astc_hdr",
-		"GL_KHR_texture_compression_astc_ldr",
-#endif
 		"GL_ARB_texture_rectangle",
 		"GL_ANGLE_framebuffer_blit",
 		"GL_ANGLE_framebuffer_multisample",
diff --git a/src/OpenGL/libGLESv2/Context.h b/src/OpenGL/libGLESv2/Context.h
index 5eb28b5..1bb5e49 100644
--- a/src/OpenGL/libGLESv2/Context.h
+++ b/src/OpenGL/libGLESv2/Context.h
@@ -126,36 +126,6 @@
 	GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
 	GL_COMPRESSED_RGBA8_ETC2_EAC,
 	GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
-#if (ASTC_SUPPORT)
-	GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
-	GL_COMPRESSED_RGBA_ASTC_5x4_KHR,
-	GL_COMPRESSED_RGBA_ASTC_5x5_KHR,
-	GL_COMPRESSED_RGBA_ASTC_6x5_KHR,
-	GL_COMPRESSED_RGBA_ASTC_6x6_KHR,
-	GL_COMPRESSED_RGBA_ASTC_8x5_KHR,
-	GL_COMPRESSED_RGBA_ASTC_8x6_KHR,
-	GL_COMPRESSED_RGBA_ASTC_8x8_KHR,
-	GL_COMPRESSED_RGBA_ASTC_10x5_KHR,
-	GL_COMPRESSED_RGBA_ASTC_10x6_KHR,
-	GL_COMPRESSED_RGBA_ASTC_10x8_KHR,
-	GL_COMPRESSED_RGBA_ASTC_10x10_KHR,
-	GL_COMPRESSED_RGBA_ASTC_12x10_KHR,
-	GL_COMPRESSED_RGBA_ASTC_12x12_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
-	GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
-#endif // ASTC_SUPPORT
 #endif // GL_ES_VERSION_3_0
 };
 
diff --git a/src/OpenGL/libGLESv2/libGLESv2.hpp b/src/OpenGL/libGLESv2/libGLESv2.hpp
index e8f956e..80b7507 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.hpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.hpp
@@ -24,7 +24,7 @@
 namespace sw
 {
 class FrameBuffer;
-enum Format : unsigned char;
+enum Format ENUM_UNDERLYING_TYPE_UNSIGNED_INT;
 }
 
 namespace egl
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index c423b46..1ed35dc 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -343,35 +343,6 @@
 		case GL_COMPRESSED_RGBA8_ETC2_EAC:
 		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
 			return true;
-		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
-		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
-		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
-			return ASTC_SUPPORT;
 		default:
 			return false;
 		}
diff --git a/src/Renderer/Surface.cpp b/src/Renderer/Surface.cpp
index ca4771f..8ce207a 100644
--- a/src/Renderer/Surface.cpp
+++ b/src/Renderer/Surface.cpp
@@ -1164,48 +1164,7 @@
 			case FORMAT_SIGNED_RG11_EAC:
 			case FORMAT_RGBA8_ETC2_EAC:
 			case FORMAT_SRGB8_ALPHA8_ETC2_EAC:
-			case FORMAT_RGBA_ASTC_4x4_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR:
 				return (unsigned char*)buffer + 16 * (x / 4) + (y / 4) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_5x4_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR:
-				return (unsigned char*)buffer + 16 * (x / 5) + (y / 4) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_5x5_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR:
-				return (unsigned char*)buffer + 16 * (x / 5) + (y / 5) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_6x5_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR:
-				return (unsigned char*)buffer + 16 * (x / 6) + (y / 5) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_6x6_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR:
-				return (unsigned char*)buffer + 16 * (x / 6) + (y / 6) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_8x5_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR:
-				return (unsigned char*)buffer + 16 * (x / 8) + (y / 5) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_8x6_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR:
-				return (unsigned char*)buffer + 16 * (x / 8) + (y / 6) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_8x8_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR:
-				return (unsigned char*)buffer + 16 * (x / 8) + (y / 8) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_10x5_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR:
-				return (unsigned char*)buffer + 16 * (x / 10) + (y / 5) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_10x6_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR:
-				return (unsigned char*)buffer + 16 * (x / 10) + (y / 6) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_10x8_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR:
-				return (unsigned char*)buffer + 16 * (x / 10) + (y / 8) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_10x10_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR:
-				return (unsigned char*)buffer + 16 * (x / 10) + (y / 10) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_12x10_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR:
-				return (unsigned char*)buffer + 16 * (x / 12) + (y / 10) * pitchB + z * sliceB;
-			case FORMAT_RGBA_ASTC_12x12_KHR:
-			case FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR:
-				return (unsigned char*)buffer + 16 * (x / 12) + (y / 12) * pitchB + z * sliceB;
 			case FORMAT_DXT3:
 			case FORMAT_DXT5:
 			case FORMAT_ATI2:
@@ -1630,34 +1589,6 @@
 		case FORMAT_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return 2;
 		case FORMAT_RGBA8_ETC2_EAC:			return 4;
 		case FORMAT_SRGB8_ALPHA8_ETC2_EAC:	return 4;
-		case FORMAT_RGBA_ASTC_4x4_KHR:
-		case FORMAT_RGBA_ASTC_5x4_KHR:
-		case FORMAT_RGBA_ASTC_5x5_KHR:
-		case FORMAT_RGBA_ASTC_6x5_KHR:
-		case FORMAT_RGBA_ASTC_6x6_KHR:
-		case FORMAT_RGBA_ASTC_8x5_KHR:
-		case FORMAT_RGBA_ASTC_8x6_KHR:
-		case FORMAT_RGBA_ASTC_8x8_KHR:
-		case FORMAT_RGBA_ASTC_10x5_KHR:
-		case FORMAT_RGBA_ASTC_10x6_KHR:
-		case FORMAT_RGBA_ASTC_10x8_KHR:
-		case FORMAT_RGBA_ASTC_10x10_KHR:
-		case FORMAT_RGBA_ASTC_12x10_KHR:
-		case FORMAT_RGBA_ASTC_12x12_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR: return 0; // FIXME
 		// Bumpmap formats
 		case FORMAT_V8U8:				return 2;
 		case FORMAT_L6V5U5:				return 2;
@@ -1744,40 +1675,7 @@
 		case FORMAT_SIGNED_RG11_EAC:
 		case FORMAT_RGBA8_ETC2_EAC:
 		case FORMAT_SRGB8_ALPHA8_ETC2_EAC:
-		case FORMAT_RGBA_ASTC_4x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR:
 			return 16 * ((width + 3) / 4);    // 128 bit per 4x4 block, computed per 4 rows
-		case FORMAT_RGBA_ASTC_5x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR:
-		case FORMAT_RGBA_ASTC_5x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR:
-			return 16 * ((width + 4) / 5);
-		case FORMAT_RGBA_ASTC_6x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR:
-		case FORMAT_RGBA_ASTC_6x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR:
-			return 16 * ((width + 5) / 6);
-		case FORMAT_RGBA_ASTC_8x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR:
-		case FORMAT_RGBA_ASTC_8x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR:
-		case FORMAT_RGBA_ASTC_8x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR:
-			return 16 * ((width + 7) / 8);
-		case FORMAT_RGBA_ASTC_10x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR:
-		case FORMAT_RGBA_ASTC_10x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR:
-		case FORMAT_RGBA_ASTC_10x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR:
-		case FORMAT_RGBA_ASTC_10x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR:
-			return 16 * ((width + 9) / 10);
-		case FORMAT_RGBA_ASTC_12x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR:
-		case FORMAT_RGBA_ASTC_12x12_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR:
-			return 16 * ((width + 11) / 12);
 		case FORMAT_DXT3:
 		case FORMAT_DXT5:
 			return 16 * ((width + 3) / 4);   // 128 bit per 4x4 block, computed per 4 rows
@@ -1827,40 +1725,7 @@
 		case FORMAT_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
 		case FORMAT_RGBA8_ETC2_EAC:
 		case FORMAT_SRGB8_ALPHA8_ETC2_EAC:
-		case FORMAT_RGBA_ASTC_4x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR:
-		case FORMAT_RGBA_ASTC_5x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR:
 			return pitchB(width, border, format, target) * ((height + 3) / 4);   // Pitch computed per 4 rows
-		case FORMAT_RGBA_ASTC_5x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR:
-		case FORMAT_RGBA_ASTC_6x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR:
-		case FORMAT_RGBA_ASTC_8x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR:
-		case FORMAT_RGBA_ASTC_10x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR:
-			return pitchB(width, border, format, target) * ((height + 4) / 5);   // Pitch computed per 5 rows
-		case FORMAT_RGBA_ASTC_6x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR:
-		case FORMAT_RGBA_ASTC_8x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR:
-		case FORMAT_RGBA_ASTC_10x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR:
-			return pitchB(width, border, format, target) * ((height + 5) / 6);   // Pitch computed per 6 rows
-		case FORMAT_RGBA_ASTC_8x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR:
-		case FORMAT_RGBA_ASTC_10x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR:
-			return pitchB(width, border, format, target) * ((height + 7) / 8);   // Pitch computed per 8 rows
-		case FORMAT_RGBA_ASTC_10x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR:
-		case FORMAT_RGBA_ASTC_12x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR:
-			return pitchB(width, border, format, target) * ((height + 9) / 10);   // Pitch computed per 10 rows
-		case FORMAT_RGBA_ASTC_12x12_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR:
-			return pitchB(width, border, format, target) * ((height + 11) / 12);   // Pitch computed per 12 rows
 		case FORMAT_ATI1:
 		case FORMAT_ATI2:
 			return pitchB(width, border, format, target) * align<4>(height);   // Pitch computed per row
@@ -1909,34 +1774,6 @@
 			case FORMAT_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: decodeETC2(destination, source, 1, true);  break; // FIXME: Check destination format
 			case FORMAT_RGBA8_ETC2_EAC:                 decodeETC2(destination, source, 8, false); break; // FIXME: Check destination format
 			case FORMAT_SRGB8_ALPHA8_ETC2_EAC:          decodeETC2(destination, source, 8, true);  break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_4x4_KHR:           decodeASTC(destination, source, 4,  4,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_5x4_KHR:           decodeASTC(destination, source, 5,  4,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_5x5_KHR:           decodeASTC(destination, source, 5,  5,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_6x5_KHR:           decodeASTC(destination, source, 6,  5,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_6x6_KHR:           decodeASTC(destination, source, 6,  6,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_8x5_KHR:           decodeASTC(destination, source, 8,  5,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_8x6_KHR:           decodeASTC(destination, source, 8,  6,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_8x8_KHR:           decodeASTC(destination, source, 8,  8,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_10x5_KHR:          decodeASTC(destination, source, 10, 5,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_10x6_KHR:          decodeASTC(destination, source, 10, 6,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_10x8_KHR:          decodeASTC(destination, source, 10, 8,  1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_10x10_KHR:         decodeASTC(destination, source, 10, 10, 1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_12x10_KHR:         decodeASTC(destination, source, 12, 10, 1, false); break; // FIXME: Check destination format
-			case FORMAT_RGBA_ASTC_12x12_KHR:         decodeASTC(destination, source, 12, 12, 1, false); break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR:   decodeASTC(destination, source, 4,  4,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR:   decodeASTC(destination, source, 5,  4,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR:   decodeASTC(destination, source, 5,  5,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR:   decodeASTC(destination, source, 6,  5,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR:   decodeASTC(destination, source, 6,  6,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR:   decodeASTC(destination, source, 8,  5,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR:   decodeASTC(destination, source, 8,  6,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR:   decodeASTC(destination, source, 8,  8,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR:  decodeASTC(destination, source, 10, 5,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR:  decodeASTC(destination, source, 10, 6,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR:  decodeASTC(destination, source, 10, 8,  1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR: decodeASTC(destination, source, 10, 10, 1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR: decodeASTC(destination, source, 12, 10, 1, true);  break; // FIXME: Check destination format
-			case FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR: decodeASTC(destination, source, 12, 12, 1, true);  break; // FIXME: Check destination format
 			default:				genericUpdate(destination, source);		break;
 			}
 		}
@@ -2656,10 +2493,6 @@
 		internal.unlockRect();
 	}
 
-	void Surface::decodeASTC(Buffer &internal, Buffer &external, int xBlockSize, int yBlockSize, int zBlockSize, bool isSRGB)
-	{
-	}
-
 	size_t Surface::size(int width, int height, int depth, int border, int samples, Format format)
 	{
 		samples = max(1, samples);
@@ -3060,34 +2893,6 @@
 		case FORMAT_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
 		case FORMAT_RGBA8_ETC2_EAC:
 		case FORMAT_SRGB8_ALPHA8_ETC2_EAC:
-		case FORMAT_RGBA_ASTC_4x4_KHR:
-		case FORMAT_RGBA_ASTC_5x4_KHR:
-		case FORMAT_RGBA_ASTC_5x5_KHR:
-		case FORMAT_RGBA_ASTC_6x5_KHR:
-		case FORMAT_RGBA_ASTC_6x6_KHR:
-		case FORMAT_RGBA_ASTC_8x5_KHR:
-		case FORMAT_RGBA_ASTC_8x6_KHR:
-		case FORMAT_RGBA_ASTC_8x8_KHR:
-		case FORMAT_RGBA_ASTC_10x5_KHR:
-		case FORMAT_RGBA_ASTC_10x6_KHR:
-		case FORMAT_RGBA_ASTC_10x8_KHR:
-		case FORMAT_RGBA_ASTC_10x10_KHR:
-		case FORMAT_RGBA_ASTC_12x10_KHR:
-		case FORMAT_RGBA_ASTC_12x12_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR:
 			return true;
 		default:
 			return false;
@@ -3870,37 +3675,7 @@
 		case FORMAT_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
 		case FORMAT_RGBA8_ETC2_EAC:
 		case FORMAT_SRGB8_ALPHA8_ETC2_EAC:
-		case FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR:
-		case FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR:
 			return FORMAT_A8R8G8B8;
-		case FORMAT_RGBA_ASTC_4x4_KHR:
-		case FORMAT_RGBA_ASTC_5x4_KHR:
-		case FORMAT_RGBA_ASTC_5x5_KHR:
-		case FORMAT_RGBA_ASTC_6x5_KHR:
-		case FORMAT_RGBA_ASTC_6x6_KHR:
-		case FORMAT_RGBA_ASTC_8x5_KHR:
-		case FORMAT_RGBA_ASTC_8x6_KHR:
-		case FORMAT_RGBA_ASTC_8x8_KHR:
-		case FORMAT_RGBA_ASTC_10x5_KHR:
-		case FORMAT_RGBA_ASTC_10x6_KHR:
-		case FORMAT_RGBA_ASTC_10x8_KHR:
-		case FORMAT_RGBA_ASTC_10x10_KHR:
-		case FORMAT_RGBA_ASTC_12x10_KHR:
-		case FORMAT_RGBA_ASTC_12x12_KHR:
-			// ASTC supports HDR, so a floating point format is required to represent it properly
-			return FORMAT_A32B32G32R32F; // FIXME: 16FP is probably sufficient, but it's currently unsupported
 		case FORMAT_ATI1:
 			return FORMAT_R8;
 		case FORMAT_R11_EAC:
diff --git a/src/Renderer/Surface.hpp b/src/Renderer/Surface.hpp
index 10c5364..d6d001c 100644
--- a/src/Renderer/Surface.hpp
+++ b/src/Renderer/Surface.hpp
@@ -60,7 +60,7 @@
 	typedef SliceRectT<int> SliceRect;
 	typedef SliceRectT<float> SliceRectF;
 
-	enum Format : unsigned char
+	enum Format ENUM_UNDERLYING_TYPE_UNSIGNED_INT
 	{
 		FORMAT_NULL,
 
@@ -137,34 +137,6 @@
 		FORMAT_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
 		FORMAT_RGBA8_ETC2_EAC,
 		FORMAT_SRGB8_ALPHA8_ETC2_EAC,
-		FORMAT_RGBA_ASTC_4x4_KHR,
-		FORMAT_RGBA_ASTC_5x4_KHR,
-		FORMAT_RGBA_ASTC_5x5_KHR,
-		FORMAT_RGBA_ASTC_6x5_KHR,
-		FORMAT_RGBA_ASTC_6x6_KHR,
-		FORMAT_RGBA_ASTC_8x5_KHR,
-		FORMAT_RGBA_ASTC_8x6_KHR,
-		FORMAT_RGBA_ASTC_8x8_KHR,
-		FORMAT_RGBA_ASTC_10x5_KHR,
-		FORMAT_RGBA_ASTC_10x6_KHR,
-		FORMAT_RGBA_ASTC_10x8_KHR,
-		FORMAT_RGBA_ASTC_10x10_KHR,
-		FORMAT_RGBA_ASTC_12x10_KHR,
-		FORMAT_RGBA_ASTC_12x12_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_4x4_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_5x4_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_5x5_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_6x5_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_6x6_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_8x5_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_8x6_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_8x8_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_10x5_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_10x6_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_10x8_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_10x10_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_12x10_KHR,
-		FORMAT_SRGB8_ALPHA8_ASTC_12x12_KHR,
 		// Floating-point formats
 		FORMAT_A16F,
 		FORMAT_R16F,
@@ -479,7 +451,6 @@
 		static void decodeATI2(Buffer &internal, Buffer &external);
 		static void decodeEAC(Buffer &internal, Buffer &external, int nbChannels, bool isSigned);
 		static void decodeETC2(Buffer &internal, Buffer &external, int nbAlphaBits, bool isSRGB);
-		static void decodeASTC(Buffer &internal, Buffer &external, int xSize, int ySize, int zSize, bool isSRGB);
 
 		static void update(Buffer &destination, Buffer &source);
 		static void genericUpdate(Buffer &destination, Buffer &source);
