diff options
author | Deepak Rawat <[email protected]> | 2019-06-05 10:46:47 -0700 |
---|---|---|
committer | Charmaine Lee <[email protected]> | 2019-06-02 22:31:07 -0700 |
commit | 828e1b0b4c5eef96a7f9a64010532263430e1f13 (patch) | |
tree | 70ee09186f8023d3e0b94818738161216e47c618 | |
parent | c51312bc94046846d691810ef53551e9d10aa904 (diff) |
winsys/drm: Fix out of scope variable usage
In this particular instance, struct member were used outside of the
block where it was defined. Fix this by moving the definition outside of
block.
Signed-off-by: Deepak Rawat <[email protected]>
Fixes: 569f83898768 ("winsys/svga: Add support for new surface ioctl, multisample pattern")
Reviewed-by: Brian Paul <[email protected]>
-rw-r--r-- | src/gallium/winsys/svga/drm/vmw_screen_ioctl.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c index c7310dc7eb4..a02d31c2bcb 100644 --- a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c +++ b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c @@ -210,6 +210,10 @@ vmw_ioctl_gb_surface_create(struct vmw_winsys_screen *vws, SVGA3dMSQualityLevel qualityLevel, struct vmw_region **p_region) { + union { + union drm_vmw_gb_surface_create_ext_arg ext_arg; + union drm_vmw_gb_surface_create_arg arg; + } s_arg; struct drm_vmw_gb_surface_create_rep *rep; struct vmw_region *region = NULL; int ret; @@ -222,12 +226,11 @@ vmw_ioctl_gb_surface_create(struct vmw_winsys_screen *vws, return SVGA3D_INVALID_ID; } - if (vws->ioctl.have_drm_2_15) { - union drm_vmw_gb_surface_create_ext_arg s_arg; - struct drm_vmw_gb_surface_create_ext_req *req = &s_arg.req; - rep = &s_arg.rep; + memset(&s_arg, 0, sizeof(s_arg)); - memset(&s_arg, 0, sizeof(s_arg)); + if (vws->ioctl.have_drm_2_15) { + struct drm_vmw_gb_surface_create_ext_req *req = &s_arg.ext_arg.req; + rep = &s_arg.ext_arg.rep; req->version = drm_vmw_gb_surface_v1; req->multisample_pattern = multisamplePattern; @@ -267,17 +270,15 @@ vmw_ioctl_gb_surface_create(struct vmw_winsys_screen *vws, buffer_handle : SVGA3D_INVALID_ID; ret = drmCommandWriteRead(vws->ioctl.drm_fd, - DRM_VMW_GB_SURFACE_CREATE_EXT, &s_arg, - sizeof(s_arg)); + DRM_VMW_GB_SURFACE_CREATE_EXT, &s_arg.ext_arg, + sizeof(s_arg.ext_arg)); if (ret) goto out_fail_create; } else { - union drm_vmw_gb_surface_create_arg s_arg; - struct drm_vmw_gb_surface_create_req *req = &s_arg.req; - rep = &s_arg.rep; + struct drm_vmw_gb_surface_create_req *req = &s_arg.arg.req; + rep = &s_arg.arg.rep; - memset(&s_arg, 0, sizeof(s_arg)); req->svga3d_flags = (uint32_t) flags; req->format = (uint32_t) format; @@ -308,7 +309,7 @@ vmw_ioctl_gb_surface_create(struct vmw_winsys_screen *vws, buffer_handle : SVGA3D_INVALID_ID; ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GB_SURFACE_CREATE, - &s_arg, sizeof(s_arg)); + &s_arg.arg, sizeof(s_arg.arg)); if (ret) goto out_fail_create; |