[Mesa-dev] [PATCH] winsys/svga: Avoid calling drm getparam for max surface size on older kernels
Brian Paul
brian.e.paul at gmail.com
Mon Feb 24 08:31:14 PST 2014
On Mon, Feb 24, 2014 at 2:05 AM, Thomas Hellstrom <thellstrom at vmware.com>wrote:
> This avoids the kernel driver spewing out errors about the param not being
> supported.
>
> Also correct the max surface size used when the kernel does not support the
> query.
>
> Reported-by: Brian Paul <brianp at vmware.com>
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
> Reviewed-by: Charmaine Lee <charmainel at vmware.com>
> Cc: "10.1" <mesa-stable at lists.freedesktop.org>
> ---
> src/gallium/winsys/svga/drm/vmw_screen_ioctl.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c
> b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c
> index b7bedb1..2866a29 100644
> --- a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c
> +++ b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c
> @@ -762,7 +762,7 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws)
> int ret;
> uint32_t *cap_buffer;
> drmVersionPtr version;
> - boolean drm_gb_capable;
> + boolean have_drm_2_5;
>
> VMW_FUNC;
>
> @@ -770,7 +770,7 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws)
> if (!version)
> goto out_no_version;
>
> - drm_gb_capable = version->version_major > 2 ||
> + have_drm_2_5 = version->version_major > 2 ||
> (version->version_major == 2 && version->version_minor > 4);
>
How about something like:
have_drm_2_5 = version->version_major * 100 + version->version_minor >= 205?
Not a big deal though. Thanks for fixing this.
Reviewed-by: Brian Paul <brianp at vmware.com>
>
> memset(&gp_arg, 0, sizeof(gp_arg));
> @@ -803,7 +803,7 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws)
> vws->base.have_gb_objects =
> !!(gp_arg.value & (uint64_t) SVGA_CAP_GBOBJECTS);
>
> - if (vws->base.have_gb_objects && !drm_gb_capable)
> + if (vws->base.have_gb_objects && !have_drm_2_5)
> goto out_no_3d;
>
> if (vws->base.have_gb_objects) {
> @@ -839,11 +839,12 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws)
>
> memset(&gp_arg, 0, sizeof(gp_arg));
> gp_arg.param = DRM_VMW_PARAM_MAX_SURF_MEMORY;
> - ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GET_PARAM,
> - &gp_arg, sizeof(gp_arg));
> - if (ret) {
> + if (have_drm_2_5)
> + ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GET_PARAM,
> + &gp_arg, sizeof(gp_arg));
> + if (!have_drm_2_5 || ret) {
> /* Just guess a large enough value, around 800mb. */
> - vws->ioctl.max_surface_memory = 0x300000000;
> + vws->ioctl.max_surface_memory = 0x30000000;
> } else {
> vws->ioctl.max_surface_memory = gp_arg.value;
> }
> --
> 1.7.10.4
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140224/33557500/attachment.html>
More information about the mesa-dev
mailing list