Get the trace player to work with Windows
This change modifies many of the generators to use "#if
defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)" to choose between using
XCB or WIN32 native.
diff --git a/glave-generate.py b/glave-generate.py
index ad82aa3..1f40af7 100755
--- a/glave-generate.py
+++ b/glave-generate.py
@@ -1845,20 +1845,20 @@
cd_body.append(' void resize_window(const unsigned int width, const unsigned int height);')
cd_body.append(' void process_event();')
cd_body.append(' // XGL_DEVICE get_device() { return m_dev[m_gpuIdx];}')
- cd_body.append('#if defined(WIN32)')
- cd_body.append(' HWND get_window_handle() { return m_windowHandle; }')
- cd_body.append('#elif defined(PLATFORM_LINUX)')
+ cd_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
cd_body.append(' xcb_window_t get_window_handle() { return m_XcbWindow; }')
+ cd_body.append('#elif defined(WIN32)')
+ cd_body.append(' HWND get_window_handle() { return m_windowHandle; }')
cd_body.append('#endif')
cd_body.append('private:')
cd_body.append(' XGL_RESULT init_xgl(const unsigned int gpu_idx);')
cd_body.append(' bool m_initedXGL;')
- cd_body.append('#if defined(WIN32)')
- cd_body.append(' HWND m_windowHandle;')
- cd_body.append('#elif defined(PLATFORM_LINUX)')
+ cd_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
cd_body.append(' XGL_WSI_X11_CONNECTION_INFO m_WsiConnection;')
cd_body.append(' xcb_screen_t *m_pXcbScreen;')
cd_body.append(' xcb_window_t m_XcbWindow;')
+ cd_body.append('#elif defined(WIN32)')
+ cd_body.append(' HWND m_windowHandle;')
cd_body.append('#endif')
cd_body.append(' unsigned int m_windowWidth;')
cd_body.append(' unsigned int m_windowHeight;')
@@ -2164,7 +2164,7 @@
di_body.append(' m_initedXGL = true;')
di_body.append(' }')
di_body.append('#endif')
- di_body.append('#if defined(PLATFORM_LINUX)')
+ di_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
di_body.append(' const xcb_setup_t *setup;')
di_body.append(' xcb_screen_iterator_t iter;')
di_body.append(' int scr;')
@@ -2189,19 +2189,19 @@
ds_body.append(' m_windowWidth(0),')
ds_body.append(' m_windowHeight(0)')
ds_body.append('{')
- ds_body.append('#if defined(WIN32)')
- ds_body.append(' m_windowHandle = NULL;')
- ds_body.append('#elif defined(PLATFORM_LINUX)')
+ ds_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
ds_body.append(' m_WsiConnection.pConnection = NULL;')
ds_body.append(' m_WsiConnection.root = 0;')
ds_body.append(' m_WsiConnection.provider = 0;')
ds_body.append(' m_pXcbScreen = NULL;')
ds_body.append(' m_XcbWindow = 0;')
+ ds_body.append('#elif defined(WIN32)')
+ ds_body.append(' m_windowHandle = NULL;')
ds_body.append('#endif')
ds_body.append('}')
ds_body.append('xglDisplay::~xglDisplay()')
ds_body.append('{')
- ds_body.append('#ifdef PLATFORM_LINUX')
+ ds_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
ds_body.append(' if (m_XcbWindow != 0)')
ds_body.append(' {')
ds_body.append(' xcb_destroy_window(m_WsiConnection.pConnection, m_XcbWindow);')
@@ -2234,10 +2234,10 @@
dw_body.append('#endif')
dw_body.append('int xglDisplay::set_window(glv_window_handle hWindow, unsigned int width, unsigned int height)')
dw_body.append('{')
- dw_body.append('#if defined(WIN32)')
- dw_body.append(' m_windowHandle = hWindow;')
- dw_body.append('#elif defined(PLATFORM_LINUX)')
+ dw_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
dw_body.append(' m_XcbWindow = hWindow;')
+ dw_body.append('#elif defined(WIN32)')
+ dw_body.append(' m_windowHandle = hWindow;')
dw_body.append('#endif')
dw_body.append(' m_windowWidth = width;')
dw_body.append(' m_windowHeight = height;')
@@ -2245,7 +2245,24 @@
dw_body.append('}\n')
dw_body.append('int xglDisplay::create_window(const unsigned int width, const unsigned int height)')
dw_body.append('{')
- dw_body.append('#if defined(WIN32)')
+ dw_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)\n')
+ dw_body.append(' uint32_t value_mask, value_list[32];')
+ dw_body.append(' m_XcbWindow = xcb_generate_id(m_WsiConnection.pConnection);\n')
+ dw_body.append(' value_mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;')
+ dw_body.append(' value_list[0] = m_pXcbScreen->black_pixel;')
+ dw_body.append(' value_list[1] = XCB_EVENT_MASK_KEY_RELEASE |')
+ dw_body.append(' XCB_EVENT_MASK_EXPOSURE;\n')
+ dw_body.append(' xcb_create_window(m_WsiConnection.pConnection,')
+ dw_body.append(' XCB_COPY_FROM_PARENT,')
+ dw_body.append(' m_XcbWindow, m_WsiConnection.root,')
+ dw_body.append(' 0, 0, width, height, 0,')
+ dw_body.append(' XCB_WINDOW_CLASS_INPUT_OUTPUT,')
+ dw_body.append(' m_pXcbScreen->root_visual,')
+ dw_body.append(' value_mask, value_list);\n')
+ dw_body.append(' xcb_map_window(m_WsiConnection.pConnection, m_XcbWindow);')
+ dw_body.append(' xcb_flush(m_WsiConnection.pConnection);')
+ dw_body.append(' return 0;')
+ dw_body.append('#elif defined(WIN32)')
dw_body.append(' // Register Window class')
dw_body.append(' WNDCLASSEX wcex = {};')
dw_body.append(' wcex.cbSize = sizeof( WNDCLASSEX);')
@@ -2278,35 +2295,11 @@
dw_body.append(' return -1;')
dw_body.append(' }')
dw_body.append(' return 0;')
- dw_body.append('#elif defined(PLATFORM_LINUX)\n')
- dw_body.append(' uint32_t value_mask, value_list[32];')
- dw_body.append(' m_XcbWindow = xcb_generate_id(m_WsiConnection.pConnection);\n')
- dw_body.append(' value_mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;')
- dw_body.append(' value_list[0] = m_pXcbScreen->black_pixel;')
- dw_body.append(' value_list[1] = XCB_EVENT_MASK_KEY_RELEASE |')
- dw_body.append(' XCB_EVENT_MASK_EXPOSURE;\n')
- dw_body.append(' xcb_create_window(m_WsiConnection.pConnection,')
- dw_body.append(' XCB_COPY_FROM_PARENT,')
- dw_body.append(' m_XcbWindow, m_WsiConnection.root,')
- dw_body.append(' 0, 0, width, height, 0,')
- dw_body.append(' XCB_WINDOW_CLASS_INPUT_OUTPUT,')
- dw_body.append(' m_pXcbScreen->root_visual,')
- dw_body.append(' value_mask, value_list);\n')
- dw_body.append(' xcb_map_window(m_WsiConnection.pConnection, m_XcbWindow);')
- dw_body.append(' xcb_flush(m_WsiConnection.pConnection);')
- dw_body.append(' return 0;')
dw_body.append('#endif')
dw_body.append('}\n')
dw_body.append('void xglDisplay::resize_window(const unsigned int width, const unsigned int height)')
dw_body.append('{')
- dw_body.append('#if defined(WIN32)')
- dw_body.append(' if (width != m_windowWidth || height != m_windowHeight)')
- dw_body.append(' {')
- dw_body.append(' SetWindowPos(get_window_handle(), HWND_TOP, 0, 0, width, height, SWP_NOMOVE);')
- dw_body.append(' m_windowWidth = width;')
- dw_body.append(' m_windowHeight = height;')
- dw_body.append(' }')
- dw_body.append('#elif defined(PLATFORM_LINUX)')
+ dw_body.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
dw_body.append(' if (width != m_windowWidth || height != m_windowHeight)')
dw_body.append(' {')
dw_body.append(' uint32_t values[2];')
@@ -2316,6 +2309,13 @@
dw_body.append(' m_windowWidth = width;')
dw_body.append(' m_windowHeight = height;')
dw_body.append(' }')
+ dw_body.append('#elif defined(WIN32)')
+ dw_body.append(' if (width != m_windowWidth || height != m_windowHeight)')
+ dw_body.append(' {')
+ dw_body.append(' SetWindowPos(get_window_handle(), HWND_TOP, 0, 0, width, height, SWP_NOMOVE);')
+ dw_body.append(' m_windowWidth = width;')
+ dw_body.append(' m_windowHeight = height;')
+ dw_body.append(' }')
dw_body.append('#endif')
dw_body.append('}\n')
dw_body.append('void xglDisplay::process_event()')
@@ -3138,32 +3138,31 @@
def _gen_replay_wsi_associate_connection(self):
wac_body = []
- wac_body.append('#ifdef WIN32')
- wac_body.append(' //TBD')
- wac_body.append(' replayResult = XGL_SUCCESS;')
- wac_body.append('#else')
+ 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')
return "\n".join(wac_body)
def _gen_replay_wsi_get_msc(self):
wgm_body = []
- wgm_body.append('#ifdef WIN32')
+ 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(' 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('#endif')
return "\n".join(wgm_body)
def _gen_replay_wsi_create_presentable_image(self):
cpi_body = []
- cpi_body.append('#ifdef WIN32')
- cpi_body.append(' //TBD')
- cpi_body.append(' replayResult = XGL_SUCCESS;')
- cpi_body.append('#else')
+ 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);')
@@ -3178,15 +3177,15 @@
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')
return "\n".join(cpi_body)
def _gen_replay_wsi_queue_present(self):
wqp_body = []
- wqp_body.append('#ifdef WIN32')
- wqp_body.append(' //TBD')
- wqp_body.append(' replayResult = XGL_SUCCESS;')
- wqp_body.append('#else')
+ 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));')
@@ -3209,6 +3208,9 @@
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++;')
return "\n".join(wqp_body)
@@ -3507,6 +3509,9 @@
header_txt.append('#include "glvtrace_xgl_xgldbg_structs.h"')
header_txt.append('#include "glvtrace_xgl_xglwsix11ext_structs.h"')
header_txt.append('#include "xgl_enum_string_helper.h"')
+ header_txt.append('#if defined(WIN32)')
+ header_txt.append('#define snprintf _snprintf')
+ header_txt.append('#endif')
header_txt.append('#define SEND_ENTRYPOINT_ID(entrypoint) ;')
header_txt.append('//#define SEND_ENTRYPOINT_ID(entrypoint) glv_TraceInfo(#entrypoint "\\n");\n')
header_txt.append('#define SEND_ENTRYPOINT_PARAMS(entrypoint, ...) ;')
@@ -3545,7 +3550,7 @@
header_txt = []
header_txt.append('#pragma once\n')
header_txt.append('#include "xgl.h"')
- header_txt.append('#if defined(PLATFORM_LINUX)')
+ header_txt.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
header_txt.append('#include "xglWsiX11Ext.h"\n')
header_txt.append('#else')
header_txt.append('#include "xglWsiWinExt.h"')
@@ -3585,7 +3590,7 @@
def generate_header(self):
header_txt = []
header_txt.append('#pragma once\n')
- header_txt.append('#if defined(PLATFORM_LINUX)')
+ header_txt.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
header_txt.append('#include "xglWsiX11Ext.h"')
header_txt.append('#else')
header_txt.append('#include "xglWsiWinExt.h"')
@@ -3657,7 +3662,7 @@
header_txt.append('#include <map>')
header_txt.append('#include <vector>')
header_txt.append('#include <string>')
- header_txt.append('#if defined(PLATFORM_LINUX)')
+ header_txt.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
header_txt.append('#include <xcb/xcb.h>\n')
header_txt.append('#endif')
header_txt.append('#include "glvreplay_window.h"')
@@ -3665,7 +3670,7 @@
header_txt.append('#include "glv_trace_packet_identifiers.h"\n')
header_txt.append('#include "xgl.h"')
header_txt.append('#include "xglDbg.h"')
- header_txt.append('#if defined(PLATFORM_LINUX)')
+ header_txt.append('#if defined(PLATFORM_LINUX) || defined(XCB_NVIDIA)')
header_txt.append('#include "xglWsiX11Ext.h"')
header_txt.append('#else')
header_txt.append('#include "xglWsiWinExt.h"')