On 23/02/17 16:26, Jason Ekstrand wrote:
On Feb 23, 2017 8:03 AM, "Lionel Landwerlin"
<lionel.g.landwer...@intel.com <mailto:lionel.g.landwer...@intel.com>>
wrote:
I must be missing something, but I'm struggling to see why this
patch change anything.
Why does it matter if we write a clear color in SURFACE_STATE?
Shouldn't the usage of that color value only depend on whether we
enable 3DSTATE_PS.RenderTargetFastClearEnable for instance?
Because ISL will assert on us if it's a color the surface state
doesn't allow. In this particular case it was a non-0/1 color which
isn't even representable on Broadwell.
Thanks! Makes sense now :)
Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>
-
Lionel
On 22/02/17 03:31, Jason Ekstrand wrote:
Not all clear colors are valid. In particular, on Broadwell and
earlier, only 0/1 colors are allowed in surface state. No CTS
tests are
affected outright by this because, apparently, the CTS
coverage for
different clear colors is pretty terrible. However, when
multisample
compression is enabled, we do hit it with CTS tests and this
commit
prevents regressions when enabling MCS on Broadwell and earlier.
Cc: "13.0 17.0" <mesa-sta...@lists.freedesktop.org
<mailto:mesa-sta...@lists.freedesktop.org>>
---
src/intel/vulkan/anv_blorp.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/intel/vulkan/anv_blorp.c
b/src/intel/vulkan/anv_blorp.c
index 4e7078b..8db03e4 100644
--- a/src/intel/vulkan/anv_blorp.c
+++ b/src/intel/vulkan/anv_blorp.c
@@ -1198,9 +1198,10 @@ anv_cmd_buffer_clear_subpass(struct
anv_cmd_buffer *cmd_buffer)
struct blorp_surf surf;
get_blorp_surf_for_anv_image(image,
VK_IMAGE_ASPECT_COLOR_BIT,
att_state->aux_usage, &surf);
- surf.clear_color =
vk_to_isl_color(att_state->clear_value.color);
if (att_state->fast_clear) {
+ surf.clear_color =
vk_to_isl_color(att_state->clear_value.color);
+
blorp_fast_clear(&batch, &surf, iview->isl.format,
iview->isl.base_level,
iview->isl.base_array_layer, fb->layers,
@@ -1224,7 +1225,7 @@ anv_cmd_buffer_clear_subpass(struct
anv_cmd_buffer *cmd_buffer)
render_area.offset.x, render_area.offset.y,
render_area.offset.x +
render_area.extent.width,
render_area.offset.y +
render_area.extent.height,
- surf.clear_color, NULL);
+ vk_to_isl_color(att_state->clear_value.color), NULL);
}
att_state->pending_clear_aspects = 0;
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev