* The code to replay these entrypoints is now in the non-codegen'd glvreplay_xgl_xglreplay.cpp
rc_body.append(' glv_replay::GLV_REPLAY_RESULT manually_handle_xglFreeMemory(struct_xglFreeMemory* pPacket);')
rc_body.append(' glv_replay::GLV_REPLAY_RESULT manually_handle_xglMapMemory(struct_xglMapMemory* pPacket);')
rc_body.append(' glv_replay::GLV_REPLAY_RESULT manually_handle_xglUnmapMemory(struct_xglUnmapMemory* pPacket);')
+ rc_body.append(' glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11AssociateConnection(struct_xglWsiX11AssociateConnection* pPacket);')
+ rc_body.append(' glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11GetMSC(struct_xglWsiX11GetMSC* pPacket);')
+ rc_body.append(' glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11CreatePresentableImage(struct_xglWsiX11CreatePresentableImage* pPacket);')
+ rc_body.append(' glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11QueuePresent(struct_xglWsiX11QueuePresent* pPacket);')
rc_body.append(self._map_decl('XGL_GPU_MEMORY', 'XGLAllocInfo', 'm_mapData'))
# Custom code for 1-off memory mapping functions
rc_body.append(' void add_entry_to_mapData(XGL_GPU_MEMORY handle, XGL_GPU_SIZE size)')
def _gen_replay_wsi_associate_connection(self):
wac_body = []
- wac_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
- wac_body.append(' //associate with the replayers Wsi connection rather than tracers')
- wac_body.append(' replayResult = m_xglFuncs.real_xglWsiX11AssociateConnection(remap(pPacket->gpu), &(m_display->m_WsiConnection));')
- wac_body.append('#elif defined(WIN32)')
- wac_body.append(' //TBD')
- wac_body.append(' replayResult = XGL_SUCCESS;')
- wac_body.append('#endif')
+ wac_body.append(' returnValue = manually_handle_xglWsiX11AssociateConnection(pPacket);')
return "\n".join(wac_body)
def _gen_replay_wsi_get_msc(self):
wgm_body = []
- wgm_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
- wgm_body.append(' xcb_window_t window = m_display->m_XcbWindow;')
- wgm_body.append(' replayResult = m_xglFuncs.real_xglWsiX11GetMSC(remap(pPacket->device), window, pPacket->crtc, pPacket->pMsc);')
- wgm_body.append('#elif defined(WIN32)')
- wgm_body.append(' //TBD')
- wgm_body.append(' replayResult = XGL_SUCCESS;')
- wgm_body.append('#else')
-
- wgm_body.append('#endif')
+ wgm_body.append(' returnValue = manually_handle_xglWsiX11GetMSC(pPacket);')
return "\n".join(wgm_body)
def _gen_replay_wsi_create_presentable_image(self):
cpi_body = []
- cpi_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
- cpi_body.append(' XGL_IMAGE img;')
- cpi_body.append(' XGL_GPU_MEMORY mem;')
- cpi_body.append(' m_display->imageHeight.push_back(pPacket->pCreateInfo->extent.height);')
- cpi_body.append(' m_display->imageWidth.push_back(pPacket->pCreateInfo->extent.width);')
- cpi_body.append(' replayResult = m_xglFuncs.real_xglWsiX11CreatePresentableImage(remap(pPacket->device), pPacket->pCreateInfo, &img, &mem);')
- cpi_body.append(' if (replayResult == XGL_SUCCESS)')
- cpi_body.append(' {')
- cpi_body.append(' if (pPacket->pImage != NULL)')
- cpi_body.append(' add_to_map(pPacket->pImage, &img);')
- cpi_body.append(' if(pPacket->pMem != NULL)')
- cpi_body.append(' add_to_map(pPacket->pMem, &mem);')
- cpi_body.append(' m_display->imageHandles.push_back(img);')
- cpi_body.append(' m_display->imageMemory.push_back(mem);')
- cpi_body.append(' }')
- cpi_body.append('#elif defined(WIN32)')
- cpi_body.append(' //TBD')
- cpi_body.append(' replayResult = XGL_SUCCESS;')
- cpi_body.append('#endif')
+ cpi_body.append(' returnValue = manually_handle_xglWsiX11CreatePresentableImage(pPacket);')
return "\n".join(cpi_body)
def _gen_replay_wsi_queue_present(self):
wqp_body = []
- wqp_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
- wqp_body.append(' XGL_WSI_X11_PRESENT_INFO pInfo;')
- wqp_body.append(' std::vector<int>::iterator it;')
- wqp_body.append(' memcpy(&pInfo, pPacket->pPresentInfo, sizeof(XGL_WSI_X11_PRESENT_INFO));')
- wqp_body.append(' pInfo.srcImage = remap(pPacket->pPresentInfo->srcImage);')
- wqp_body.append(' // use replayers Xcb window')
- wqp_body.append(' pInfo.destWindow = m_display->m_XcbWindow;')
- wqp_body.append(' replayResult = m_xglFuncs.real_xglWsiX11QueuePresent(remap(pPacket->queue), &pInfo, remap(pPacket->fence));')
- wqp_body.append(' it = std::find(m_screenshotFrames.begin(), m_screenshotFrames.end(), m_display->m_frameNumber);')
- wqp_body.append(' if (it != m_screenshotFrames.end())')
- wqp_body.append(' {')
- wqp_body.append(' for(unsigned int i=0; i<m_display->imageHandles.size(); i++)')
- wqp_body.append(' {')
- wqp_body.append(' if (m_display->imageHandles[i] == pInfo.srcImage)')
- wqp_body.append(' {')
- wqp_body.append(' char frameName[32];')
- wqp_body.append(' sprintf(frameName, "%d",m_display->m_frameNumber);')
- wqp_body.append(' glvWritePPM(frameName, m_display->imageWidth[i], m_display->imageHeight[i],')
- wqp_body.append(' m_display->imageHandles[i], m_display->imageMemory[i], &m_xglFuncs);')
- wqp_body.append(' break;')
- wqp_body.append(' }')
- wqp_body.append(' }')
- wqp_body.append(' }')
- wqp_body.append('#elif defined(WIN32)')
- wqp_body.append(' //TBD')
- wqp_body.append(' replayResult = XGL_SUCCESS;')
- wqp_body.append('#endif')
- wqp_body.append(' m_display->m_frameNumber++;')
+ wqp_body.append(' returnValue = manually_handle_xglWsiX11QueuePresent(pPacket);')
return "\n".join(wqp_body)
def _gen_replay_free_memory(self):
custom_check_ret_val = ['EnumerateGpus', 'GetGpuInfo', 'CreateDevice', 'GetExtensionSupport', 'QueueSubmit', 'GetObjectInfo',
'GetFormatInfo', 'GetImageSubresourceInfo', 'CreateDescriptorSetLayout', 'CreateGraphicsPipeline',
'CreateFramebuffer', 'CreateRenderPass', 'BeginCommandBuffer', 'StorePipeline', 'GetMultiGpuCompatibility',
- 'DestroyObject', 'WaitForFences', 'FreeMemory', 'MapMemory', 'UnmapMemory']
+ 'DestroyObject', 'WaitForFences', 'FreeMemory', 'MapMemory', 'UnmapMemory',
+ 'WsiX11AssociateConnection', 'WsiX11GetMSC', 'WsiX11CreatePresentableImage', 'WsiX11QueuePresent']
# multi-gpu Open funcs w/ list of local params to create
custom_open_params = {'OpenSharedMemory': (-1,),
'OpenSharedQueueSemaphore': (-1,),
header_txt.append('#include "glv_trace_packet_identifiers.h"\n')
header_txt.append('extern "C" {\n')
header_txt.append('#include "glv_vk_vk_structs.h"\n')
+ header_txt.append('#include "glv_vk_vkwsix11ext_structs.h"\n')
header_txt.append('}\n')
header_txt.append('#include "xgl.h"')
header_txt.append('#include "xglDbg.h"')
header_txt = []
header_txt.append('#include "glvreplay_xgl_replay.h"\n')
header_txt.append('#include "glvreplay_xgl.h"\n')
- header_txt.append('#include "glvreplay_xgl_write_ppm.h"\n')
header_txt.append('#include "glvreplay_main.h"\n')
header_txt.append('#include <algorithm>')
header_txt.append('#include <queue>')
#include "glv_vk_vk_structs.h"
+#include "glv_vk_vkwsix11ext_structs.h"
+
}
#include "xgl.h"
glv_replay::GLV_REPLAY_RESULT manually_handle_xglFreeMemory(struct_xglFreeMemory* pPacket);
glv_replay::GLV_REPLAY_RESULT manually_handle_xglMapMemory(struct_xglMapMemory* pPacket);
glv_replay::GLV_REPLAY_RESULT manually_handle_xglUnmapMemory(struct_xglUnmapMemory* pPacket);
+ glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11AssociateConnection(struct_xglWsiX11AssociateConnection* pPacket);
+ glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11GetMSC(struct_xglWsiX11GetMSC* pPacket);
+ glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11CreatePresentableImage(struct_xglWsiX11CreatePresentableImage* pPacket);
+ glv_replay::GLV_REPLAY_RESULT manually_handle_xglWsiX11QueuePresent(struct_xglWsiX11QueuePresent* pPacket);
std::map<XGL_GPU_MEMORY, XGLAllocInfo> m_mapData;
void add_entry_to_mapData(XGL_GPU_MEMORY handle, XGL_GPU_SIZE size)
{
#include "glvreplay_xgl.h"
-#include "glvreplay_xgl_write_ppm.h"
-
#include "glvreplay_main.h"
#include <algorithm>
case GLV_TPI_XGL_xglWsiX11AssociateConnection:
{
struct_xglWsiX11AssociateConnection* pPacket = (struct_xglWsiX11AssociateConnection*)(packet->pBody);
-#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
- //associate with the replayers Wsi connection rather than tracers
- replayResult = m_xglFuncs.real_xglWsiX11AssociateConnection(remap(pPacket->gpu), &(m_display->m_WsiConnection));
-#elif defined(WIN32)
- //TBD
- replayResult = XGL_SUCCESS;
-#endif
- CHECK_RETURN_VALUE(xglWsiX11AssociateConnection);
+ returnValue = manually_handle_xglWsiX11AssociateConnection(pPacket);
break;
}
case GLV_TPI_XGL_xglWsiX11GetMSC:
{
struct_xglWsiX11GetMSC* pPacket = (struct_xglWsiX11GetMSC*)(packet->pBody);
-#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
- xcb_window_t window = m_display->m_XcbWindow;
- replayResult = m_xglFuncs.real_xglWsiX11GetMSC(remap(pPacket->device), window, pPacket->crtc, pPacket->pMsc);
-#elif defined(WIN32)
- //TBD
- replayResult = XGL_SUCCESS;
-#else
-#endif
- CHECK_RETURN_VALUE(xglWsiX11GetMSC);
+ returnValue = manually_handle_xglWsiX11GetMSC(pPacket);
break;
}
case GLV_TPI_XGL_xglWsiX11CreatePresentableImage:
{
struct_xglWsiX11CreatePresentableImage* pPacket = (struct_xglWsiX11CreatePresentableImage*)(packet->pBody);
-#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
- XGL_IMAGE img;
- XGL_GPU_MEMORY mem;
- m_display->imageHeight.push_back(pPacket->pCreateInfo->extent.height);
- m_display->imageWidth.push_back(pPacket->pCreateInfo->extent.width);
- replayResult = m_xglFuncs.real_xglWsiX11CreatePresentableImage(remap(pPacket->device), pPacket->pCreateInfo, &img, &mem);
- if (replayResult == XGL_SUCCESS)
- {
- if (pPacket->pImage != NULL)
- add_to_map(pPacket->pImage, &img);
- if(pPacket->pMem != NULL)
- add_to_map(pPacket->pMem, &mem);
- m_display->imageHandles.push_back(img);
- m_display->imageMemory.push_back(mem);
- }
-#elif defined(WIN32)
- //TBD
- replayResult = XGL_SUCCESS;
-#endif
- CHECK_RETURN_VALUE(xglWsiX11CreatePresentableImage);
+ returnValue = manually_handle_xglWsiX11CreatePresentableImage(pPacket);
break;
}
case GLV_TPI_XGL_xglWsiX11QueuePresent:
{
struct_xglWsiX11QueuePresent* pPacket = (struct_xglWsiX11QueuePresent*)(packet->pBody);
-#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
- XGL_WSI_X11_PRESENT_INFO pInfo;
- std::vector<int>::iterator it;
- memcpy(&pInfo, pPacket->pPresentInfo, sizeof(XGL_WSI_X11_PRESENT_INFO));
- pInfo.srcImage = remap(pPacket->pPresentInfo->srcImage);
- // use replayers Xcb window
- pInfo.destWindow = m_display->m_XcbWindow;
- replayResult = m_xglFuncs.real_xglWsiX11QueuePresent(remap(pPacket->queue), &pInfo, remap(pPacket->fence));
- it = std::find(m_screenshotFrames.begin(), m_screenshotFrames.end(), m_display->m_frameNumber);
- if (it != m_screenshotFrames.end())
- {
- for(unsigned int i=0; i<m_display->imageHandles.size(); i++)
- {
- if (m_display->imageHandles[i] == pInfo.srcImage)
- {
- char frameName[32];
- sprintf(frameName, "%d",m_display->m_frameNumber);
- glvWritePPM(frameName, m_display->imageWidth[i], m_display->imageHeight[i],
- m_display->imageHandles[i], m_display->imageMemory[i], &m_xglFuncs);
- break;
- }
- }
- }
-#elif defined(WIN32)
- //TBD
- replayResult = XGL_SUCCESS;
-#endif
- m_display->m_frameNumber++;
- CHECK_RETURN_VALUE(xglWsiX11QueuePresent);
+ returnValue = manually_handle_xglWsiX11QueuePresent(pPacket);
break;
}
default:
#include "glvreplay_xgl_replay.h"
#include "glvreplay_xgl.h"
#include "glvreplay_xgl_settings.h"
+#include "glvreplay_xgl_write_ppm.h"
#include <algorithm>
#include <queue>
return returnValue;
}
+glv_replay::GLV_REPLAY_RESULT xglReplay::manually_handle_xglWsiX11AssociateConnection(struct_xglWsiX11AssociateConnection* pPacket)
+{
+ XGL_RESULT replayResult = XGL_ERROR_UNKNOWN;
+ glv_replay::GLV_REPLAY_RESULT returnValue = glv_replay::GLV_REPLAY_SUCCESS;
+#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
+ //associate with the replayers Wsi connection rather than tracers
+ replayResult = m_xglFuncs.real_xglWsiX11AssociateConnection(remap(pPacket->gpu), &(m_display->m_WsiConnection));
+#elif defined(WIN32)
+ //TBD
+ replayResult = XGL_SUCCESS;
+#endif
+ CHECK_RETURN_VALUE(xglWsiX11AssociateConnection);
+ return returnValue;
+}
+
+glv_replay::GLV_REPLAY_RESULT xglReplay::manually_handle_xglWsiX11GetMSC(struct_xglWsiX11GetMSC* pPacket)
+{
+ XGL_RESULT replayResult = XGL_ERROR_UNKNOWN;
+ glv_replay::GLV_REPLAY_RESULT returnValue = glv_replay::GLV_REPLAY_SUCCESS;
+#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
+ xcb_window_t window = m_display->m_XcbWindow;
+ replayResult = m_xglFuncs.real_xglWsiX11GetMSC(remap(pPacket->device), window, pPacket->crtc, pPacket->pMsc);
+#elif defined(WIN32)
+ //TBD
+ replayResult = XGL_SUCCESS;
+#else
+#endif
+ CHECK_RETURN_VALUE(xglWsiX11GetMSC);
+ return returnValue;
+}
+
+glv_replay::GLV_REPLAY_RESULT xglReplay::manually_handle_xglWsiX11CreatePresentableImage(struct_xglWsiX11CreatePresentableImage* pPacket)
+{
+ XGL_RESULT replayResult = XGL_ERROR_UNKNOWN;
+ glv_replay::GLV_REPLAY_RESULT returnValue = glv_replay::GLV_REPLAY_SUCCESS;
+#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
+ XGL_IMAGE img;
+ XGL_GPU_MEMORY mem;
+ m_display->imageHeight.push_back(pPacket->pCreateInfo->extent.height);
+ m_display->imageWidth.push_back(pPacket->pCreateInfo->extent.width);
+ replayResult = m_xglFuncs.real_xglWsiX11CreatePresentableImage(remap(pPacket->device), pPacket->pCreateInfo, &img, &mem);
+ if (replayResult == XGL_SUCCESS)
+ {
+ if (pPacket->pImage != NULL)
+ add_to_map(pPacket->pImage, &img);
+ if(pPacket->pMem != NULL)
+ add_to_map(pPacket->pMem, &mem);
+ m_display->imageHandles.push_back(img);
+ m_display->imageMemory.push_back(mem);
+ }
+#elif defined(WIN32)
+ //TBD
+ replayResult = XGL_SUCCESS;
+#endif
+ CHECK_RETURN_VALUE(xglWsiX11CreatePresentableImage);
+ return returnValue;
+}
+
+glv_replay::GLV_REPLAY_RESULT xglReplay::manually_handle_xglWsiX11QueuePresent(struct_xglWsiX11QueuePresent* pPacket)
+{
+ XGL_RESULT replayResult = XGL_ERROR_UNKNOWN;
+ glv_replay::GLV_REPLAY_RESULT returnValue = glv_replay::GLV_REPLAY_SUCCESS;
+#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)
+ XGL_WSI_X11_PRESENT_INFO pInfo;
+ std::vector<int>::iterator it;
+ memcpy(&pInfo, pPacket->pPresentInfo, sizeof(XGL_WSI_X11_PRESENT_INFO));
+ pInfo.srcImage = remap(pPacket->pPresentInfo->srcImage);
+ // use replayers Xcb window
+ pInfo.destWindow = m_display->m_XcbWindow;
+ replayResult = m_xglFuncs.real_xglWsiX11QueuePresent(remap(pPacket->queue), &pInfo, remap(pPacket->fence));
+ it = std::find(m_screenshotFrames.begin(), m_screenshotFrames.end(), m_display->m_frameNumber);
+ if (it != m_screenshotFrames.end())
+ {
+ for(unsigned int i=0; i<m_display->imageHandles.size(); i++)
+ {
+ if (m_display->imageHandles[i] == pInfo.srcImage)
+ {
+ char frameName[32];
+ sprintf(frameName, "%d",m_display->m_frameNumber);
+ glvWritePPM(frameName, m_display->imageWidth[i], m_display->imageHeight[i],
+ m_display->imageHandles[i], m_display->imageMemory[i], &m_xglFuncs);
+ break;
+ }
+ }
+ }
+#elif defined(WIN32)
+ //TBD
+ replayResult = XGL_SUCCESS;
+#endif
+ m_display->m_frameNumber++;
+ CHECK_RETURN_VALUE(xglWsiX11QueuePresent);
+ return returnValue;
+}
+