Path: blob/master/thirdparty/embree/include/embree4/rtcore_buffer.h
9905 views
// Copyright 2009-2021 Intel Corporation1// SPDX-License-Identifier: Apache-2.023#pragma once45#include "rtcore_device.h"67RTC_NAMESPACE_BEGIN89/* Types of buffers */10enum RTCBufferType11{12RTC_BUFFER_TYPE_INDEX = 0,13RTC_BUFFER_TYPE_VERTEX = 1,14RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE = 2,15RTC_BUFFER_TYPE_NORMAL = 3,16RTC_BUFFER_TYPE_TANGENT = 4,17RTC_BUFFER_TYPE_NORMAL_DERIVATIVE = 5,1819RTC_BUFFER_TYPE_GRID = 8,2021RTC_BUFFER_TYPE_FACE = 16,22RTC_BUFFER_TYPE_LEVEL = 17,23RTC_BUFFER_TYPE_EDGE_CREASE_INDEX = 18,24RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT = 19,25RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX = 20,26RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT = 21,27RTC_BUFFER_TYPE_HOLE = 22,2829RTC_BUFFER_TYPE_TRANSFORM = 23,3031RTC_BUFFER_TYPE_FLAGS = 3232};3334/* Opaque buffer type */35typedef struct RTCBufferTy* RTCBuffer;3637/* Creates a new buffer. */38RTC_API RTCBuffer rtcNewBuffer(RTCDevice device, size_t byteSize);3940/* Creates a new buffer using explicit host device memory. */41RTC_API RTCBuffer rtcNewBufferHostDevice(RTCDevice device, size_t byteSize);4243/* Creates a new shared buffer. */44RTC_API RTCBuffer rtcNewSharedBuffer(RTCDevice device, void* ptr, size_t byteSize);4546/* Creates a new shared buffer using explicit host device memory. */47RTC_API RTCBuffer rtcNewSharedBufferHostDevice(RTCDevice device, void* ptr, size_t byteSize);4849/* Synchronize host and device memory by copying data from host to device. */50RTC_API void rtcCommitBuffer(RTCBuffer buffer);5152#if defined(EMBREE_SYCL_SUPPORT) && defined(SYCL_LANGUAGE_VERSION)5354RTC_API_CPP sycl::event rtcCommitBufferWithQueue(RTCBuffer buffer, sycl::queue queue);5556#endif5758/* Returns a pointer to the buffer data. */59RTC_API void* rtcGetBufferData(RTCBuffer buffer);6061/* Returns a pointer to the buffer data on the device. Returns the same pointer as62rtcGetBufferData if the device is no SYCL device or if Embree is executed on a63system with unified memory (e.g., iGPUs). */64RTC_API void* rtcGetBufferDataDevice(RTCBuffer buffer);6566/* Retains the buffer (increments the reference count). */67RTC_API void rtcRetainBuffer(RTCBuffer buffer);6869/* Releases the buffer (decrements the reference count). */70RTC_API void rtcReleaseBuffer(RTCBuffer buffer);7172RTC_NAMESPACE_END737475