summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeepak Rawat <drawat@vmware.com>2019-06-05 10:46:47 -0700
committerDylan Baker <dylan@pnwbakers.com>2019-06-05 12:03:25 -0700
commitf9ac7bb8fb4285d6c1f51e7ac2a5f988fa35addb (patch)
tree2c1cf0652e218f3ee616b8e3d97a80339d96f357
parent0b9b177f4d42951f63eb896850bf35da3b04abab (diff)
downloadmesa-f9ac7bb8fb4285d6c1f51e7ac2a5f988fa35addb.tar.gz
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 <drawat@vmware.com> Fixes: 569f83898768 ("winsys/svga: Add support for new surface ioctl, multisample pattern") Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 828e1b0b4c5eef96a7f9a64010532263430e1f13)
-rw-r--r--src/gallium/winsys/svga/drm/vmw_screen_ioctl.c25
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 0ec8c1abe11..581083f521a 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;
@@ -264,17 +267,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;
@@ -305,7 +306,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;