rtcGetDeviceProperty(3)

πŸ“¦ version 3.13.5, in epel 9, fedora 43, fedora 44

πŸ’– rtcGetDeviceProperty β€” a whole vibe check for ur device πŸ’–

okay bestie, welcome to rtcGetDeviceProperty(3), the little Embree Ray Tracing Kernels 3 function that lets you interrogate a device object and find out what it's actually about. it's giving "tell me ur secrets" energy and honestly? iconic.


✨ SYNOPSIS ✨

#include <embree3/rtcore.h>

ssize_t rtcGetDeviceProperty(
  RTCDevice device,
  enum RTCDeviceProperty prop
);

🌸 DESCRIPTION 🌸

so rtcGetDeviceProperty is the girl you call when you need to query properties β€” that's the prop argument, she's the one asking the questions β€” of a device object, which is the device argument. the returned property comes back as an integer of type ssize_t. no cap.

here's every single property you can ask about, and what it spills the tea on:

  • RTC_DEVICE_PROPERTY_VERSION β€” queries the combined version number (MAJOR.MINOR.PATCH) with two decimal digits per component. for example, for Embree 2.8.3 the integer 208003 is returned. math ate, fr fr.
  • RTC_DEVICE_PROPERTY_VERSION_MAJOR β€” queries the major version number of Embree.
  • RTC_DEVICE_PROPERTY_VERSION_MINOR β€” queries the minor version number of Embree.
  • RTC_DEVICE_PROPERTY_VERSION_PATCH β€” queries the patch version number of Embree.
  • RTC_DEVICE_PROPERTY_NATIVE_RAY4_SUPPORTED β€” queries whether the rtcIntersect4 and rtcOccluded4 functions preserve packet size and ray order when invoking callback functions. this is only the case if Embree is compiled with EMBREE_RAY_PACKETS and SSE2 (or SSE4.2) enabled, and if the machine it is running on supports SSE2 (or SSE4.2). so many conditions bestie 😭
  • RTC_DEVICE_PROPERTY_NATIVE_RAY8_SUPPORTED β€” queries whether the rtcIntersect8 and rtcOccluded8 functions preserve packet size and ray order when invoking callback functions. this is only the case if Embree is compiled with EMBREE_RAY_PACKETS and AVX (or AVX2) enabled, and if the machine it is running on supports AVX (or AVX2).
  • RTC_DEVICE_PROPERTY_NATIVE_RAY16_SUPPORTED β€” queries whether the rtcIntersect16 and rtcOccluded16 functions preserve packet size and ray order when invoking callback functions. this is only the case if Embree is compiled with EMBREE_RAY_PACKETS and AVX512 enabled, and if the machine it is running on supports AVX512. sixteen rays?? main character energy, periodt.
  • RTC_DEVICE_PROPERTY_RAY_STREAM_SUPPORTED β€” queries whether rtcIntersect1M, rtcIntersect1Mp, rtcIntersectNM, rtcIntersectNp, rtcOccluded1M, rtcOccluded1Mp, rtcOccludedNM, and rtcOccludedNp are supported. this is only the case if Embree is compiled with EMBREE_RAY_PACKETS enabled. look at that whole roster πŸ’…
  • RTC_DEVICE_PROPERTY_RAY_MASK_SUPPORTED β€” queries whether ray masks are supported. this is only the case if Embree is compiled with EMBREE_RAY_MASK enabled.
  • RTC_DEVICE_PROPERTY_BACKFACE_CULLING_ENABLED β€” queries whether back face culling is enabled. this is only the case if Embree is compiled with EMBREE_BACKFACE_CULLING enabled.
  • RTC_DEVICE_PROPERTY_COMPACT_POLYS_ENABLED β€” queries whether compact polys is enabled. this is only the case if Embree is compiled with EMBREE_COMPACT_POLYS enabled.
  • RTC_DEVICE_PROPERTY_FILTER_FUNCTION_SUPPORTED β€” queries whether filter functions are supported, which is the case if Embree is compiled with EMBREE_FILTER_FUNCTION enabled.
  • RTC_DEVICE_PROPERTY_IGNORE_INVALID_RAYS_ENABLED β€” queries whether invalid rays are ignored, which is the case if Embree is compiled with EMBREE_IGNORE_INVALID_RAYS enabled.
  • RTC_DEVICE_PROPERTY_TRIANGLE_GEOMETRY_SUPPORTED β€” queries whether triangles are supported, which is the case if Embree is compiled with EMBREE_GEOMETRY_TRIANGLE enabled.
  • RTC_DEVICE_PROPERTY_QUAD_GEOMETRY_SUPPORTED β€” queries whether quads are supported, which is the case if Embree is compiled with EMBREE_GEOMETRY_QUAD enabled.
  • RTC_DEVICE_PROPERTY_SUBDIVISION_GEOMETRY_SUPPORTED β€” queries whether subdivision meshes are supported, which is the case if Embree is compiled with EMBREE_GEOMETRY_SUBDIVISION enabled.
  • RTC_DEVICE_PROPERTY_CURVE_GEOMETRY_SUPPORTED β€” queries whether curves are supported, which is the case if Embree is compiled with EMBREE_GEOMETRY_CURVE enabled.
  • RTC_DEVICE_PROPERTY_POINT_GEOMETRY_SUPPORTED β€” queries whether points are supported, which is the case if Embree is compiled with EMBREE_GEOMETRY_POINT enabled.
  • RTC_DEVICE_PROPERTY_USER_GEOMETRY_SUPPORTED β€” queries whether user geometries are supported, which is the case if Embree is compiled with EMBREE_GEOMETRY_USER enabled.
  • RTC_DEVICE_PROPERTY_TASKING_SYSTEM β€” queries the tasking system Embree is compiled with. possible return values are:
    1. internal tasking system
    2. Intel Threading Building Blocks (TBB)
    3. Parallel Patterns Library (PPL)

wait bestie, they're numbered 0, 1, 2 in the source β€” here's the exact mapping:

  1. 0 β€” internal tasking system
  2. 1 β€” Intel Threading Building Blocks (TBB)
  3. 2 β€” Parallel Patterns Library (PPL)
  • RTC_DEVICE_PROPERTY_JOIN_COMMIT_SUPPORTED β€” queries whether rtcJoinCommitScene is supported. this is not the case when Embree is compiled with PPL or older versions of TBB. so if u get a false here, it's not u, it's the build 🫢
  • RTC_DEVICE_PROPERTY_PARALLEL_COMMIT_SUPPORTED β€” queries whether rtcCommitScene can get invoked from multiple TBB worker threads concurrently. this feature is only supported starting with TBB 2019 Update 9. the way that's such a specific version 😭

πŸ‘‘ EXIT STATUS πŸ‘‘

on success, it returns the value of the queried property. for properties returning a boolean value, the return value 0 denotes false and 1 denotes true. no ambiguous vibes, just 0 or 1.

on failure, zero is returned and an error code is set that can be queried using rtcGetDeviceError. so if u get a 0 and ur property was supposed to be a number, go check rtcGetDeviceError before u spiral πŸ’€


reminder bestie: a 0 can mean false or failure depending on the property. read the room (and the docs) before u panic 🌸

that's the whole page, and honestly? she ate. this was rtcGetDeviceProperty(3) from Embree Ray Tracing Kernels 3 β€” no date on this one, she's timeless, lowkey eternal βœ¨πŸ’–πŸŽ€πŸ¦‹

rtcGetDeviceProperty(3) β€” mwah, go query something πŸ’…

πŸ“¦ where this page comes from