12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // Copyright 2009-2021 Intel Corporation
- // SPDX-License-Identifier: Apache-2.0
- #pragma once
- #include "default.h"
- #include "state.h"
- #include "accel.h"
- namespace embree
- {
- class BVH4Factory;
- class BVH8Factory;
- class Device : public State, public MemoryMonitorInterface
- {
- ALIGNED_CLASS_(16);
- public:
- /*! Device construction */
- Device (const char* cfg);
- /*! Device destruction */
- virtual ~Device ();
- /*! prints info about the device */
- void print();
- /*! sets the error code */
- void setDeviceErrorCode(RTCError error);
- /*! returns and clears the error code */
- RTCError getDeviceErrorCode();
- /*! sets the error code */
- static void setThreadErrorCode(RTCError error);
- /*! returns and clears the error code */
- static RTCError getThreadErrorCode();
- /*! processes error codes, do not call directly */
- static void process_error(Device* device, RTCError error, const char* str);
- /*! invokes the memory monitor callback */
- void memoryMonitor(ssize_t bytes, bool post);
- /*! sets the size of the software cache. */
- void setCacheSize(size_t bytes);
- /*! sets a property */
- void setProperty(const RTCDeviceProperty prop, ssize_t val);
- /*! gets a property */
- ssize_t getProperty(const RTCDeviceProperty prop);
- private:
- /*! initializes the tasking system */
- void initTaskingSystem(size_t numThreads);
- /*! shuts down the tasking system */
- void exitTaskingSystem();
- /*! some variables that can be set via rtcSetParameter1i for debugging purposes */
- public:
- static ssize_t debug_int0;
- static ssize_t debug_int1;
- static ssize_t debug_int2;
- static ssize_t debug_int3;
- public:
- std::unique_ptr<BVH4Factory> bvh4_factory;
- #if defined(EMBREE_TARGET_SIMD8)
- std::unique_ptr<BVH8Factory> bvh8_factory;
- #endif
-
- #if USE_TASK_ARENA
- std::unique_ptr<tbb::task_arena> arena;
- #endif
-
- /* ray streams filter */
- RayStreamFilterFuncs rayStreamFilters;
- };
- }
|