i965: Disable internal CCS for shadows of multi-sampled windows
If window system supports Y-tiling but not CCS_E, we currently create an internal CCS for any window system buffers and then resolve right before handing it off to X or Wayland. In the case of the single-sampled shadow of a multi-sampled window system buffer, this is pointless because the only thing we do with it is use it as a MSAA resolve target so we do MSAA resolve -> CCS resolve -> hand to the window system. Instead, just disable CCS for the shadow and then the MSAA resolve will write uncompressed directly into it. If the window system supports CCS_E, we will still use CCS_E, we just won't do internal CCS. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
6ab9fe7673
commit
e99b32d4d6
|
@ -1688,9 +1688,18 @@ intel_update_image_buffer(struct brw_context *intel,
|
|||
if (last_mt && last_mt->bo == buffer->bo)
|
||||
return;
|
||||
|
||||
/* Only allow internal compression if samples == 0. For multisampled
|
||||
* window system buffers, the only thing the single-sampled buffer is used
|
||||
* for is as a resolve target. If we do any compression beyond what is
|
||||
* supported by the window system, we will just have to resolve so it's
|
||||
* probably better to just not bother.
|
||||
*/
|
||||
const bool allow_internal_aux = (num_samples == 0);
|
||||
|
||||
struct intel_mipmap_tree *mt =
|
||||
intel_miptree_create_for_dri_image(intel, buffer, GL_TEXTURE_2D,
|
||||
intel_rb_format(rb), true);
|
||||
intel_rb_format(rb),
|
||||
allow_internal_aux);
|
||||
if (!mt)
|
||||
return;
|
||||
|
||||
|
|
Loading…
Reference in New Issue