Revision control
++ // Copyright 2009-2021 Intel Corporation
++ // SPDX-License-Identifier: Apache-2.0
++
++ #ifndef __RTC_BUFFER_ISPH__
++ #define __RTC_BUFFER_ISPH__
++
++ #include "rtcore_device.isph"
++
++ /* Types of buffers */
++ enum RTCBufferType
++ {
++ RTC_BUFFER_TYPE_INDEX = 0,
++ RTC_BUFFER_TYPE_VERTEX = 1,
++ RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE = 2,
++ RTC_BUFFER_TYPE_NORMAL = 3,
++ RTC_BUFFER_TYPE_TANGENT = 4,
++ RTC_BUFFER_TYPE_NORMAL_DERIVATIVE = 5,
++
++ RTC_BUFFER_TYPE_GRID = 8,
++
++ RTC_BUFFER_TYPE_FACE = 16,
++ RTC_BUFFER_TYPE_LEVEL = 17,
++ RTC_BUFFER_TYPE_EDGE_CREASE_INDEX = 18,
++ RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT = 19,
++ RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX = 20,
++ RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT = 21,
++ RTC_BUFFER_TYPE_HOLE = 22,
++
++ RTC_BUFFER_TYPE_FLAGS = 32
++ };
++
++ /* Opaque buffer type */
++ typedef uniform struct RTCBufferTy* uniform RTCBuffer;
++
++ /* Creates a new buffer. */
++ RTC_API RTCBuffer rtcNewBuffer(RTCDevice device, uniform uintptr_t byteSize);
++
++ /* Creates a new shared buffer. */
++ RTC_API RTCBuffer rtcNewSharedBuffer(RTCDevice device, void* uniform ptr, uniform uintptr_t byteSize);
++
++ /* Returns a pointer to the buffer data. */
++ RTC_API void* uniform rtcGetBufferData(RTCBuffer buffer);
++
++ /* Retains the buffer (increments the reference count). */
++ RTC_API void rtcRetainBuffer(RTCBuffer buffer);
++
++ /* Releases the buffer handle (decrements the reference count). */
++ RTC_API void rtcReleaseBuffer(RTCBuffer buffer);
++
++ #endif