diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-03-25 15:37:49 -0600 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-04-16 17:33:26 +0800 |
| commit | 7e8bb56f2f68ab9c49d3bec3ff887d2706767393 (patch) | |
| tree | c065b3aad351dfde6cc574e387baaf30e7f00072 /layers | |
| parent | 8d2e34cfee1fbe06756316b7fff631c199c1b241 (diff) | |
| download | usermoji-7e8bb56f2f68ab9c49d3bec3ff887d2706767393.tar.xz | |
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)
Diffstat (limited to 'layers')
| -rw-r--r-- | layers/draw_state.c | 56 | ||||
| -rw-r--r-- | layers/mem_tracker.cpp | 17 |
2 files changed, 49 insertions, 24 deletions
diff --git a/layers/draw_state.c b/layers/draw_state.c index c764412b..5148be82 100644 --- a/layers/draw_state.c +++ b/layers/draw_state.c @@ -1666,13 +1666,8 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateImageView(XGL_DEVICE device, const X return result; } -XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateGraphicsPipeline(XGL_DEVICE device, const XGL_GRAPHICS_PIPELINE_CREATE_INFO* pCreateInfo, XGL_PIPELINE* pPipeline) +static void track_pipeline(const XGL_GRAPHICS_PIPELINE_CREATE_INFO* pCreateInfo, XGL_PIPELINE* pPipeline) { - XGL_RESULT result = nextTable.CreateGraphicsPipeline(device, pCreateInfo, pPipeline); - // Create LL HEAD for this Pipeline - char str[1024]; - sprintf(str, "Created Gfx Pipeline %p", (void*)*pPipeline); - layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, pPipeline, 0, DRAWSTATE_NONE, "DS", str); loader_platform_thread_lock_mutex(&globalLock); PIPELINE_NODE *pTrav = g_pPipelineHead; if (pTrav) { @@ -1695,6 +1690,35 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateGraphicsPipeline(XGL_DEVICE device, pTrav->pipeline = *pPipeline; initPipeline(pTrav, pCreateInfo); loader_platform_thread_unlock_mutex(&globalLock); +} + +XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateGraphicsPipeline(XGL_DEVICE device, const XGL_GRAPHICS_PIPELINE_CREATE_INFO* pCreateInfo, XGL_PIPELINE* pPipeline) +{ + XGL_RESULT result = nextTable.CreateGraphicsPipeline(device, pCreateInfo, pPipeline); + // Create LL HEAD for this Pipeline + char str[1024]; + sprintf(str, "Created Gfx Pipeline %p", (void*)*pPipeline); + layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, pPipeline, 0, DRAWSTATE_NONE, "DS", str); + + track_pipeline(pCreateInfo, pPipeline); + + return result; +} + +XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateGraphicsPipelineDerivative( + XGL_DEVICE device, + const XGL_GRAPHICS_PIPELINE_CREATE_INFO* pCreateInfo, + XGL_PIPELINE basePipeline, + XGL_PIPELINE* pPipeline) +{ + XGL_RESULT result = nextTable.CreateGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, pPipeline); + // Create LL HEAD for this Pipeline + char str[1024]; + sprintf(str, "Created Gfx Pipeline %p (derived from pipeline %p)", (void*)*pPipeline, basePipeline); + layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, pPipeline, 0, DRAWSTATE_NONE, "DS", str); + + track_pipeline(pCreateInfo, pPipeline); + return result; } @@ -2107,22 +2131,6 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdBindPipeline(XGL_CMD_BUFFER cmdBuffer, XGL_PI nextTable.CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline); } -XGL_LAYER_EXPORT void XGLAPI xglCmdBindPipelineDelta(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_PIPELINE_DELTA delta) -{ - GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer); - if (pCB) { - // TODO : Handle storing Pipeline Deltas to cmd buffer here - updateCBTracking(cmdBuffer); - addCmd(pCB, CMD_BINDPIPELINEDELTA); - } - else { - char str[1024]; - sprintf(str, "Attempt to use CmdBuffer %p that doesn't exist!", (void*)cmdBuffer); - layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, DRAWSTATE_INVALID_CMD_BUFFER, "DS", str); - } - nextTable.CmdBindPipelineDelta(cmdBuffer, pipelineBindPoint, delta); -} - XGL_LAYER_EXPORT void XGLAPI xglCmdBindDynamicStateObject(XGL_CMD_BUFFER cmdBuffer, XGL_STATE_BIND_POINT stateBindPoint, XGL_DYNAMIC_STATE_OBJECT state) { setLastBoundDynamicState(cmdBuffer, state, stateBindPoint); @@ -2837,6 +2845,8 @@ XGL_LAYER_EXPORT void* XGLAPI xglGetProcAddr(XGL_PHYSICAL_GPU gpu, const char* f return (void*) xglCreateImageView; if (!strcmp(funcName, "xglCreateGraphicsPipeline")) return (void*) xglCreateGraphicsPipeline; + if (!strcmp(funcName, "xglCreateGraphicsPipelineDerivative")) + return (void*) xglCreateGraphicsPipelineDerivative; if (!strcmp(funcName, "xglCreateSampler")) return (void*) xglCreateSampler; if (!strcmp(funcName, "xglCreateDescriptorSetLayout")) @@ -2873,8 +2883,6 @@ XGL_LAYER_EXPORT void* XGLAPI xglGetProcAddr(XGL_PHYSICAL_GPU gpu, const char* f return (void*) xglResetCommandBuffer; if (!strcmp(funcName, "xglCmdBindPipeline")) return (void*) xglCmdBindPipeline; - if (!strcmp(funcName, "xglCmdBindPipelineDelta")) - return (void*) xglCmdBindPipelineDelta; if (!strcmp(funcName, "xglCmdBindDynamicStateObject")) return (void*) xglCmdBindDynamicStateObject; if (!strcmp(funcName, "xglCmdBindDescriptorSet")) diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index 72fae402..2d840dc4 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -1217,6 +1217,21 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateGraphicsPipeline(XGL_DEVICE device, return result; } +XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateGraphicsPipelineDerivative( + XGL_DEVICE device, + const XGL_GRAPHICS_PIPELINE_CREATE_INFO* pCreateInfo, + XGL_PIPELINE basePipeline, + XGL_PIPELINE* pPipeline) +{ + XGL_RESULT result = nextTable.CreateGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, pPipeline); + if (result == XGL_SUCCESS) { + loader_platform_thread_lock_mutex(&globalLock); + insertGlobalObjectNode(*pPipeline, pCreateInfo->sType, pCreateInfo, sizeof(XGL_GRAPHICS_PIPELINE_CREATE_INFO), "graphics_pipeline"); + loader_platform_thread_unlock_mutex(&globalLock); + } + return result; +} + XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateComputePipeline(XGL_DEVICE device, const XGL_COMPUTE_PIPELINE_CREATE_INFO* pCreateInfo, XGL_PIPELINE* pPipeline) { XGL_RESULT result = nextTable.CreateComputePipeline(device, pCreateInfo, pPipeline); @@ -1828,6 +1843,8 @@ XGL_LAYER_EXPORT void* XGLAPI xglGetProcAddr(XGL_PHYSICAL_GPU gpu, const char* f return (void*) xglCreateShader; if (!strcmp(funcName, "xglCreateGraphicsPipeline")) return (void*) xglCreateGraphicsPipeline; + if (!strcmp(funcName, "xglCreateGraphicsPipelineDerivative")) + return (void*) xglCreateGraphicsPipelineDerivative; if (!strcmp(funcName, "xglCreateComputePipeline")) return (void*) xglCreateComputePipeline; if (!strcmp(funcName, "xglCreateSampler")) |
