wined3d: Get resource info from the texture in surface_prepare_rb().

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
oldstable
Henri Verbeet 2016-03-19 10:35:48 +01:00 committed by Alexandre Julliard
parent 576a74d166
commit 119c17e173
1 changed files with 8 additions and 6 deletions

View File

@ -2146,6 +2146,9 @@ void surface_load_fb_texture(struct wined3d_surface *surface, BOOL srgb, struct
static void surface_prepare_rb(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL multisample)
{
struct wined3d_texture *texture = surface->container;
const struct wined3d_format *format = texture->resource.format;
if (multisample)
{
DWORD samples;
@ -2162,16 +2165,15 @@ static void surface_prepare_rb(struct wined3d_surface *surface, const struct win
/* We advertise as many WINED3D_MULTISAMPLE_NON_MASKABLE quality levels
* as the count of advertised multisample types for the surface format. */
if (surface->resource.multisample_type == WINED3D_MULTISAMPLE_NON_MASKABLE)
if (texture->resource.multisample_type == WINED3D_MULTISAMPLE_NON_MASKABLE)
{
const struct wined3d_format *format = surface->resource.format;
unsigned int i, count = 0;
for (i = 0; i < sizeof(format->multisample_types) * 8; ++i)
{
if (format->multisample_types & 1u << i)
{
if (surface->resource.multisample_quality == count++)
if (texture->resource.multisample_quality == count++)
break;
}
}
@ -2179,13 +2181,13 @@ static void surface_prepare_rb(struct wined3d_surface *surface, const struct win
}
else
{
samples = surface->resource.multisample_type;
samples = texture->resource.multisample_type;
}
gl_info->fbo_ops.glGenRenderbuffers(1, &surface->rb_multisample);
gl_info->fbo_ops.glBindRenderbuffer(GL_RENDERBUFFER, surface->rb_multisample);
gl_info->fbo_ops.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples,
surface->resource.format->glInternal, surface->pow2Width, surface->pow2Height);
format->glInternal, surface->pow2Width, surface->pow2Height);
checkGLcall("glRenderbufferStorageMultisample()");
TRACE("Created multisample rb %u.\n", surface->rb_multisample);
}
@ -2196,7 +2198,7 @@ static void surface_prepare_rb(struct wined3d_surface *surface, const struct win
gl_info->fbo_ops.glGenRenderbuffers(1, &surface->rb_resolved);
gl_info->fbo_ops.glBindRenderbuffer(GL_RENDERBUFFER, surface->rb_resolved);
gl_info->fbo_ops.glRenderbufferStorage(GL_RENDERBUFFER, surface->resource.format->glInternal,
gl_info->fbo_ops.glRenderbufferStorage(GL_RENDERBUFFER, format->glInternal,
surface->pow2Width, surface->pow2Height);
checkGLcall("glRenderbufferStorage()");
TRACE("Created resolved rb %u.\n", surface->rb_resolved);