aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2015-02-04 14:57:24 -0700
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-02-04 17:58:12 -0700
commit2e586cc89f730c50b39631e83de7cb9862a0f380 (patch)
treee82ad71a1b434c61017fa7bfb6c1ac91d5d9d9a8
parent82ac45d59e5d3c96d8b97ac73da08dcbef36525a (diff)
downloadusermoji-2e586cc89f730c50b39631e83de7cb9862a0f380.tar.xz
glave: Fix bugs with UpdateDescriptors pUpdateChain on replay
-rwxr-xr-xglave-generate.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/glave-generate.py b/glave-generate.py
index 7b9e76e5..80419f2e 100755
--- a/glave-generate.py
+++ b/glave-generate.py
@@ -2623,6 +2623,7 @@ class Subcommand(object):
# and remap all of the handles inside of the update structs
ud_body.append(' XGL_UPDATE_SAMPLERS* pUpdateChain = (XGL_UPDATE_SAMPLERS*)pPacket->pUpdateChain;')
ud_body.append(' void* pLocalUpdateChain = NULL;')
+ ud_body.append(' XGL_UPDATE_SAMPLERS* pPrev = NULL;')
ud_body.append(' void* pLocalUpdateChainHEAD = NULL;')
ud_body.append(' size_t blockSize = 0;')
ud_body.append(' while (pUpdateChain) {')
@@ -2633,8 +2634,8 @@ class Subcommand(object):
ud_body.append(' pLocalUpdateChain = (void*)malloc(blockSize);')
ud_body.append(' memcpy(pLocalUpdateChain, pUpdateChain, blockSize);')
ud_body.append(' for (uint32_t i = 0; i < ((XGL_UPDATE_SAMPLERS*)pLocalUpdateChain)->count; i++) {')
- ud_body.append(' XGL_SAMPLER localSampler = remap(((XGL_UPDATE_SAMPLERS*)pUpdateChain)->pSamplers[i]);')
- ud_body.append(' memcpy((void*)&((XGL_UPDATE_SAMPLERS*)pLocalUpdateChain)->pSamplers[i], &localSampler, sizeof(XGL_SAMPLER));')
+ ud_body.append(' XGL_SAMPLER* pLocalSampler = (XGL_SAMPLER*) &((XGL_UPDATE_SAMPLERS*)pLocalUpdateChain)->pSamplers[i];')
+ ud_body.append(' *pLocalSampler = remap(((XGL_UPDATE_SAMPLERS*)pUpdateChain)->pSamplers[i]);')
ud_body.append(' }')
ud_body.append(' break;')
ud_body.append(' case XGL_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES:')
@@ -2655,8 +2656,8 @@ class Subcommand(object):
ud_body.append(' pLocalUpdateChain = malloc(blockSize);')
ud_body.append(' memcpy(pLocalUpdateChain, pUpdateChain, blockSize);')
ud_body.append(' for (uint32_t i = 0; i < ((XGL_UPDATE_IMAGES*)pLocalUpdateChain)->count; i++) {')
- ud_body.append(' XGL_IMAGE_VIEW localView = remap(((XGL_UPDATE_IMAGES*)pUpdateChain)->pImageViews[i]->view);')
- ud_body.append(' memcpy((void*)&((XGL_UPDATE_IMAGES*)pLocalUpdateChain)->pImageViews[i]->view, &localView, sizeof(XGL_IMAGE_VIEW));')
+ ud_body.append(' XGL_IMAGE_VIEW* pLocalView = (XGL_IMAGE_VIEW*) &((XGL_UPDATE_IMAGES*)pUpdateChain)->pImageViews[i]->view;')
+ ud_body.append(' *pLocalView = remap(((XGL_UPDATE_IMAGES*)pUpdateChain)->pImageViews[i]->view);')
ud_body.append(' }')
ud_body.append(' break;')
ud_body.append(' case XGL_STRUCTURE_TYPE_UPDATE_BUFFERS:')
@@ -2664,8 +2665,8 @@ class Subcommand(object):
ud_body.append(' pLocalUpdateChain = malloc(blockSize);')
ud_body.append(' memcpy(pLocalUpdateChain, pUpdateChain, blockSize);')
ud_body.append(' for (uint32_t i = 0; i < ((XGL_UPDATE_BUFFERS*)pLocalUpdateChain)->count; i++) {')
- ud_body.append(' XGL_BUFFER_VIEW localView = remap(((XGL_UPDATE_BUFFERS*)pUpdateChain)->pBufferViews[i]->view);')
- ud_body.append(' memcpy((void*)&((XGL_UPDATE_BUFFERS*)pLocalUpdateChain)->pBufferViews[i]->view, &localView, sizeof(XGL_BUFFER_VIEW));')
+ ud_body.append(' XGL_BUFFER_VIEW* pLocalView = (XGL_BUFFER_VIEW*) &((XGL_UPDATE_BUFFERS*)pUpdateChain)->pBufferViews[i]->view;')
+ ud_body.append(' *pLocalView = remap(((XGL_UPDATE_BUFFERS*)pUpdateChain)->pBufferViews[i]->view);')
ud_body.append(' }')
ud_body.append(' break;')
ud_body.append(' case XGL_STRUCTURE_TYPE_UPDATE_AS_COPY:')
@@ -2681,8 +2682,11 @@ class Subcommand(object):
ud_body.append(' if (NULL == pLocalUpdateChainHEAD) {')
ud_body.append(' pLocalUpdateChainHEAD = pLocalUpdateChain;')
ud_body.append(' }')
+ ud_body.append(' if (pPrev) {')
+ ud_body.append(' pPrev->pNext = pLocalUpdateChain;')
+ ud_body.append(' }')
+ ud_body.append(' pPrev = (XGL_UPDATE_SAMPLERS*)pLocalUpdateChain;')
ud_body.append(' pUpdateChain = (XGL_UPDATE_SAMPLERS*)pUpdateChain->pNext;')
- ud_body.append(' pLocalUpdateChain = (void*)((XGL_UPDATE_SAMPLERS*)pLocalUpdateChain)->pNext;')
ud_body.append(' }')
ud_body.append(' m_xglFuncs.real_xglUpdateDescriptors(remap(pPacket->descriptorSet), pLocalUpdateChainHEAD);')
ud_body.append(' pLocalUpdateChain = (XGL_UPDATE_SAMPLERS*)pLocalUpdateChainHEAD;')