diff options
author | Marek Olšák <[email protected]> | 2013-01-05 06:21:49 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2013-01-06 14:44:12 +0100 |
commit | 8ed6b1400bc8a78f46340f41aaf2e88b24c23267 (patch) | |
tree | 56cddcccd509040b3b38bed2b1929408bbe9f1b5 /src/gallium/drivers/r300/r300_context.h | |
parent | cc030da4284b6c965d2b72c68a875b3210a4b286 (diff) |
r300g: implement MSAA
This is not as optimized as r600g - the MSAA compression is missing,
so r300g needs a lot of bandwidth (more than r600g to do the same thing).
However, if the bandwidth is not an issue for you, you can enjoy this
unoptimized MSAA support.
The only other missing optimization for MSAA is the fast color clear.
MSAA is enabled on r500 only, because that's the only GPU family I tested.
That said, MSAA should work on r300 and r400 as well (but you must set
RADEON_MSAA=1 to allow it, then turn MSAA on in your app or set GALLIUM_MSAA=n,
n >= 2, n <= 6)
I will enable the support by default on r300-r400 once someone (other than me)
tests those chipsets with piglit.
The supported modes are 2x, 4x, 6x.
The supported MSAA formats are RGBA8, BGRA8, and RGBA16F (r500 only).
Those 3 formats are used for all GL internal formats.
Tested with piglit. (I have ported all MSAA tests to GL2.1)
Diffstat (limited to 'src/gallium/drivers/r300/r300_context.h')
-rw-r--r-- | src/gallium/drivers/r300/r300_context.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index cddd91d7ab8..1b912c3eeee 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -73,7 +73,6 @@ struct r300_aa_state { struct r300_surface *dest; uint32_t aa_config; - uint32_t aaresolve_ctl; }; struct r300_blend_state { @@ -499,6 +498,8 @@ struct r300_context { struct r300_atom blend_color_state; /* Scissor state. */ struct r300_atom scissor_state; + /* Sample mask. */ + struct r300_atom sample_mask; /* Invariant state. This must be emitted to get the engine started. */ struct r300_atom invariant_state; /* Viewport state. */ @@ -573,6 +574,10 @@ struct r300_context { enum r300_fs_validity_status fs_status; /* Framebuffer multi-write. */ boolean fb_multiwrite; + unsigned num_samples; + boolean msaa_enable; + boolean alpha_to_one; + boolean alpha_to_coverage; void *dsa_decompress_zmask; |