You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Code/CryEngine/RenderDll/XRenderD3D9/DX12/Resource/Misc/CCryDX12Query.cpp

109 lines
2.7 KiB
C++

/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
// Original file Copyright Crytek GMBH or its affiliates, used under license.
#include "RenderDll_precompiled.h"
#include "CCryDX12Query.hpp"
CCryDX12Query* CCryDX12Query::Create(ID3D12Device* pDevice, const D3D11_QUERY_DESC* pDesc)
{
switch (pDesc->Query)
{
case D3D11_QUERY_EVENT:
{
auto pResult = DX12::PassAddRef(new CCryDX12EventQuery(pDesc));
if (!pResult->Init(pDevice))
{
SAFE_RELEASE(pResult);
}
return pResult;
}
break;
case D3D11_QUERY_TIMESTAMP:
case D3D11_QUERY_OCCLUSION:
case D3D11_QUERY_OCCLUSION_PREDICATE:
{
auto pResult = DX12::PassAddRef(new CCryDX12ResourceQuery(pDesc));
if (!pResult->Init(pDevice))
{
SAFE_RELEASE(pResult);
}
return pResult;
}
break;
case D3D11_QUERY_TIMESTAMP_DISJOINT:
default:
return DX12::PassAddRef(new CCryDX12Query(pDesc));
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CCryDX12Query::CCryDX12Query(const D3D11_QUERY_DESC* pDesc)
: Super()
, m_Desc(*pDesc)
{
}
CCryDX12Query::~CCryDX12Query()
{
}
/* ID3D11Query implementation */
void STDMETHODCALLTYPE CCryDX12Query::GetDesc(
_Out_ D3D11_QUERY_DESC* pDesc)
{
*pDesc = m_Desc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CCryDX12EventQuery::CCryDX12EventQuery(const D3D11_QUERY_DESC* pDesc)
: Super(pDesc)
, m_FenceValue(0)
{
}
CCryDX12EventQuery::~CCryDX12EventQuery()
{
}
bool CCryDX12EventQuery::Init([[maybe_unused]] ID3D12Device* pDevice)
{
m_FenceValue = 0LL;
return true;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CCryDX12ResourceQuery::CCryDX12ResourceQuery(const D3D11_QUERY_DESC* pDesc)
: Super(pDesc)
, m_QueryIndex(0)
, m_pResource(nullptr)
{
}
CCryDX12ResourceQuery::~CCryDX12ResourceQuery()
{
}
bool CCryDX12ResourceQuery::Init(ID3D12Device* pDevice)
{
Super::Init(pDevice);
m_QueryIndex = 0;
m_pResource = nullptr;
return true;
}