diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp
index 391aaa5..9305358 100644
--- a/src/gpu/vk/GrVkCaps.cpp
+++ b/src/gpu/vk/GrVkCaps.cpp
@@ -844,7 +844,7 @@
     }
 }
 
-bool GrVkCaps::isConfigTexturable(VkFormat format) const {
+bool GrVkCaps::isFormatTexturable(VkFormat format) const {
     if (!GrVkFormatIsSupported(format)) {
         return false;
     }
@@ -858,7 +858,11 @@
     if (!GrPixelConfigToVkFormat(config, &format)) {
         return false;
     }
-    return this->isConfigTexturable(format);
+    return this->isFormatTexturable(format);
+}
+
+bool GrVkCaps::isFormatRenderable(VkFormat format) const {
+    return this->maxRenderTargetSampleCount(format) > 0;
 }
 
 int GrVkCaps::getRenderTargetSampleCount(int requestedCount, GrPixelConfig config) const {
diff --git a/src/gpu/vk/GrVkCaps.h b/src/gpu/vk/GrVkCaps.h
index 7a4656d..5cc7598 100644
--- a/src/gpu/vk/GrVkCaps.h
+++ b/src/gpu/vk/GrVkCaps.h
@@ -32,13 +32,15 @@
              uint32_t instanceVersion, uint32_t physicalDeviceVersion,
              const GrVkExtensions& extensions);
 
-    bool isConfigTexturable(VkFormat) const;
+    bool isFormatTexturable(VkFormat) const;
     bool isConfigTexturable(GrPixelConfig config) const override;
 
     bool isConfigCopyable(GrPixelConfig config) const override {
         return true;
     }
 
+    bool isFormatRenderable(VkFormat) const;
+
     int getRenderTargetSampleCount(int requestedCount, GrPixelConfig config) const override;
     int getRenderTargetSampleCount(int requestedCount, VkFormat) const;
     int maxRenderTargetSampleCount(GrPixelConfig config) const override;
@@ -46,7 +48,7 @@
 
     bool surfaceSupportsReadPixels(const GrSurface*) const override;
 
-    bool isConfigTexturableLinearly(VkFormat format) const {
+    bool isFormatTexturableLinearly(VkFormat format) const {
         return SkToBool(FormatInfo::kTextureable_Flag & this->getFormatInfo(format).fLinearFlags);
     }
 
diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp
index 92bd287..b8385ae 100644
--- a/src/gpu/vk/GrVkGpu.cpp
+++ b/src/gpu/vk/GrVkGpu.cpp
@@ -1161,12 +1161,12 @@
 
 static bool check_tex_image_info(const GrVkCaps& caps, const GrVkImageInfo& info) {
     if (info.fImageTiling == VK_IMAGE_TILING_OPTIMAL) {
-        if (!caps.isConfigTexturable(info.fFormat)) {
+        if (!caps.isFormatTexturable(info.fFormat)) {
             return false;
         }
     } else {
         SkASSERT(info.fImageTiling == VK_IMAGE_TILING_LINEAR);
-        if (!caps.isConfigTexturableLinearly(info.fFormat)) {
+        if (!caps.isFormatTexturableLinearly(info.fFormat)) {
             return false;
         }
     }
