Hash :
ffbcd15e
Author :
Date :
2025-01-06T16:07:02
CL: Update event creation routines Move backend construction after frontend construction completes. This avoids potential undefined behavior if backend construction tries to access members of half-constructed frontend object. Add virtual onEventCreate routine for any actions that need to be performed after cmd event has been created. Additionally, this also fixes incorrect timestamp values when queue profiling is enabled for the VK backend. This was due to a missed event association to the cmd queue. Bug: angleproject:377942756 Change-Id: I0a2f0390cc04f94143d1801ad71e06f63785f3ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6149055 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Gowtham Tammana <g.tammana@samsung.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
//
// Copyright 2021 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// CLEventCL.h: Defines the class interface for CLEventCL, implementing CLEventImpl.
#ifndef LIBANGLE_RENDERER_CL_CLEVENTCL_H_
#define LIBANGLE_RENDERER_CL_CLEVENTCL_H_
#include "libANGLE/renderer/cl/cl_types.h"
#include "libANGLE/renderer/CLEventImpl.h"
namespace rx
{
class CLEventCL : public CLEventImpl
{
public:
CLEventCL(const cl::Event &event, cl_event native);
~CLEventCL() override;
cl_event getNative() const;
angle::Result onEventCreate() override;
angle::Result getCommandExecutionStatus(cl_int &executionStatus) override;
angle::Result setUserEventStatus(cl_int executionStatus) override;
angle::Result setCallback(cl::Event &event, cl_int commandExecCallbackType) override;
angle::Result getProfilingInfo(cl::ProfilingInfo name,
size_t valueSize,
void *value,
size_t *valueSizeRet) override;
static std::vector<cl_event> Cast(const cl::EventPtrs &events);
private:
static void CL_CALLBACK Callback(cl_event event, cl_int commandStatus, void *userData);
const cl_event mNative;
};
inline cl_event CLEventCL::getNative() const
{
return mNative;
}
} // namespace rx
#endif // LIBANGLE_RENDERER_CL_CLEVENTCL_H_