diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 2761b0bb2d6..ba0b7f09d7d 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -704,17 +704,19 @@ get_max_samples_for_formats(struct pipe_screen *screen, unsigned max_samples, unsigned bind) { - unsigned i, f; + unsigned i, f, supported_samples = 0; - for (i = max_samples; i > 0; --i) { - for (f = 0; f < num_formats; f++) { + for (f = 0; f < num_formats; f++) { + for (i = max_samples; i > 0; --i) { if (screen->is_format_supported(screen, formats[f], PIPE_TEXTURE_2D, i, i, bind)) { - return i; + /* update both return value and loop-boundary */ + max_samples = supported_samples = i; + break; } } } - return 0; + return supported_samples; } static unsigned @@ -1352,6 +1354,10 @@ void st_init_extensions(struct pipe_screen *screen, /* Maximum sample count. */ { static const enum pipe_format color_formats[] = { + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_UNORM, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_UNORM, PIPE_FORMAT_R8G8B8A8_UNORM, PIPE_FORMAT_B8G8R8A8_UNORM, PIPE_FORMAT_A8R8G8B8_UNORM, @@ -1365,6 +1371,8 @@ void st_init_extensions(struct pipe_screen *screen, PIPE_FORMAT_Z32_FLOAT }; static const enum pipe_format int_formats[] = { + PIPE_FORMAT_R32G32B32A32_SINT, + PIPE_FORMAT_R16G16B16A16_SINT, PIPE_FORMAT_R8G8B8A8_SINT }; static const enum pipe_format void_formats[] = {