diff --git a/src/gpu/GrContextThreadSafeProxy.cpp b/src/gpu/GrContextThreadSafeProxy.cpp
index 9a1a37a..5b00895 100644
--- a/src/gpu/GrContextThreadSafeProxy.cpp
+++ b/src/gpu/GrContextThreadSafeProxy.cpp
@@ -15,6 +15,10 @@
 #include "src/gpu/GrSkSLFPFactoryCache.h"
 #include "src/image/SkSurface_Gpu.h"
 
+#ifdef SK_VULKAN
+#include "src/gpu/vk/GrVkCaps.h"
+#endif
+
 GrContextThreadSafeProxy::GrContextThreadSafeProxy(GrBackendApi backend,
                                                    const GrContextOptions& options,
                                                    uint32_t contextID)
@@ -33,7 +37,8 @@
                                      const SkImageInfo& ii, const GrBackendFormat& backendFormat,
                                      int sampleCnt, GrSurfaceOrigin origin,
                                      const SkSurfaceProps& surfaceProps,
-                                     bool isMipMapped, bool willUseGLFBO0, bool isTextureable) {
+                                     bool isMipMapped, bool willUseGLFBO0, bool isTextureable,
+                                     GrProtected isProtected) {
     if (!backendFormat.isValid()) {
         return SkSurfaceCharacterization(); // return an invalid characterization
     }
@@ -73,6 +78,21 @@
         return SkSurfaceCharacterization(); // return an invalid characterization
     }
 
+    if (GrBackendApi::kVulkan == backendFormat.backend()) {
+        if (GrBackendApi::kVulkan != this->backend()) {
+            return SkSurfaceCharacterization(); // return an invalid characterization
+        }
+
+#ifdef SK_VULKAN
+        const GrVkCaps* vkCaps = (const GrVkCaps*) this->caps();
+
+        // The protection status of the characterization and the context need to match
+        if (isProtected != GrProtected(vkCaps->supportsProtectedMemory())) {
+            return SkSurfaceCharacterization(); // return an invalid characterization
+        }
+#endif
+    }
+
     return SkSurfaceCharacterization(sk_ref_sp<GrContextThreadSafeProxy>(this),
                                      cacheMaxResourceBytes, ii, backendFormat,
                                      origin, sampleCnt,
@@ -80,6 +100,7 @@
                                      SkSurfaceCharacterization::MipMapped(isMipMapped),
                                      SkSurfaceCharacterization::UsesGLFBO0(willUseGLFBO0),
                                      SkSurfaceCharacterization::VulkanSecondaryCBCompatible(false),
+                                     isProtected,
                                      surfaceProps);
 }
 
