Add Chromium-only Blender WebEngine parity work
This commit is contained in:
86
blender-5.2.0/intern/cycles/session/display_driver.cpp
Normal file
86
blender-5.2.0/intern/cycles/session/display_driver.cpp
Normal file
@@ -0,0 +1,86 @@
|
||||
/* SPDX-FileCopyrightText: 2021-2025 Blender Foundation
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 */
|
||||
|
||||
#include "session/display_driver.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
# include "util/windows.h"
|
||||
#else
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
CCL_NAMESPACE_BEGIN
|
||||
|
||||
GraphicsInteropBuffer::~GraphicsInteropBuffer()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
void GraphicsInteropBuffer::assign(GraphicsInteropDevice::Type type, int64_t handle, size_t size)
|
||||
{
|
||||
clear();
|
||||
|
||||
type_ = type;
|
||||
handle_ = handle;
|
||||
own_handle_ = true;
|
||||
size_ = size;
|
||||
}
|
||||
|
||||
bool GraphicsInteropBuffer::is_empty() const
|
||||
{
|
||||
return handle_ == 0;
|
||||
}
|
||||
|
||||
void GraphicsInteropBuffer::zero()
|
||||
{
|
||||
need_zero_ = true;
|
||||
}
|
||||
|
||||
void GraphicsInteropBuffer::clear()
|
||||
{
|
||||
if (type_ == GraphicsInteropDevice::VULKAN && handle_ && own_handle_) {
|
||||
#ifdef _WIN32
|
||||
CloseHandle(HANDLE(handle_));
|
||||
#else
|
||||
close(handle_);
|
||||
#endif
|
||||
}
|
||||
|
||||
type_ = GraphicsInteropDevice::NONE;
|
||||
handle_ = 0;
|
||||
size_ = 0;
|
||||
need_zero_ = false;
|
||||
own_handle_ = false;
|
||||
}
|
||||
|
||||
GraphicsInteropDevice::Type GraphicsInteropBuffer::get_type() const
|
||||
{
|
||||
return type_;
|
||||
}
|
||||
|
||||
size_t GraphicsInteropBuffer::get_size() const
|
||||
{
|
||||
return size_;
|
||||
}
|
||||
|
||||
bool GraphicsInteropBuffer::has_new_handle() const
|
||||
{
|
||||
return own_handle_;
|
||||
}
|
||||
|
||||
bool GraphicsInteropBuffer::take_zero()
|
||||
{
|
||||
bool need_zero = need_zero_;
|
||||
need_zero_ = false;
|
||||
return need_zero;
|
||||
}
|
||||
|
||||
int64_t GraphicsInteropBuffer::take_handle()
|
||||
{
|
||||
assert(own_handle_);
|
||||
own_handle_ = false;
|
||||
return handle_;
|
||||
}
|
||||
|
||||
CCL_NAMESPACE_END
|
||||
Reference in New Issue
Block a user