Stefan Dösinger : wined3d: Pass a struct wined3d_fb_state * to context_apply_clear_state.
Alexandre Julliard
julliard at winehq.org
Tue Jul 5 12:59:07 CDT 2011
Module: wine
Branch: master
Commit: 718c6149377d1ecdec054a8a64685b2f6abf653e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=718c6149377d1ecdec054a8a64685b2f6abf653e
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Sat Jul 2 11:29:28 2011 +0200
wined3d: Pass a struct wined3d_fb_state * to context_apply_clear_state.
---
dlls/wined3d/context.c | 11 ++++++-----
dlls/wined3d/device.c | 2 +-
dlls/wined3d/wined3d_private.h | 14 +++++++-------
3 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 94ed896..7895156 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -2083,19 +2083,20 @@ static BOOL context_validate_rt_config(UINT rt_count,
/* Context activation is done by the caller. */
BOOL context_apply_clear_state(struct wined3d_context *context, struct wined3d_device *device,
- UINT rt_count, struct wined3d_surface **rts, struct wined3d_surface *depth_stencil)
+ UINT rt_count, const struct wined3d_fb_state *fb)
{
const struct StateEntry *state_table = device->StateTable;
DWORD rt_mask = 0;
UINT i;
+ struct wined3d_surface **rts = fb->render_targets;
- if (!context_validate_rt_config(rt_count, rts, depth_stencil))
+ if (!context_validate_rt_config(rt_count, rts, fb->depth_stencil))
return FALSE;
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
{
- context_validate_onscreen_formats(device, context, depth_stencil);
+ context_validate_onscreen_formats(device, context, fb->depth_stencil);
ENTER_GL();
@@ -2112,7 +2113,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, struct wined3d_d
context->blit_targets[i] = NULL;
++i;
}
- context_apply_fbo_state(context, GL_FRAMEBUFFER, context->blit_targets, depth_stencil, SFLAG_INTEXTURE);
+ context_apply_fbo_state(context, GL_FRAMEBUFFER, context->blit_targets, fb->depth_stencil, SFLAG_INTEXTURE);
glReadBuffer(GL_NONE);
checkGLcall("glReadBuffer");
}
@@ -2124,7 +2125,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, struct wined3d_d
LEAVE_GL();
- /* TODO: This is not necessary if the rts are the device's current targets */
+ /* TODO: This is not necessary if the framebuffer is the device's current framebuffer */
context_invalidate_state(context, STATE_FRAMEBUFFER, device->StateTable);
}
else
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 14e6613..a479119 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -685,7 +685,7 @@ HRESULT device_clear_render_targets(struct wined3d_device *device, UINT rt_count
return WINED3D_OK;
}
- if (!context_apply_clear_state(context, device, rt_count, fb->render_targets, fb->depth_stencil))
+ if (!context_apply_clear_state(context, device, rt_count, fb))
{
context_release(context);
WARN("Failed to apply clear state, skipping clear.\n");
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 1b040ff..1fedc9c 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1130,6 +1130,12 @@ struct wined3d_context
GLuint dummy_arbfp_prog;
};
+struct wined3d_fb_state
+{
+ struct wined3d_surface **render_targets;
+ struct wined3d_surface *depth_stencil;
+};
+
typedef void (*APPLYSTATEFUNC)(DWORD state, struct wined3d_stateblock *stateblock, struct wined3d_context *ctx);
struct StateEntry
@@ -1223,7 +1229,7 @@ void context_alloc_occlusion_query(struct wined3d_context *context,
struct wined3d_occlusion_query *query) DECLSPEC_HIDDEN;
void context_apply_blit_state(struct wined3d_context *context, struct wined3d_device *device) DECLSPEC_HIDDEN;
BOOL context_apply_clear_state(struct wined3d_context *context, struct wined3d_device *device,
- UINT rt_count, struct wined3d_surface **rts, struct wined3d_surface *depth_stencil) DECLSPEC_HIDDEN;
+ UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN;
BOOL context_apply_draw_state(struct wined3d_context *context, struct wined3d_device *device) DECLSPEC_HIDDEN;
void context_apply_fbo_state_blit(struct wined3d_context *context, GLenum target,
struct wined3d_surface *render_target, struct wined3d_surface *depth_stencil, DWORD location) DECLSPEC_HIDDEN;
@@ -1613,12 +1619,6 @@ void wined3d_unregister_window(HWND window) DECLSPEC_HIDDEN;
/* Multithreaded flag. Removed from the public header to signal that IWineD3D::CreateDevice ignores it */
#define WINED3DCREATE_MULTITHREADED 0x00000004
-struct wined3d_fb_state
-{
- struct wined3d_surface **render_targets;
- struct wined3d_surface *depth_stencil;
-};
-
struct wined3d_device
{
LONG ref;
More information about the wine-cvs
mailing list