diff --git a/vulkan/libvulkan/Android.mk b/vulkan/libvulkan/Android.mk
index 7b7e01f..0979471 100644
--- a/vulkan/libvulkan/Android.mk
+++ b/vulkan/libvulkan/Android.mk
@@ -45,7 +45,6 @@
 	driver.cpp \
 	driver_gen.cpp \
 	layers_extensions.cpp \
-	loader.cpp \
 	swapchain.cpp \
 	vulkan_loader_data.cpp
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
deleted file mode 100644
index 14e3817..0000000
--- a/vulkan/libvulkan/loader.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "loader.h"
-
-namespace vulkan {
-
-const VkAllocationCallbacks* GetAllocator(VkInstance vkinstance) {
-    return &driver::GetData(vkinstance).allocator;
-}
-
-const VkAllocationCallbacks* GetAllocator(VkDevice vkdevice) {
-    return &driver::GetData(vkdevice).allocator;
-}
-
-VkInstance GetDriverInstance(VkInstance instance) {
-    return instance;
-}
-
-const driver::InstanceDriverTable& GetDriverDispatch(VkInstance instance) {
-    return driver::GetData(instance).driver;
-}
-
-const driver::DeviceDriverTable& GetDriverDispatch(VkDevice device) {
-    return driver::GetData(device).driver;
-}
-
-const driver::DeviceDriverTable& GetDriverDispatch(VkQueue queue) {
-    return driver::GetData(queue).driver;
-}
-
-driver::DebugReportCallbackList& GetDebugReportCallbacks(VkInstance instance) {
-    return driver::GetData(instance).debug_report_callbacks;
-}
-
-}  // namespace vulkan
diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
deleted file mode 100644
index fc6b8c2..0000000
--- a/vulkan/libvulkan/loader.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIBVULKAN_LOADER_H
-#define LIBVULKAN_LOADER_H 1
-
-#include <bitset>
-#include <vulkan/vulkan.h>
-#include "debug_report.h"
-#include "driver.h"
-#include "swapchain.h"
-
-struct hwvulkan_device_t;
-
-namespace vulkan {
-
-// -----------------------------------------------------------------------------
-// loader.cpp
-
-const VkAllocationCallbacks* GetAllocator(VkInstance instance);
-const VkAllocationCallbacks* GetAllocator(VkDevice device);
-VkInstance GetDriverInstance(VkInstance instance);
-const driver::InstanceDriverTable& GetDriverDispatch(VkInstance instance);
-const driver::DeviceDriverTable& GetDriverDispatch(VkDevice device);
-const driver::DeviceDriverTable& GetDriverDispatch(VkQueue queue);
-driver::DebugReportCallbackList& GetDebugReportCallbacks(VkInstance instance);
-
-}  // namespace vulkan
-
-#endif  // LIBVULKAN_LOADER_H
