Commit 7988513a authored by Neha Bhende's avatar Neha Bhende Committed by Brian Paul
Browse files

svga: Fix failures caused in fedora 24



SVGA_3D_CMD_DX_GENRATE_MIPMAP & SVGA_3D_CMD_DX_SET_PREDICATION commands
are not presents in fedora 24 kernel module. Because of this
reason application like supertuxkart are not running.

v2: Add few comments and code modifications suggested by Brian P.
Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
Reviewed-by: Charmaine Lee's avatarCharmaine Lee <charmainel@vmware.com>
parent 52f297d1
......@@ -1219,13 +1219,19 @@ svga_render_condition(struct pipe_context *pipe, struct pipe_query *q,
sws->fence_finish(sws, sq->fence, SVGA_FENCE_FLAG_QUERY);
}
}
ret = SVGA3D_vgpu10_SetPredication(svga->swc, queryId,
(uint32) condition);
if (ret != PIPE_OK) {
svga_context_flush(svga, NULL);
/*
* if the kernel module doesn't support the predication command,
* we'll just render unconditionally.
* This is probably acceptable for the typical case of occlusion culling.
*/
if (sws->have_set_predication_cmd) {
ret = SVGA3D_vgpu10_SetPredication(svga->swc, queryId,
(uint32) condition);
if (ret != PIPE_OK) {
svga_context_flush(svga, NULL);
ret = SVGA3D_vgpu10_SetPredication(svga->swc, queryId,
(uint32) condition);
}
}
}
......
......@@ -320,7 +320,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
return 1; /* may be a sw fallback, depending on restart index */
case PIPE_CAP_GENERATE_MIPMAP:
return sws->have_vgpu10;
return sws->have_generate_mipmap_cmd;
/* Unsupported features */
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
......
......@@ -544,6 +544,9 @@ struct svga_winsys_screen
/** To rebind resources at the beginnning of a new command buffer */
boolean need_to_rebind_resources;
boolean have_generate_mipmap_cmd;
boolean have_set_predication_cmd;
};
......
......@@ -1022,6 +1022,17 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws)
" (%i, %s).\n", ret, strerror(-ret));
goto out_no_caps;
}
if (((version->version_major == 2 && version->version_minor >= 10)
|| version->version_major > 2) && vws->base.have_vgpu10) {
/* support for these commands didn't make it into vmwgfx kernel
* modules before 2.10.
*/
vws->base.have_generate_mipmap_cmd = TRUE;
vws->base.have_set_predication_cmd = TRUE;
}
free(cap_buffer);
drmFreeVersion(version);
vmw_printf("%s OK\n", __FUNCTION__);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment