1 // Copyright 2020-2021 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 
4 #include <sstream>
5 #include "../../external/catch.hpp"
6 #include "openvkl_testing.h"
7 #include "structured_regular_volume.h"
8 
9 using namespace rkcommon;
10 using namespace openvkl::testing;
11 
12 TEST_CASE("Structured regular volume strides", "[volume_strides]")
13 {
14   initializeOpenVKL();
15 
16   std::vector<VKLDataCreationFlags> dataCreationFlags{VKL_DATA_DEFAULT,
17                                                       VKL_DATA_SHARED_BUFFER};
18 
19   std::vector<float> strideFactors{1.5f, 2.f};
20 
21   for (const auto &dcf : dataCreationFlags) {
22     for (const auto &strideFactor : strideFactors) {
23       std::stringstream sectionName;
24       sectionName << (dcf == VKL_DATA_DEFAULT ? "VKL_DATA_DEFAULT"
25                                               : "VKL_DATA_SHARED_BUFFER");
26       sectionName << ", stride factor: " << strideFactor;
27 
28       // can't have duplicate section names at the same level
29       DYNAMIC_SECTION(sectionName.str())
30       {
31         SECTION("32-bit addressing")
32         {
33           SECTION("unsigned char")
34           {
35             test_32bit_addressing<WaveletStructuredRegularVolumeUChar>(
36                 dcf, strideFactor);
37           }
38 
39           SECTION("short")
40           {
41             test_32bit_addressing<WaveletStructuredRegularVolumeShort>(
42                 dcf, strideFactor);
43           }
44 
45           SECTION("unsigned short")
46           {
47             test_32bit_addressing<WaveletStructuredRegularVolumeUShort>(
48                 dcf, strideFactor);
49           }
50 
51           SECTION("half")
52           {
53             test_32bit_addressing<WaveletStructuredRegularVolumeHalf>(
54                 dcf, strideFactor);
55           }
56 
57           SECTION("float")
58           {
59             test_32bit_addressing<WaveletStructuredRegularVolumeFloat>(
60                 dcf, strideFactor);
61           }
62 
63           SECTION("double")
64           {
65             test_32bit_addressing<WaveletStructuredRegularVolumeDouble>(
66                 dcf, strideFactor);
67           }
68         }
69 
70         SECTION("64/32-bit addressing")
71         {
72           SECTION("unsigned char")
73           {
74             test_64_32bit_addressing<WaveletStructuredRegularVolumeUChar>(
75                 dcf, strideFactor);
76           }
77 
78           SECTION("short")
79           {
80             test_64_32bit_addressing<WaveletStructuredRegularVolumeShort>(
81                 dcf, strideFactor);
82           }
83 
84           SECTION("unsigned short")
85           {
86             test_64_32bit_addressing<WaveletStructuredRegularVolumeUShort>(
87                 dcf, strideFactor);
88           }
89 
90           SECTION("half")
91           {
92             test_64_32bit_addressing<WaveletStructuredRegularVolumeHalf>(
93                 dcf, strideFactor);
94           }
95 
96           SECTION("float")
97           {
98             test_64_32bit_addressing<WaveletStructuredRegularVolumeFloat>(
99                 dcf, strideFactor);
100           }
101 
102           SECTION("double")
103           {
104             test_64_32bit_addressing<WaveletStructuredRegularVolumeDouble>(
105                 dcf, strideFactor);
106           }
107         }
108       }
109     }
110   }
111 
112   shutdownOpenVKL();
113 }
114