summaryrefslogtreecommitdiffstats
path: root/src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_constant_layout.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_constant_layout.h')
-rw-r--r--src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_constant_layout.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_constant_layout.h b/src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_constant_layout.h
new file mode 100644
index 00000000..df4120bc
--- /dev/null
+++ b/src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_constant_layout.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include <cstdint>
+
+#include "d3d9_caps.h"
+
+namespace dxvk {
+
+ struct D3D9ConstantLayout {
+ uint32_t floatCount;
+ uint32_t intCount;
+ uint32_t boolCount;
+ uint32_t bitmaskCount;
+
+ uint32_t floatSize() const { return floatCount * 4 * sizeof(float); }
+ uint32_t intSize() const { return intCount * 4 * sizeof(int); }
+ uint32_t bitmaskSize() const {
+ // Account for SWVP (non SWVP uses a spec constant)
+ return bitmaskCount != 1
+ ? bitmaskCount * 1 * sizeof(uint32_t)
+ : 0;
+ }
+
+ uint32_t floatOffset() const { return 0; }
+ uint32_t intOffset() const { return floatOffset() + floatSize(); }
+ uint32_t bitmaskOffset() const { return intOffset() + intSize(); }
+
+ uint32_t totalSize() const { return floatSize() + intSize() + bitmaskSize(); }
+ };
+
+} \ No newline at end of file