1 #include "precompiled.h"
3 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style license that can be
5 // found in the LICENSE file.
8 // Fence9.cpp: Defines the rx::Fence9 class.
10 #include "libGLESv2/renderer/d3d/d3d9/Fence9.h"
11 #include "libGLESv2/main.h"
12 #include "libGLESv2/renderer/d3d/d3d9/renderer9_utils.h"
13 #include "libGLESv2/renderer/d3d/d3d9/Renderer9.h"
18 Fence9::Fence9(rx::Renderer9 *renderer)
29 bool Fence9::isSet() const
31 return mQuery != NULL;
38 mQuery = mRenderer->allocateEventQuery();
41 return gl::error(GL_OUT_OF_MEMORY);
45 HRESULT result = mQuery->Issue(D3DISSUE_END);
46 UNUSED_ASSERTION_VARIABLE(result);
47 ASSERT(SUCCEEDED(result));
50 bool Fence9::test(bool flushCommandBuffer)
54 DWORD getDataFlags = (flushCommandBuffer ? D3DGETDATA_FLUSH : 0);
55 HRESULT result = mQuery->GetData(NULL, 0, getDataFlags);
57 if (d3d9::isDeviceLostError(result))
59 mRenderer->notifyDeviceLost();
60 return gl::error(GL_OUT_OF_MEMORY, true);
63 ASSERT(result == S_OK || result == S_FALSE);
65 return (result == S_OK);
68 bool Fence9::hasError() const
70 return mRenderer->isDeviceLost();