diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2015-02-04 14:57:24 -0700 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-02-04 17:58:12 -0700 |
| commit | 2e586cc89f730c50b39631e83de7cb9862a0f380 (patch) | |
| tree | e82ad71a1b434c61017fa7bfb6c1ac91d5d9d9a8 | |
| parent | 82ac45d59e5d3c96d8b97ac73da08dcbef36525a (diff) | |
| download | usermoji-2e586cc89f730c50b39631e83de7cb9862a0f380.tar.xz | |
glave: Fix bugs with UpdateDescriptors pUpdateChain on replay
| -rwxr-xr-x | glave-generate.py | 18 |
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;') |
