| Index: cc/output/gl_renderer.cc
|
| diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
|
| index ac449a46f5df84bc66ffe091b6470f8c6a394cb9..f0de102767a69520ead03e778c8f3dd78020fd4f 100644
|
| --- a/cc/output/gl_renderer.cc
|
| +++ b/cc/output/gl_renderer.cc
|
| @@ -1170,12 +1170,14 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
| device_layer_edges.InflateAntiAliasingDistance();
|
| }
|
|
|
| - scoped_ptr<ResourceProvider::ScopedReadLockGL> mask_resource_lock;
|
| + scoped_ptr<ResourceProvider::ScopedSamplerGL> mask_resource_lock;
|
| unsigned mask_texture_id = 0;
|
| + SamplerType mask_sampler = SamplerTypeNA;
|
| if (quad->mask_resource_id) {
|
| - mask_resource_lock.reset(new ResourceProvider::ScopedReadLockGL(
|
| - resource_provider_, quad->mask_resource_id));
|
| + mask_resource_lock.reset(new ResourceProvider::ScopedSamplerGL(
|
| + resource_provider_, quad->mask_resource_id, GL_TEXTURE1, GL_LINEAR));
|
| mask_texture_id = mask_resource_lock->texture_id();
|
| + mask_sampler = SamplerTypeFromTextureTarget(mask_resource_lock->target());
|
| }
|
|
|
| // TODO(danakj): use the background_texture and blend the background in with
|
| @@ -1370,29 +1372,22 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
| if (shader_mask_sampler_location != -1) {
|
| DCHECK_NE(shader_mask_tex_coord_scale_location, 1);
|
| DCHECK_NE(shader_mask_tex_coord_offset_location, 1);
|
| + DCHECK_EQ(SamplerType2D, mask_sampler);
|
| GLC(gl_, gl_->Uniform1i(shader_mask_sampler_location, 1));
|
|
|
| - float mask_tex_scale_x = quad->mask_uv_rect.width() / tex_scale_x;
|
| - float mask_tex_scale_y = quad->mask_uv_rect.height() / tex_scale_y;
|
| + gfx::RectF mask_uv_rect = quad->MaskUVRect();
|
|
|
| // Mask textures are oriented vertically flipped relative to the framebuffer
|
| // and the RenderPass contents texture, so we flip the tex coords from the
|
| // RenderPass texture to find the mask texture coords.
|
| GLC(gl_,
|
| gl_->Uniform2f(shader_mask_tex_coord_offset_location,
|
| - quad->mask_uv_rect.x(),
|
| - quad->mask_uv_rect.y() + quad->mask_uv_rect.height()));
|
| + mask_uv_rect.x(),
|
| + mask_uv_rect.bottom()));
|
| GLC(gl_,
|
| gl_->Uniform2f(shader_mask_tex_coord_scale_location,
|
| - mask_tex_scale_x,
|
| - -mask_tex_scale_y));
|
| - shader_mask_sampler_lock = make_scoped_ptr(
|
| - new ResourceProvider::ScopedSamplerGL(resource_provider_,
|
| - quad->mask_resource_id,
|
| - GL_TEXTURE1,
|
| - GL_LINEAR));
|
| - DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D),
|
| - shader_mask_sampler_lock->target());
|
| + mask_uv_rect.width() / tex_scale_x,
|
| + -mask_uv_rect.height() / tex_scale_y));
|
| }
|
|
|
| if (shader_edge_location != -1) {
|
|
|