Reviewed-by: Jakob Bornecrantz <ja...@collabora.com>
On Tue, Aug 14, 2018 at 2:02 PM, Erik Faye-Lund <erik.faye-l...@collabora.com> wrote: > Instead of doing conservative guesses, we should report the max levels > based on the max sizes we get from GL on the host. > > Signed-off-by: Erik Faye-Lund <erik.faye-l...@collabora.com> > --- > src/gallium/drivers/virgl/virgl_hw.h | 3 +++ > src/gallium/drivers/virgl/virgl_screen.c | 7 +++++++ > 2 files changed, 10 insertions(+) > > diff --git a/src/gallium/drivers/virgl/virgl_hw.h > b/src/gallium/drivers/virgl/virgl_hw.h > index b56f554b00..787452d328 100644 > --- a/src/gallium/drivers/virgl/virgl_hw.h > +++ b/src/gallium/drivers/virgl/virgl_hw.h > @@ -347,6 +347,9 @@ struct virgl_caps_v2 { > uint32_t max_compute_shared_memory_size; > uint32_t max_compute_grid_size[3]; > uint32_t max_compute_block_size[3]; > + uint32_t max_texture_2d_size; > + uint32_t max_texture_3d_size; > + uint32_t max_texture_cube_size; > }; > > union virgl_caps { > diff --git a/src/gallium/drivers/virgl/virgl_screen.c > b/src/gallium/drivers/virgl/virgl_screen.c > index 0ac976acbd..86063c66aa 100644 > --- a/src/gallium/drivers/virgl/virgl_screen.c > +++ b/src/gallium/drivers/virgl/virgl_screen.c > @@ -24,6 +24,7 @@ > #include "util/u_format.h" > #include "util/u_format_s3tc.h" > #include "util/u_video.h" > +#include "util/u_math.h" > #include "util/os_time.h" > #include "pipe/p_defines.h" > #include "pipe/p_screen.h" > @@ -72,10 +73,16 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap > param) > case PIPE_CAP_TEXTURE_SWIZZLE: > return 1; > case PIPE_CAP_MAX_TEXTURE_2D_LEVELS: > + if (vscreen->caps.caps.v2.max_texture_2d_size) > + return 1 + util_logbase2(vscreen->caps.caps.v2.max_texture_2d_size); > return 15; /* 16K x 16K */ > case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: > + if (vscreen->caps.caps.v2.max_texture_3d_size) > + return 1 + util_logbase2(vscreen->caps.caps.v2.max_texture_3d_size); > return 9; /* 256 x 256 x 256 */ > case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: > + if (vscreen->caps.caps.v2.max_texture_cube_size) > + return 1 + > util_logbase2(vscreen->caps.caps.v2.max_texture_cube_size); > return 13; /* 4K x 4K */ > case PIPE_CAP_BLEND_EQUATION_SEPARATE: > return 1; > -- > 2.17.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev