xgl: Remove PIPELINE_DELTA.

bug: 13065
header: 0.60.0

Remove PIPELINE_DELTA.

Add functions for creating and loading pipeline derivatives.

v2: fix warnings (olv)
diff --git a/icd/intel/cmd.h b/icd/intel/cmd.h
index 209e7f8..be8bf13 100644
--- a/icd/intel/cmd.h
+++ b/icd/intel/cmd.h
@@ -35,7 +35,6 @@
 
 struct intel_pipeline;
 struct intel_pipeline_shader;
-struct intel_pipeline_delta;
 struct intel_viewport_state;
 struct intel_raster_state;
 struct intel_msaa_state;
@@ -50,7 +49,7 @@
 
 /*
  * We know what workarounds are needed for intel_pipeline.  These are mostly
- * for intel_pipeline_delta.
+ * for pipeline derivatives.
  */
 enum intel_cmd_wa_flags {
     /*
@@ -146,8 +145,6 @@
     struct {
         const struct intel_pipeline *graphics;
         const struct intel_pipeline *compute;
-        const struct intel_pipeline_delta *graphics_delta;
-        const struct intel_pipeline_delta *compute_delta;
 
         uint32_t vs_offset;
         uint32_t tcs_offset;
diff --git a/icd/intel/cmd_pipeline.c b/icd/intel/cmd_pipeline.c
index 00851e5..84e24ce 100644
--- a/icd/intel/cmd_pipeline.c
+++ b/icd/intel/cmd_pipeline.c
@@ -3025,18 +3025,6 @@
     cmd->bind.pipeline.compute = pipeline;
 }
 
-static void cmd_bind_graphics_delta(struct intel_cmd *cmd,
-                                    const struct intel_pipeline_delta *delta)
-{
-    cmd->bind.pipeline.graphics_delta = delta;
-}
-
-static void cmd_bind_compute_delta(struct intel_cmd *cmd,
-                                   const struct intel_pipeline_delta *delta)
-{
-    cmd->bind.pipeline.compute_delta = delta;
-}
-
 static void cmd_bind_graphics_dset(struct intel_cmd *cmd,
                                    const struct intel_desc_set *dset,
                                    const uint32_t *dynamic_offsets)
@@ -3333,26 +3321,6 @@
     }
 }
 
-ICD_EXPORT void XGLAPI xglCmdBindPipelineDelta(
-    XGL_CMD_BUFFER                              cmdBuffer,
-    XGL_PIPELINE_BIND_POINT                     pipelineBindPoint,
-    XGL_PIPELINE_DELTA                          delta)
-{
-    struct intel_cmd *cmd = intel_cmd(cmdBuffer);
-
-    switch (pipelineBindPoint) {
-    case XGL_PIPELINE_BIND_POINT_COMPUTE:
-        cmd_bind_compute_delta(cmd, delta);
-        break;
-    case XGL_PIPELINE_BIND_POINT_GRAPHICS:
-        cmd_bind_graphics_delta(cmd, delta);
-        break;
-    default:
-        cmd_fail(cmd, XGL_ERROR_INVALID_VALUE);
-        break;
-    }
-}
-
 ICD_EXPORT void XGLAPI xglCmdBindDynamicStateObject(
     XGL_CMD_BUFFER                              cmdBuffer,
     XGL_STATE_BIND_POINT                        stateBindPoint,
diff --git a/icd/intel/pipeline.c b/icd/intel/pipeline.c
index 2b6c078..be21b42 100644
--- a/icd/intel/pipeline.c
+++ b/icd/intel/pipeline.c
@@ -1363,6 +1363,20 @@
             (struct intel_pipeline **) pPipeline);
 }
 
+ICD_EXPORT XGL_RESULT XGLAPI xglCreateGraphicsPipelineDerivative(
+    XGL_DEVICE                                  device,
+    const XGL_GRAPHICS_PIPELINE_CREATE_INFO*    pCreateInfo,
+    XGL_PIPELINE                                basePipeline,
+    XGL_PIPELINE*                               pPipeline)
+{
+    struct intel_dev *dev = intel_dev(device);
+
+    /* TODO: Use basePipeline to optimize creation of derivative */
+
+    return graphics_pipeline_create(dev, pCreateInfo,
+            (struct intel_pipeline **) pPipeline);
+}
+
 ICD_EXPORT XGL_RESULT XGLAPI xglCreateComputePipeline(
     XGL_DEVICE                                  device,
     const XGL_COMPUTE_PIPELINE_CREATE_INFO*     pCreateInfo,
@@ -1388,11 +1402,12 @@
     return XGL_ERROR_UNAVAILABLE;
 }
 
-ICD_EXPORT XGL_RESULT XGLAPI xglCreatePipelineDelta(
+ICD_EXPORT XGL_RESULT XGLAPI xglLoadPipelineDerivative(
     XGL_DEVICE                                  device,
-    XGL_PIPELINE                                p1,
-    XGL_PIPELINE                                p2,
-    XGL_PIPELINE_DELTA*                         delta)
+    size_t                                      dataSize,
+    const void*                                 pData,
+    XGL_PIPELINE                                basePipeline,
+    XGL_PIPELINE*                               pPipeline)
 {
     return XGL_ERROR_UNAVAILABLE;
 }