Move creation of GrProgramDesc to GrCaps-derived classes

We need a means of creating GrProgramDescs pre-flush w/o needing to know the specific backend in play.

Bug: skia:9455
Change-Id: Iac14ff8eda262ee6d2ad666c5d2e27e7a375c210
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/256698
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/gl/GrGLGpuProgramCache.cpp b/src/gpu/gl/GrGLGpuProgramCache.cpp
index 9eff843..c5f9f2a 100644
--- a/src/gpu/gl/GrGLGpuProgramCache.cpp
+++ b/src/gpu/gl/GrGLGpuProgramCache.cpp
@@ -50,9 +50,8 @@
                                                const GrProgramInfo& programInfo) {
     const GrCaps& caps = *gpu->caps();
 
-    GrProgramDesc desc;
-    if (!GrProgramDesc::Build(&desc, renderTarget, programInfo, caps)) {
-
+    GrProgramDesc desc = caps.makeDesc(renderTarget, programInfo);
+    if (!desc.isValid()) {
         GrCapsDebugf(gpu->caps(), "Failed to gl program descriptor!\n");
         return nullptr;
     }