File: FeatureFlags.ih

package info (click to toggle)
ospray 3.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,048 kB
  • sloc: cpp: 80,569; ansic: 951; sh: 805; makefile: 170; python: 69
file content (64 lines) | stat: -rw-r--r-- 1,408 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright 2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0

#pragma once

#ifdef OSPRAY_TARGET_SYCL
#include <sycl/sycl.hpp>
#endif

#include "FeatureFlagsEnum.h"

OSPRAY_BEGIN_ISPC_NAMESPACE

#ifdef OSPRAY_TARGET_SYCL
using namespace ospray;

inline constexpr sycl::specialization_id<FeatureFlags> specFeatureFlags;
#endif

struct FeatureFlagsHandler
{
#ifdef OSPRAY_TARGET_SYCL
  sycl::kernel_handler &kernel_handler;

  FeatureFlagsHandler(sycl::kernel_handler &kh) : kernel_handler(kh) {}
#endif
};

inline uniform FeatureFlags ffAll()
{
  uniform FeatureFlags ff;
  ff.geometry = FFG_ALL;
#ifdef OSPRAY_ENABLE_VOLUMES
  ff.volume = VKL_FEATURE_FLAGS_DEFAULT;
#endif
  ff.other = FFO_ALL;
  return ff;
}

inline uniform FeatureFlags getFeatureFlags(
    const uniform FeatureFlagsHandler &ffh)
{
#ifdef OSPRAY_TARGET_SYCL
  return ffh.kernel_handler.get_specialization_constant<specFeatureFlags>();
#else
  return ffAll();
#endif
}

// For working around https://github.com/ispc/ispc/issues/2533
inline uniform FeatureFlagsGeometry getFeatureFlagsGeometry(
    const uniform FeatureFlagsHandler &ffh)
{
  const uniform FeatureFlags ff = getFeatureFlags(ffh);
  return ff.geometry;
}
inline uniform FeatureFlagsOther getFeatureFlagsOther(
    const uniform FeatureFlagsHandler &ffh)
{
  const uniform FeatureFlags ff = getFeatureFlags(ffh);
  return ff.other;
}

OSPRAY_END_ISPC_NAMESPACE