xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/vulkan/FenceNVVk.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // FenceNVVk.cpp:
7*8975f5c5SAndroid Build Coastguard Worker //    Implements the class methods for FenceNVVk.
8*8975f5c5SAndroid Build Coastguard Worker //
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/vulkan/FenceNVVk.h"
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker #include "common/debug.h"
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Context.h"
14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/vulkan/ContextVk.h"
15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/vulkan/vk_utils.h"
16*8975f5c5SAndroid Build Coastguard Worker 
17*8975f5c5SAndroid Build Coastguard Worker namespace rx
18*8975f5c5SAndroid Build Coastguard Worker {
19*8975f5c5SAndroid Build Coastguard Worker 
FenceNVVk()20*8975f5c5SAndroid Build Coastguard Worker FenceNVVk::FenceNVVk() : FenceNVImpl() {}
21*8975f5c5SAndroid Build Coastguard Worker 
~FenceNVVk()22*8975f5c5SAndroid Build Coastguard Worker FenceNVVk::~FenceNVVk() {}
23*8975f5c5SAndroid Build Coastguard Worker 
onDestroy(const gl::Context * context)24*8975f5c5SAndroid Build Coastguard Worker void FenceNVVk::onDestroy(const gl::Context *context)
25*8975f5c5SAndroid Build Coastguard Worker {
26*8975f5c5SAndroid Build Coastguard Worker     mFenceSync.releaseToRenderer(vk::GetImpl(context)->getRenderer());
27*8975f5c5SAndroid Build Coastguard Worker }
28*8975f5c5SAndroid Build Coastguard Worker 
set(const gl::Context * context,GLenum condition)29*8975f5c5SAndroid Build Coastguard Worker angle::Result FenceNVVk::set(const gl::Context *context, GLenum condition)
30*8975f5c5SAndroid Build Coastguard Worker {
31*8975f5c5SAndroid Build Coastguard Worker     ASSERT(condition == GL_ALL_COMPLETED_NV);
32*8975f5c5SAndroid Build Coastguard Worker     return mFenceSync.initialize(vk::GetImpl(context), SyncFenceScope::CurrentContextToShareGroup);
33*8975f5c5SAndroid Build Coastguard Worker }
34*8975f5c5SAndroid Build Coastguard Worker 
test(const gl::Context * context,GLboolean * outFinished)35*8975f5c5SAndroid Build Coastguard Worker angle::Result FenceNVVk::test(const gl::Context *context, GLboolean *outFinished)
36*8975f5c5SAndroid Build Coastguard Worker {
37*8975f5c5SAndroid Build Coastguard Worker     ContextVk *contextVk = vk::GetImpl(context);
38*8975f5c5SAndroid Build Coastguard Worker     bool signaled        = false;
39*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(mFenceSync.getStatus(contextVk, contextVk, &signaled));
40*8975f5c5SAndroid Build Coastguard Worker 
41*8975f5c5SAndroid Build Coastguard Worker     ASSERT(outFinished);
42*8975f5c5SAndroid Build Coastguard Worker     *outFinished = signaled ? GL_TRUE : GL_FALSE;
43*8975f5c5SAndroid Build Coastguard Worker     return angle::Result::Continue;
44*8975f5c5SAndroid Build Coastguard Worker }
45*8975f5c5SAndroid Build Coastguard Worker 
finish(const gl::Context * context)46*8975f5c5SAndroid Build Coastguard Worker angle::Result FenceNVVk::finish(const gl::Context *context)
47*8975f5c5SAndroid Build Coastguard Worker {
48*8975f5c5SAndroid Build Coastguard Worker     return mFenceSync.finish(vk::GetImpl(context));
49*8975f5c5SAndroid Build Coastguard Worker }
50*8975f5c5SAndroid Build Coastguard Worker 
51*8975f5c5SAndroid Build Coastguard Worker }  // namespace rx
52