summaryrefslogtreecommitdiffstats
path: root/src/libs/dxvk-native-1.9.2a/src/spirv/spirv_compression.h
blob: 7a1276c8e9e41e5419c501d93a32eeb7dd4a348f (plain)
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
#pragma once

#include <vector>

#include "spirv_code_buffer.h"

namespace dxvk {

  /**
   * \brief Compressed SPIR-V code buffer
   *
   * Implements a fast in-memory compression
   * to keep memory footprint low.
   */
  class SpirvCompressedBuffer {
    constexpr static uint32_t NumMaskWords = 32;
  public:

    SpirvCompressedBuffer();

    SpirvCompressedBuffer(
      const SpirvCodeBuffer&  code);
    
    ~SpirvCompressedBuffer();
    
    SpirvCodeBuffer decompress() const;

  private:

    uint32_t              m_size;
    std::vector<uint64_t> m_mask;
    std::vector<uint64_t> m_code;

  };

}