summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorBen Widawsky <[email protected]>2015-10-13 20:50:27 -0700
committerBen Widawsky <[email protected]>2015-11-20 11:45:44 -0800
commit0288f92e7b0ce5f0d821f2d0ddef522a23776ecb (patch)
tree5fe563f3df07a21773611bdf1ffeb2d3a9c75378 /src/mesa
parent7c690da29c9eb78f1f61c0aed6582065b8ff9775 (diff)
i965/gen9: Support fast clears for 32b float
SKL supports the ability to do fast clears and resolves of 32b RGBA as both integer and floats. This patch only enables float color clears because we haven't yet enabled integer color clears, (HW support for that was added in BDW). v2: Remove LUMINANCE16F and INTENSITY16F special cases since they are now handled by Neil's patch to disable MSAA fast clears. Signed-off-by: Ben Widawsky <[email protected]> Reviewed-by: Neil Roberts <[email protected]> Reviewed-by: Chad Versace <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_meta_fast_clear.c8
-rw-r--r--src/mesa/drivers/dri/i965/gen8_surface_state.c8
2 files changed, 6 insertions, 10 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
index f3c256d11db..499daba3b00 100644
--- a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
+++ b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
@@ -359,8 +359,12 @@ is_color_fast_clear_compatible(struct brw_context *brw,
}
for (int i = 0; i < 4; i++) {
- if (color->f[i] != 0.0f && color->f[i] != 1.0f &&
- _mesa_format_has_color_component(format, i)) {
+ if (!_mesa_format_has_color_component(format, i)) {
+ continue;
+ }
+
+ if (brw->gen < 9 &&
+ color->f[i] != 0.0f && color->f[i] != 1.0f) {
return false;
}
}
diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c b/src/mesa/drivers/dri/i965/gen8_surface_state.c
index e81b64629f8..9cdd1c71b4d 100644
--- a/src/mesa/drivers/dri/i965/gen8_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c
@@ -188,14 +188,6 @@ gen8_emit_fast_clear_color(struct brw_context *brw,
uint32_t *surf)
{
if (brw->gen >= 9) {
-#define check_fast_clear_val(x) \
- assert(mt->gen9_fast_clear_color.f[x] == 0.0 || \
- mt->gen9_fast_clear_color.f[x] == 1.0)
- check_fast_clear_val(0);
- check_fast_clear_val(1);
- check_fast_clear_val(2);
- check_fast_clear_val(3);
-#undef check_fast_clear_val
surf[12] = mt->gen9_fast_clear_color.ui[0];
surf[13] = mt->gen9_fast_clear_color.ui[1];
surf[14] = mt->gen9_fast_clear_color.ui[2];