[Mesa-dev] [PATCH] nv50: only advertise PIPE_FORMAT_DXT* if s3tc available

Christoph Bumiller e0425955 at student.tuwien.ac.at
Wed May 5 05:42:27 PDT 2010


On 05/03/2010 03:01 PM, Xavier Chantry wrote:
> This fixes flightgear assertion in dxt stubs :
> Mesa warning: external dxt library not available: texstore_rgba_dxt3
> util/u_format_s3tc.c:66:util_format_dxt3_rgba_fetch_stub: Assertion `0'
> failed.
> 
> Only advertise for BIND_SAMPLER_VIEW to avoid very weird paths, according to
> José Fonseca.

Thanks, applied (also to nvfx).

> ---
>  src/gallium/drivers/nouveau/nouveau_screen.c |    3 +++
>  src/gallium/drivers/nv50/nv50_screen.c       |   16 ++++++++++++----
>  2 files changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c
> index 233a91a..a91b00b 100644
> --- a/src/gallium/drivers/nouveau/nouveau_screen.c
> +++ b/src/gallium/drivers/nouveau/nouveau_screen.c
> @@ -5,6 +5,7 @@
>  #include "util/u_memory.h"
>  #include "util/u_inlines.h"
>  #include "util/u_format.h"
> +#include "util/u_format_s3tc.h"
>  
>  #include <stdio.h>
>  #include <errno.h>
> @@ -248,6 +249,8 @@ nouveau_screen_init(struct nouveau_screen *screen, struct nouveau_device *dev)
>  	pscreen->fence_signalled = nouveau_screen_fence_signalled;
>  	pscreen->fence_finish = nouveau_screen_fence_finish;
>  
> +	util_format_s3tc_init();
> +
>  	return 0;
>  }
>  
> diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
> index 2dd1042..bf46ceb 100644
> --- a/src/gallium/drivers/nv50/nv50_screen.c
> +++ b/src/gallium/drivers/nv50/nv50_screen.c
> @@ -20,6 +20,7 @@
>   * SOFTWARE.
>   */
>  
> +#include "util/u_format_s3tc.h"
>  #include "pipe/p_screen.h"
>  
>  #include "nv50_context.h"
> @@ -60,6 +61,17 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
>  			break;
>  		}
>  	} else {
> +		if (tex_usage & PIPE_BIND_SAMPLER_VIEW) {
> +			switch (format) {
> +			case PIPE_FORMAT_DXT1_RGB:
> +			case PIPE_FORMAT_DXT1_RGBA:
> +			case PIPE_FORMAT_DXT3_RGBA:
> +			case PIPE_FORMAT_DXT5_RGBA:
> +				return util_format_s3tc_enabled;
> +			default:
> +				break;
> +			}
> +		}
>  		switch (format) {
>  		case PIPE_FORMAT_B8G8R8A8_UNORM:
>  		case PIPE_FORMAT_B8G8R8X8_UNORM:
> @@ -72,10 +84,6 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
>  		case PIPE_FORMAT_A8_UNORM:
>  		case PIPE_FORMAT_I8_UNORM:
>  		case PIPE_FORMAT_L8A8_UNORM:
> -		case PIPE_FORMAT_DXT1_RGB:
> -		case PIPE_FORMAT_DXT1_RGBA:
> -		case PIPE_FORMAT_DXT3_RGBA:
> -		case PIPE_FORMAT_DXT5_RGBA:
>  		case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
>  		case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
>  		case PIPE_FORMAT_Z32_FLOAT:



More information about the mesa-dev mailing list