diff options
author | bunnei <bunneidev@gmail.com> | 2015-03-09 22:06:30 -0400 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2015-03-09 22:06:30 -0400 |
commit | ec5bc54575c03bed67e712a0508ee55c06ec652c (patch) | |
tree | 0b12d5fe048826ab8411b2ebc38e9200f44c35ab /src/video_core/pica.h | |
parent | e10a9b2f666344a4cdcf7846346b88f6825fa1ac (diff) | |
parent | 1248e291f0c9a29734b0f5175df8fa675cce930c (diff) |
Merge pull request #643 from Subv/dem_feels
GPU: Implemented more depth buffer formats.
Diffstat (limited to 'src/video_core/pica.h')
-rw-r--r-- | src/video_core/pica.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/video_core/pica.h b/src/video_core/pica.h index b14de9278..fe20cd77d 100644 --- a/src/video_core/pica.h +++ b/src/video_core/pica.h @@ -393,7 +393,15 @@ struct Regs { BitField< 8, 8, u32> ref; } alpha_test; - INSERT_PADDING_WORDS(0x2); + union { + BitField< 0, 1, u32> stencil_test_enable; + BitField< 4, 3, CompareFunc> stencil_test_func; + BitField< 8, 8, u32> stencil_replacement_value; + BitField<16, 8, u32> stencil_reference_value; + BitField<24, 8, u32> stencil_mask; + } stencil_test; + + INSERT_PADDING_WORDS(0x1); union { BitField< 0, 1, u32> depth_test_enable; @@ -408,6 +416,30 @@ struct Regs { INSERT_PADDING_WORDS(0x8); } output_merger; + enum DepthFormat : u32 { + D16 = 0, + + D24 = 2, + D24S8 = 3 + }; + + /* + * Returns the number of bytes in the specified depth format + */ + static u32 BytesPerDepthPixel(DepthFormat format) { + switch (format) { + case DepthFormat::D16: + return 2; + case DepthFormat::D24: + return 3; + case DepthFormat::D24S8: + return 4; + default: + LOG_CRITICAL(HW_GPU, "Unknown depth format %u", format); + UNIMPLEMENTED(); + } + } + struct { // Components are laid out in reverse byte order, most significant bits first. enum ColorFormat : u32 { @@ -420,7 +452,7 @@ struct Regs { INSERT_PADDING_WORDS(0x6); - u32 depth_format; + DepthFormat depth_format; BitField<16, 3, u32> color_format; INSERT_PADDING_WORDS(0x4); |