Add support for vertex and geometry shader textures

Adds a visibility bitfield to GrTextureAccess that controls in which
shaders the texture should be accessible. Also adds caps and
validation to ensure we don't exceed texture limits.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1782583002

Review URL: https://codereview.chromium.org/1782583002
diff --git a/src/gpu/vk/GrVkTexture.cpp b/src/gpu/vk/GrVkTexture.cpp
index c8247ca..5c4c3bd 100644
--- a/src/gpu/vk/GrVkTexture.cpp
+++ b/src/gpu/vk/GrVkTexture.cpp
@@ -20,7 +20,8 @@
                          const GrVkImageView* view)
     : GrSurface(gpu, lifeCycle, desc)
     , GrVkImage(imageResource)
-    , INHERITED(gpu, lifeCycle, desc, false) // false because we don't upload MIP data in Vk yet
+    , INHERITED(gpu, lifeCycle, desc, kSampler2D_GrSLType,
+                false) // false because we don't upload MIP data in Vk yet
     , fTextureView(view) {
     this->registerWithCache();
 }
@@ -34,7 +35,8 @@
                          Derived)
     : GrSurface(gpu, lifeCycle, desc)
     , GrVkImage(imageResource)
-    , INHERITED(gpu, lifeCycle, desc, false) // false because we don't upload MIP data in Vk yet
+    , INHERITED(gpu, lifeCycle, desc, kSampler2D_GrSLType,
+                false) // false because we don't upload MIP data in Vk yet
     , fTextureView(view) {}