Unlike OpenGL and Metal, this handle is not shared, but rather Cycles has to take ownership of it. This required a fair amount of refactoring to ensure the handle is closed, ownership is properly transferred, and the handle is recreated once when the pixel buffer is modified.
31 lines
766 B
C++
31 lines
766 B
C++
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
#pragma once
|
|
|
|
#include "util/types.h"
|
|
|
|
CCL_NAMESPACE_BEGIN
|
|
|
|
class GraphicsInteropBuffer;
|
|
|
|
/* Device-side graphics interoperability support.
|
|
*
|
|
* Takes care of holding all the handlers needed by the device to implement interoperability with
|
|
* the graphics library. */
|
|
class DeviceGraphicsInterop {
|
|
public:
|
|
DeviceGraphicsInterop() = default;
|
|
virtual ~DeviceGraphicsInterop() = default;
|
|
|
|
/* Update this device-side graphics interoperability buffer with the given destination
|
|
* resource information. */
|
|
virtual void set_buffer(GraphicsInteropBuffer &interop_buffer) = 0;
|
|
|
|
virtual device_ptr map() = 0;
|
|
virtual void unmap() = 0;
|
|
};
|
|
|
|
CCL_NAMESPACE_END
|