File: MipMapCache.h

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 (44 lines) | stat: -rw-r--r-- 944 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
// Copyright 2024 Intel Corporation
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <memory>
#include <unordered_map>

namespace ospray {

struct MipMapCache
{
  using BufferPtr = std::shared_ptr<devicert::BufferShared<char>>;

  // Find appropriate MIP map pyramid for given texture data
  inline BufferPtr find(char *rootLevel);

  // Manage cache entries
  inline void add(char *rootLevel, BufferPtr mipMaps);
  inline void remove(char *rootLevel);

 private:

  // Hash map containing MIP map buffers
  std::unordered_map<char *, BufferPtr> map;
};

MipMapCache::BufferPtr MipMapCache::find(char *rootLevel)
{
    auto it = map.find(rootLevel);
    return it != map.end() ? it->second : BufferPtr();
}

void MipMapCache::add(char *rootLevel, MipMapCache::BufferPtr mipMaps)
{
    map.insert(std::make_pair(rootLevel, mipMaps));
}

void MipMapCache::remove(char *rootLevel)
{
    map.erase(rootLevel);
}

} // namespace ospray