summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-03-14 09:48:15 -0400
committerGitHub <noreply@github.com>2020-03-14 09:48:15 -0400
commit35145bd529c3517e2c366efc764a762092d96edf (patch)
tree58c80a2133092b990ca11f3a357d70fab2c5fd0b /src/video_core/engines
parent666d431ad8ee4e36f1b7f48d13f3fa63ba3675f2 (diff)
parent69c7a01f88a1839a3d950cab968accfa5100ea18 (diff)
Merge pull request #3490 from ReinUsesLisp/transform-feedbacks
video_core: Initial implementation of transform feedbacks
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/maxwell_3d.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index 8752a1cfb..8a9e9992e 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -628,19 +628,26 @@ public:
float depth_range_far;
};
- struct alignas(32) TransformFeedbackBinding {
+ struct TransformFeedbackBinding {
u32 buffer_enable;
u32 address_high;
u32 address_low;
s32 buffer_size;
s32 buffer_offset;
+ INSERT_UNION_PADDING_WORDS(3);
+
+ GPUVAddr Address() const {
+ return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) |
+ address_low);
+ }
};
static_assert(sizeof(TransformFeedbackBinding) == 32);
- struct alignas(16) TransformFeedbackLayout {
+ struct TransformFeedbackLayout {
u32 stream;
u32 varying_count;
u32 stride;
+ INSERT_UNION_PADDING_WORDS(1);
};
static_assert(sizeof(TransformFeedbackLayout) == 16);
@@ -652,6 +659,10 @@ public:
return shader_config[index].enable != 0;
}
+ bool IsShaderConfigEnabled(Regs::ShaderProgram type) const {
+ return IsShaderConfigEnabled(static_cast<std::size_t>(type));
+ }
+
union {
struct {
INSERT_UNION_PADDING_WORDS(0x45);