1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

[d3d11] Remvoed query support

Breaks too many games.
This commit is contained in:
Philip Rebohle 2018-02-23 13:17:24 +01:00
parent e4dae74865
commit 3d17eb68b9
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99

View File

@ -168,33 +168,40 @@ namespace dxvk {
HRESULT STDMETHODCALLTYPE D3D11Query::GetData( HRESULT STDMETHODCALLTYPE D3D11Query::GetData(
void* pData, void* pData,
UINT GetDataFlags) { UINT GetDataFlags) {
// FIXME returning query data seems to lock up some
// games for some reason, so we have to disable it.
if (m_desc.Query == D3D11_QUERY_EVENT) { if (m_desc.Query == D3D11_QUERY_EVENT) {
const bool signaled = m_event->getStatus() == DxvkEventStatus::Signaled; return S_OK;
if (pData != nullptr) // const bool signaled = m_event->getStatus() == DxvkEventStatus::Signaled;
*static_cast<BOOL*>(pData) = signaled; // if (pData != nullptr)
// *static_cast<BOOL*>(pData) = signaled;
return signaled ? S_OK : S_FALSE; //
// return signaled ? S_OK : S_FALSE;
} else { } else {
DxvkQueryData queryData = {}; // DxvkQueryData queryData = {};
//
if (m_query != nullptr // if (m_query != nullptr
&& m_query->getData(queryData) != DxvkQueryStatus::Available) // && m_query->getData(queryData) != DxvkQueryStatus::Available)
return S_FALSE; // return S_FALSE;
if (pData == nullptr) if (pData == nullptr)
return S_OK; return S_OK;
switch (m_desc.Query) { switch (m_desc.Query) {
case D3D11_QUERY_OCCLUSION: case D3D11_QUERY_OCCLUSION:
*static_cast<UINT64*>(pData) = queryData.occlusion.samplesPassed; *static_cast<UINT64*>(pData) = 1;
// *static_cast<UINT64*>(pData) = queryData.occlusion.samplesPassed;
return S_OK; return S_OK;
case D3D11_QUERY_OCCLUSION_PREDICATE: case D3D11_QUERY_OCCLUSION_PREDICATE:
*static_cast<BOOL*>(pData) = queryData.occlusion.samplesPassed != 0; *static_cast<BOOL*>(pData) = TRUE;
// *static_cast<BOOL*>(pData) = queryData.occlusion.samplesPassed != 0;
return S_OK; return S_OK;
case D3D11_QUERY_TIMESTAMP: case D3D11_QUERY_TIMESTAMP:
*static_cast<UINT64*>(pData) = queryData.timestamp.time; static UINT64 fakeTime = 0;
*static_cast<UINT64*>(pData) = fakeTime++;
// *static_cast<UINT64*>(pData) = queryData.timestamp.time;
return S_OK; return S_OK;
case D3D11_QUERY_TIMESTAMP_DISJOINT: { case D3D11_QUERY_TIMESTAMP_DISJOINT: {
@ -206,17 +213,18 @@ namespace dxvk {
case D3D11_QUERY_PIPELINE_STATISTICS: { case D3D11_QUERY_PIPELINE_STATISTICS: {
auto data = static_cast<D3D11_QUERY_DATA_PIPELINE_STATISTICS*>(pData); auto data = static_cast<D3D11_QUERY_DATA_PIPELINE_STATISTICS*>(pData);
data->IAVertices = queryData.statistic.iaVertices; *data = D3D11_QUERY_DATA_PIPELINE_STATISTICS();
data->IAPrimitives = queryData.statistic.iaPrimitives; // data->IAVertices = queryData.statistic.iaVertices;
data->VSInvocations = queryData.statistic.vsInvocations; // data->IAPrimitives = queryData.statistic.iaPrimitives;
data->GSInvocations = queryData.statistic.gsInvocations; // data->VSInvocations = queryData.statistic.vsInvocations;
data->GSPrimitives = queryData.statistic.gsPrimitives; // data->GSInvocations = queryData.statistic.gsInvocations;
data->CInvocations = queryData.statistic.clipInvocations; // data->GSPrimitives = queryData.statistic.gsPrimitives;
data->CPrimitives = queryData.statistic.clipPrimitives; // data->CInvocations = queryData.statistic.clipInvocations;
data->PSInvocations = queryData.statistic.fsInvocations; // data->CPrimitives = queryData.statistic.clipPrimitives;
data->HSInvocations = queryData.statistic.tcsPatches; // data->PSInvocations = queryData.statistic.fsInvocations;
data->DSInvocations = queryData.statistic.tesInvocations; // data->HSInvocations = queryData.statistic.tcsPatches;
data->CSInvocations = queryData.statistic.csInvocations; // data->DSInvocations = queryData.statistic.tesInvocations;
// data->CSInvocations = queryData.statistic.csInvocations;
} return S_OK; } return S_OK;
default: default: