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;
}