Changeset 41858 in vbox for trunk/src/VBox
- Timestamp:
- Jun 21, 2012 11:30:30 AM (13 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp
r41637 r41858 1863 1863 } 1864 1864 1865 static D3DQUERYTYPE vboxDDI2D3DQueryType(D3DDDIQUERYTYPE enmType) 1866 { 1867 return (D3DQUERYTYPE)enmType; 1868 } 1869 1870 static DWORD vboxDDI2D3DIssueQueryFlags(D3DDDI_ISSUEQUERYFLAGS Flags) 1871 { 1872 DWORD fFlags = 0; 1873 if (Flags.Begin) 1874 fFlags |= D3DISSUE_BEGIN; 1875 if (Flags.End) 1876 fFlags |= D3DISSUE_END; 1877 return fFlags; 1878 } 1865 1879 1866 1880 /******/ … … 6343 6357 VBOXDISP_DDI_PROLOGUE_DEV(hDevice); 6344 6358 vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice)); 6345 // PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice; 6346 // Assert(pDevice); 6347 // VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice); 6359 PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice; 6360 Assert(pDevice); 6361 VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice); 6362 6363 IDirect3DDevice9 * pDevice9If = VBOXDISP_D3DEV(pDevice); 6348 6364 HRESULT hr = S_OK; 6349 if (pData->QueryType == D3DDDIQUERYTYPE_EVENT) 6350 { 6351 PVBOXWDDMDISP_QUERY pQuery = (PVBOXWDDMDISP_QUERY)RTMemAllocZ(sizeof (VBOXWDDMDISP_QUERY)); 6352 Assert(pQuery); 6353 if (pQuery) 6354 { 6355 pQuery->enmType = pData->QueryType; 6356 pData->hQuery = pQuery; 6357 } 6358 else 6359 { 6360 hr = E_OUTOFMEMORY; 6361 } 6362 } 6363 else 6364 { 6365 Assert(0); 6366 hr = E_FAIL; 6367 } 6365 PVBOXWDDMDISP_QUERY pQuery = (PVBOXWDDMDISP_QUERY)RTMemAllocZ(sizeof (VBOXWDDMDISP_QUERY)); 6366 if (!pQuery) 6367 { 6368 WARN(("RTMemAllocZ failed")); 6369 return E_OUTOFMEMORY; 6370 } 6371 6372 hr = pDevice9If->CreateQuery(vboxDDI2D3DQueryType(pData->QueryType), &pQuery->pQueryIf); 6373 if (FAILED(hr)) 6374 { 6375 WARN(("CreateQuery failed, hr 0x%x", hr)); 6376 RTMemFree(pQuery); 6377 return hr; 6378 } 6379 6380 Assert(hr == S_OK); 6381 6382 pQuery->enmType = pData->QueryType; 6383 pData->hQuery = pQuery; 6384 6368 6385 vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice)); 6369 6386 return hr; … … 6374 6391 vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice)); 6375 6392 HRESULT hr = S_OK; 6376 //PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice;6377 //Assert(pDevice);6378 //VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice);6393 PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice; 6394 Assert(pDevice); 6395 VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice); 6379 6396 6380 6397 PVBOXWDDMDISP_QUERY pQuery = (PVBOXWDDMDISP_QUERY)hQuery; 6381 6398 Assert(pQuery); 6399 pQuery->pQueryIf->Release(); 6382 6400 RTMemFree(pQuery); 6383 6401 vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice)); … … 6389 6407 vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice)); 6390 6408 HRESULT hr = S_OK; 6391 //PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice;6392 //Assert(pDevice);6393 //VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice);6409 PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice; 6410 Assert(pDevice); 6411 VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice); 6394 6412 6395 6413 PVBOXWDDMDISP_QUERY pQuery = (PVBOXWDDMDISP_QUERY)pData->hQuery; 6396 6414 Assert(pQuery); 6397 6415 pQuery->fQueryState.Value |= pData->Flags.Value; 6416 hr = pQuery->pQueryIf->Issue(vboxDDI2D3DIssueQueryFlags(pData->Flags)); 6417 if (hr != S_OK) 6418 WARN(("Issue failed, hr = 0x%x", hr)); 6419 6398 6420 vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice)); 6399 6421 return hr; … … 6404 6426 vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice)); 6405 6427 HRESULT hr = S_OK; 6406 //PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice;6407 //Assert(pDevice);6408 //VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice);6428 PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice; 6429 Assert(pDevice); 6430 VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice); 6409 6431 6410 6432 PVBOXWDDMDISP_QUERY pQuery = (PVBOXWDDMDISP_QUERY)pData->hQuery; 6411 6433 Assert(pQuery); 6434 DWORD cbData = pQuery->pQueryIf->GetDataSize(); 6435 #ifdef DEBUG 6412 6436 switch (pQuery->enmType) 6413 6437 { 6414 6438 case D3DDDIQUERYTYPE_EVENT: 6415 pQuery->data.bData = TRUE; 6416 Assert(pData->pData); 6417 *((BOOL*)pData->pData) = TRUE; 6439 Assert(cbData == sizeof (BOOL)); 6418 6440 break; 6419 6441 default: 6420 6442 Assert(0); 6421 hr = E_FAIL;6422 6443 break; 6423 6444 } 6445 #endif 6446 hr = pQuery->pQueryIf->GetData(pData->pData, cbData, 0); 6447 if (hr != S_OK) 6448 WARN(("GetData failed, hr = 0x%x", hr)); 6449 6424 6450 vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice)); 6425 6451 return hr; … … 7562 7588 } 7563 7589 7590 7564 7591 HRESULT APIENTRY OpenAdapter(__inout D3DDDIARG_OPENADAPTER* pOpenData) 7565 7592 { -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.h
r41637 r41858 293 293 D3DDDIQUERYTYPE enmType; 294 294 D3DDDI_ISSUEQUERYFLAGS fQueryState; 295 union 296 { 297 BOOL bData; 298 UINT u32Data; 299 } data ; 295 IDirect3DQuery9 *pQueryIf; 300 296 } VBOXWDDMDISP_QUERY, *PVBOXWDDMDISP_QUERY; 301 297 -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/query.c
r38112 r41858 62 62 } 63 63 64 #if !defined(VBOX_WINE_WITH_SINGLE_CONTEXT) && !defined(VBOX_WINE_WITH_SINGLE_SWAPCHAIN_CONTEXT) 64 65 if (!query->context->gl_info->supported[ARB_SYNC] && query->context->tid != GetCurrentThreadId()) 65 66 { 66 #ifdef VBOX_WINE_WITH_SINGLE_CONTEXT67 ERR("Event query tested from wrong thread\n");68 #else69 67 WARN("Event query tested from wrong thread\n"); 68 return WINED3D_EVENT_QUERY_WRONG_THREAD; 69 } 70 70 #endif 71 return WINED3D_EVENT_QUERY_WRONG_THREAD;72 }73 71 74 72 context = context_acquire(device, query->context->current_rt, CTXUSAGE_RESOURCELOAD); … … 115 113 else 116 114 { 115 #ifdef VBOX_WITH_WDDM 116 Assert(0); 117 /* doing Flush (rather than Finish) should be enough since we're serialized on the host in any way */ 118 wglFlush(); 119 ret = WINED3D_EVENT_QUERY_OK; 120 #else 117 121 ERR("Event query created despite lack of GL support\n"); 118 122 ret = WINED3D_EVENT_QUERY_ERROR; 123 #endif 119 124 } 120 125
Note:
See TracChangeset
for help on using the changeset viewer.