Kenneth Graunke <kenn...@whitecape.org> writes:

> Commit 33599433c7 began setting the texture swizzle mode to XYZ1 for
> RED, RG, and RGB textures in order to force alpha to 1.0 in case we
> actually stored the texture as RGBA.
>
> This had a unforseen performance implication: the shader precompile
> assumes that the texture swizzle mode will be XYZW for non-shadow
> sampler types.  By setting it to XYZ1, this means every shader used with
> a RED, RG, or RGB texture has to be recompiled.  This is a very common
> case.
>
> Unfortunately, there's no way to improve the precompile, since RGBA
> textures still need XYZW, and there's no way to know by looking at
> the shader source what texture formats might be used.
>
> However, we only need to smash alpha to 1.0 if the texture's memory
> format actually has alpha bits.  If not, the sampler already returns 1.0
> for us without any special swizzling.  XRGB8888, for example, is a very
> common case where this occurs.
>
> This partially fixes a performance regression since commit 33599433c7.
> More work is required to fully fix it in all cases.  This at least helps
> Warsow.

Now that we have MESA_FORMAT_XBGR16161616_FLOAT and company, we could
potentially make this conditional just die by using those formats.

Attachment: pgpzWJJvQCiwz.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to