nouveau: only advertise PIPE_FORMAT_DXT* if s3tc available
This commit is contained in:
committed by
Christoph Bumiller
parent
8ddf93e84c
commit
6ddd640365
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "pipe/p_screen.h"
|
||||
#include "pipe/p_state.h"
|
||||
#include "util/u_format_s3tc.h"
|
||||
#include "util/u_simple_screen.h"
|
||||
|
||||
#include "nouveau/nouveau_screen.h"
|
||||
@@ -145,6 +146,17 @@ nvfx_screen_surface_format_supported(struct pipe_screen *pscreen,
|
||||
}
|
||||
} else {
|
||||
switch (format) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||
case PIPE_FORMAT_B5G5R5A1_UNORM:
|
||||
@@ -156,10 +168,6 @@ nvfx_screen_surface_format_supported(struct pipe_screen *pscreen,
|
||||
case PIPE_FORMAT_L8A8_UNORM:
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
|
||||
case PIPE_FORMAT_DXT1_RGB:
|
||||
case PIPE_FORMAT_DXT1_RGBA:
|
||||
case PIPE_FORMAT_DXT3_RGBA:
|
||||
case PIPE_FORMAT_DXT5_RGBA:
|
||||
return TRUE;
|
||||
/* TODO: does nv30 support this? */
|
||||
case PIPE_FORMAT_R16_SNORM:
|
||||
|
||||
Reference in New Issue
Block a user