2016-11-13 12:35 GMT-06:00 Andrew Wesie awesie@gmail.com:
Signed-off-by: Andrew Wesie awesie@gmail.com
dlls/wined3d/state.c | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-)
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index cd3763c..ed20e325 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -4617,26 +4617,6 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine struct wined3d_viewport vp = state->viewport; unsigned int width, height;
- if (target)
- {
if (vp.width > target->width)
vp.width = target->width;
if (vp.height > target->height)
vp.height = target->height;
wined3d_rendertarget_view_get_drawable_size(target, context, &width, &height);
- }
- else if (depth_stencil)
- {
width = depth_stencil->width;
height = depth_stencil->height;
- }
- else
- {
FIXME("No attachments draw calls not supported.\n");
return;
- }
- gl_info->gl_ops.gl.p_glDepthRange(vp.min_z, vp.max_z); checkGLcall("glDepthRange"); /* Note: GL requires lower left, DirectX supplies upper left. This is
@@ -4644,7 +4624,29 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine if (context->render_offscreen) gl_info->gl_ops.gl.p_glViewport(vp.x, vp.y, vp.width, vp.height); else
- {
if (target)
{
if (vp.width > target->width)
vp.width = target->width;
if (vp.height > target->height)
vp.height = target->height;
wined3d_rendertarget_view_get_drawable_size(target, context, &width, &height);
}
else if (depth_stencil)
{
width = depth_stencil->width;
height = depth_stencil->height;
}
else
{
FIXME("No attachments draw calls not supported.\n");
return;
}
gl_info->gl_ops.gl.p_glViewport(vp.x, (height - (vp.y + vp.height)), vp.width, vp.height);
- } checkGLcall("glViewport");
}
You need to make the same change to viewport_miscpart_cc() (you can blame me for that).
Again, it would be very nice to have a testcase for this. Extending viewport_test() in d3d9/tests/visual.c and adding similar tests to the other d3d versions shouldn't be too hard.