Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: cc/output/gl_renderer.h

Issue 1535833002: Delete CC. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-5
Patch Set: rebase Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/output/gl_frame_data.cc ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CC_OUTPUT_GL_RENDERER_H_
6 #define CC_OUTPUT_GL_RENDERER_H_
7
8 #include "base/cancelable_callback.h"
9 #include "cc/base/scoped_ptr_deque.h"
10 #include "cc/base/scoped_ptr_vector.h"
11 #include "cc/output/direct_renderer.h"
12 #include "cc/output/gl_renderer_draw_cache.h"
13 #include "cc/output/program_binding.h"
14 #include "cc/output/renderer.h"
15 #include "cc/quads/checkerboard_draw_quad.h"
16 #include "cc/quads/debug_border_draw_quad.h"
17 #include "cc/quads/io_surface_draw_quad.h"
18 #include "cc/quads/render_pass_draw_quad.h"
19 #include "cc/quads/solid_color_draw_quad.h"
20 #include "cc/quads/tile_draw_quad.h"
21 #include "cc/quads/yuv_video_draw_quad.h"
22 #include "ui/gfx/geometry/quad_f.h"
23
24 class SkBitmap;
25
26 namespace gpu {
27 namespace gles2 {
28 class GLES2Interface;
29 }
30 }
31
32 namespace cc {
33
34 class GLRendererShaderTest;
35 class OutputSurface;
36 class PictureDrawQuad;
37 class ScopedResource;
38 class StreamVideoDrawQuad;
39 class TextureDrawQuad;
40 class TextureMailboxDeleter;
41 class StaticGeometryBinding;
42 class DynamicGeometryBinding;
43 class ScopedEnsureFramebufferAllocation;
44
45 // Class that handles drawing of composited render layers using GL.
46 class GLRenderer : public DirectRenderer {
47 public:
48 class ScopedUseGrContext;
49
50 static scoped_ptr<GLRenderer> Create(
51 RendererClient* client,
52 const RendererSettings* settings,
53 OutputSurface* output_surface,
54 ResourceProvider* resource_provider,
55 TextureMailboxDeleter* texture_mailbox_deleter,
56 int highp_threshold_min);
57
58 ~GLRenderer() override;
59
60 const RendererCapabilitiesImpl& Capabilities() const override;
61
62 // Waits for rendering to finish.
63 void Finish() override;
64
65 void DoNoOp() override;
66 void SwapBuffers(const CompositorFrameMetadata& metadata) override;
67
68 virtual bool IsContextLost();
69
70 static void DebugGLCall(gpu::gles2::GLES2Interface* gl,
71 const char* command,
72 const char* file,
73 int line);
74
75 protected:
76 GLRenderer(RendererClient* client,
77 const RendererSettings* settings,
78 OutputSurface* output_surface,
79 ResourceProvider* resource_provider,
80 TextureMailboxDeleter* texture_mailbox_deleter,
81 int highp_threshold_min);
82
83 void DidChangeVisibility() override;
84
85 bool IsBackbufferDiscarded() const { return is_backbuffer_discarded_; }
86
87 const gfx::QuadF& SharedGeometryQuad() const { return shared_geometry_quad_; }
88 const StaticGeometryBinding* SharedGeometry() const {
89 return shared_geometry_.get();
90 }
91
92 void GetFramebufferPixelsAsync(const DrawingFrame* frame,
93 const gfx::Rect& rect,
94 scoped_ptr<CopyOutputRequest> request);
95 void GetFramebufferTexture(unsigned texture_id,
96 ResourceFormat texture_format,
97 const gfx::Rect& device_rect);
98 void ReleaseRenderPassTextures();
99 enum BoundGeometry { NO_BINDING, SHARED_BINDING, CLIPPED_BINDING };
100 void PrepareGeometry(BoundGeometry geometry_to_bind);
101 void SetStencilEnabled(bool enabled);
102 bool stencil_enabled() const { return stencil_shadow_; }
103 void SetBlendEnabled(bool enabled);
104 bool blend_enabled() const { return blend_shadow_; }
105
106 void BindFramebufferToOutputSurface(DrawingFrame* frame) override;
107 bool BindFramebufferToTexture(DrawingFrame* frame,
108 const ScopedResource* resource,
109 const gfx::Rect& target_rect) override;
110 void SetDrawViewport(const gfx::Rect& window_space_viewport) override;
111 void SetScissorTestRect(const gfx::Rect& scissor_rect) override;
112 void PrepareSurfaceForPass(DrawingFrame* frame,
113 SurfaceInitializationMode initialization_mode,
114 const gfx::Rect& render_pass_scissor) override;
115 void DoDrawQuad(DrawingFrame* frame,
116 const class DrawQuad*,
117 const gfx::QuadF* draw_region) override;
118 void BeginDrawingFrame(DrawingFrame* frame) override;
119 void FinishDrawingFrame(DrawingFrame* frame) override;
120 bool FlippedFramebuffer(const DrawingFrame* frame) const override;
121 bool FlippedRootFramebuffer() const;
122 void EnsureScissorTestEnabled() override;
123 void EnsureScissorTestDisabled() override;
124 void CopyCurrentRenderPassToBitmap(
125 DrawingFrame* frame,
126 scoped_ptr<CopyOutputRequest> request) override;
127 void FinishDrawingQuadList() override;
128
129 // Returns true if quad requires antialiasing and false otherwise.
130 static bool ShouldAntialiasQuad(const gfx::Transform& device_transform,
131 const DrawQuad* quad,
132 bool force_antialiasing);
133
134 // Inflate the quad and fill edge array for fragment shader.
135 // |local_quad| is set to inflated quad. |edge| array is filled with
136 // inflated quad's edge data.
137 static void SetupQuadForClippingAndAntialiasing(
138 const gfx::Transform& device_transform,
139 const DrawQuad* quad,
140 bool use_aa,
141 const gfx::QuadF* clip_region,
142 gfx::QuadF* local_quad,
143 float edge[24]);
144
145 private:
146 friend class GLRendererShaderPixelTest;
147 friend class GLRendererShaderTest;
148
149 static void ToGLMatrix(float* gl_matrix, const gfx::Transform& transform);
150
151 void DiscardPixels();
152 void ClearFramebuffer(DrawingFrame* frame);
153
154 void DrawCheckerboardQuad(const DrawingFrame* frame,
155 const CheckerboardDrawQuad* quad,
156 const gfx::QuadF* clip_region);
157 void DrawDebugBorderQuad(const DrawingFrame* frame,
158 const DebugBorderDrawQuad* quad);
159 static bool IsDefaultBlendMode(SkXfermode::Mode blend_mode) {
160 return blend_mode == SkXfermode::kSrcOver_Mode;
161 }
162 bool CanApplyBlendModeUsingBlendFunc(SkXfermode::Mode blend_mode);
163 void ApplyBlendModeUsingBlendFunc(SkXfermode::Mode blend_mode);
164 void RestoreBlendFuncToDefault(SkXfermode::Mode blend_mode);
165
166 gfx::Rect GetBackdropBoundingBoxForRenderPassQuad(
167 DrawingFrame* frame,
168 const RenderPassDrawQuad* quad,
169 const gfx::Transform& contents_device_transform,
170 const gfx::QuadF* clip_region,
171 bool use_aa);
172 scoped_ptr<ScopedResource> GetBackdropTexture(const gfx::Rect& bounding_rect);
173
174 void DrawRenderPassQuad(DrawingFrame* frame,
175 const RenderPassDrawQuad* quadi,
176 const gfx::QuadF* clip_region);
177 void DrawSolidColorQuad(const DrawingFrame* frame,
178 const SolidColorDrawQuad* quad,
179 const gfx::QuadF* clip_region);
180 void DrawStreamVideoQuad(const DrawingFrame* frame,
181 const StreamVideoDrawQuad* quad,
182 const gfx::QuadF* clip_region);
183 void DrawTextureQuad(const DrawingFrame* frame,
184 const TextureDrawQuad* quad,
185 const gfx::QuadF* clip_region);
186 void EnqueueTextureQuad(const DrawingFrame* frame,
187 const TextureDrawQuad* quad,
188 const gfx::QuadF* clip_region);
189 void FlushTextureQuadCache(BoundGeometry flush_binding);
190 void DrawIOSurfaceQuad(const DrawingFrame* frame,
191 const IOSurfaceDrawQuad* quad,
192 const gfx::QuadF* clip_region);
193 void DrawTileQuad(const DrawingFrame* frame,
194 const TileDrawQuad* quad,
195 const gfx::QuadF* clip_region);
196 void DrawContentQuad(const DrawingFrame* frame,
197 const ContentDrawQuadBase* quad,
198 ResourceProvider::ResourceId resource_id,
199 const gfx::QuadF* clip_region);
200 void DrawContentQuadAA(const DrawingFrame* frame,
201 const ContentDrawQuadBase* quad,
202 ResourceProvider::ResourceId resource_id,
203 const gfx::Transform& device_transform,
204 const gfx::QuadF* clip_region);
205 void DrawContentQuadNoAA(const DrawingFrame* frame,
206 const ContentDrawQuadBase* quad,
207 ResourceProvider::ResourceId resource_id,
208 const gfx::QuadF* clip_region);
209 void DrawYUVVideoQuad(const DrawingFrame* frame,
210 const YUVVideoDrawQuad* quad,
211 const gfx::QuadF* clip_region);
212 void DrawPictureQuad(const DrawingFrame* frame,
213 const PictureDrawQuad* quad,
214 const gfx::QuadF* clip_region);
215
216 void SetShaderOpacity(float opacity, int alpha_location);
217 void SetShaderQuadF(const gfx::QuadF& quad, int quad_location);
218 void DrawQuadGeometryClippedByQuadF(const DrawingFrame* frame,
219 const gfx::Transform& draw_transform,
220 const gfx::RectF& quad_rect,
221 const gfx::QuadF& clipping_region_quad,
222 int matrix_location,
223 const float uv[8]);
224 void DrawQuadGeometry(const DrawingFrame* frame,
225 const gfx::Transform& draw_transform,
226 const gfx::RectF& quad_rect,
227 int matrix_location);
228 void SetUseProgram(unsigned program);
229
230 bool UseScopedTexture(DrawingFrame* frame,
231 const ScopedResource* resource,
232 const gfx::Rect& viewport_rect);
233
234 bool MakeContextCurrent();
235
236 void InitializeSharedObjects();
237 void CleanupSharedObjects();
238
239 typedef base::Callback<void(scoped_ptr<CopyOutputRequest> copy_request,
240 bool success)>
241 AsyncGetFramebufferPixelsCleanupCallback;
242 void FinishedReadback(unsigned source_buffer,
243 unsigned query,
244 const gfx::Size& size);
245
246 void ReinitializeGLState();
247 void RestoreGLState();
248 void RestoreFramebuffer(DrawingFrame* frame);
249
250 void DiscardBackbuffer() override;
251 void EnsureBackbuffer() override;
252 void EnforceMemoryPolicy();
253
254 void ScheduleOverlays(DrawingFrame* frame);
255
256 typedef ScopedPtrVector<ResourceProvider::ScopedReadLockGL>
257 OverlayResourceLockList;
258 OverlayResourceLockList pending_overlay_resources_;
259 OverlayResourceLockList in_use_overlay_resources_;
260
261 RendererCapabilitiesImpl capabilities_;
262
263 unsigned offscreen_framebuffer_id_;
264
265 scoped_ptr<StaticGeometryBinding> shared_geometry_;
266 scoped_ptr<DynamicGeometryBinding> clipped_geometry_;
267 gfx::QuadF shared_geometry_quad_;
268
269 // This block of bindings defines all of the programs used by the compositor
270 // itself. Add any new programs here to GLRendererShaderTest.
271
272 // Tiled layer shaders.
273 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexAlpha>
274 TileProgram;
275 typedef ProgramBinding<VertexShaderTileAA, FragmentShaderRGBATexClampAlphaAA>
276 TileProgramAA;
277 typedef ProgramBinding<VertexShaderTileAA,
278 FragmentShaderRGBATexClampSwizzleAlphaAA>
279 TileProgramSwizzleAA;
280 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexOpaque>
281 TileProgramOpaque;
282 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexSwizzleAlpha>
283 TileProgramSwizzle;
284 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexSwizzleOpaque>
285 TileProgramSwizzleOpaque;
286 typedef ProgramBinding<VertexShaderPosTex, FragmentShaderCheckerboard>
287 TileCheckerboardProgram;
288
289 // Texture shaders.
290 typedef ProgramBinding<VertexShaderPosTexTransform,
291 FragmentShaderRGBATexVaryingAlpha> TextureProgram;
292 typedef ProgramBinding<VertexShaderPosTexTransform,
293 FragmentShaderRGBATexPremultiplyAlpha>
294 NonPremultipliedTextureProgram;
295 typedef ProgramBinding<VertexShaderPosTexTransform,
296 FragmentShaderTexBackgroundVaryingAlpha>
297 TextureBackgroundProgram;
298 typedef ProgramBinding<VertexShaderPosTexTransform,
299 FragmentShaderTexBackgroundPremultiplyAlpha>
300 NonPremultipliedTextureBackgroundProgram;
301
302 // Render surface shaders.
303 typedef ProgramBinding<VertexShaderPosTexTransform,
304 FragmentShaderRGBATexAlpha> RenderPassProgram;
305 typedef ProgramBinding<VertexShaderPosTexTransform,
306 FragmentShaderRGBATexAlphaMask> RenderPassMaskProgram;
307 typedef ProgramBinding<VertexShaderQuadTexTransformAA,
308 FragmentShaderRGBATexAlphaAA> RenderPassProgramAA;
309 typedef ProgramBinding<VertexShaderQuadTexTransformAA,
310 FragmentShaderRGBATexAlphaMaskAA>
311 RenderPassMaskProgramAA;
312 typedef ProgramBinding<VertexShaderPosTexTransform,
313 FragmentShaderRGBATexColorMatrixAlpha>
314 RenderPassColorMatrixProgram;
315 typedef ProgramBinding<VertexShaderQuadTexTransformAA,
316 FragmentShaderRGBATexAlphaMaskColorMatrixAA>
317 RenderPassMaskColorMatrixProgramAA;
318 typedef ProgramBinding<VertexShaderQuadTexTransformAA,
319 FragmentShaderRGBATexAlphaColorMatrixAA>
320 RenderPassColorMatrixProgramAA;
321 typedef ProgramBinding<VertexShaderPosTexTransform,
322 FragmentShaderRGBATexAlphaMaskColorMatrix>
323 RenderPassMaskColorMatrixProgram;
324
325 // Video shaders.
326 typedef ProgramBinding<VertexShaderVideoTransform, FragmentShaderRGBATex>
327 VideoStreamTextureProgram;
328 typedef ProgramBinding<VertexShaderPosTexYUVStretchOffset,
329 FragmentShaderYUVVideo> VideoYUVProgram;
330 typedef ProgramBinding<VertexShaderPosTexYUVStretchOffset,
331 FragmentShaderYUVAVideo> VideoYUVAProgram;
332
333 // Special purpose / effects shaders.
334 typedef ProgramBinding<VertexShaderPos, FragmentShaderColor>
335 DebugBorderProgram;
336 typedef ProgramBinding<VertexShaderQuad, FragmentShaderColor>
337 SolidColorProgram;
338 typedef ProgramBinding<VertexShaderQuadAA, FragmentShaderColorAA>
339 SolidColorProgramAA;
340
341 const TileProgram* GetTileProgram(
342 TexCoordPrecision precision, SamplerType sampler);
343 const TileProgramOpaque* GetTileProgramOpaque(
344 TexCoordPrecision precision, SamplerType sampler);
345 const TileProgramAA* GetTileProgramAA(
346 TexCoordPrecision precision, SamplerType sampler);
347 const TileProgramSwizzle* GetTileProgramSwizzle(
348 TexCoordPrecision precision, SamplerType sampler);
349 const TileProgramSwizzleOpaque* GetTileProgramSwizzleOpaque(
350 TexCoordPrecision precision, SamplerType sampler);
351 const TileProgramSwizzleAA* GetTileProgramSwizzleAA(
352 TexCoordPrecision precision, SamplerType sampler);
353
354 const TileCheckerboardProgram* GetTileCheckerboardProgram();
355
356 const RenderPassProgram* GetRenderPassProgram(TexCoordPrecision precision,
357 BlendMode blend_mode);
358 const RenderPassProgramAA* GetRenderPassProgramAA(TexCoordPrecision precision,
359 BlendMode blend_mode);
360 const RenderPassMaskProgram* GetRenderPassMaskProgram(
361 TexCoordPrecision precision,
362 SamplerType sampler,
363 BlendMode blend_mode,
364 bool mask_for_background);
365 const RenderPassMaskProgramAA* GetRenderPassMaskProgramAA(
366 TexCoordPrecision precision,
367 SamplerType sampler,
368 BlendMode blend_mode,
369 bool mask_for_background);
370 const RenderPassColorMatrixProgram* GetRenderPassColorMatrixProgram(
371 TexCoordPrecision precision,
372 BlendMode blend_mode);
373 const RenderPassColorMatrixProgramAA* GetRenderPassColorMatrixProgramAA(
374 TexCoordPrecision precision,
375 BlendMode blend_mode);
376 const RenderPassMaskColorMatrixProgram* GetRenderPassMaskColorMatrixProgram(
377 TexCoordPrecision precision,
378 SamplerType sampler,
379 BlendMode blend_mode,
380 bool mask_for_background);
381 const RenderPassMaskColorMatrixProgramAA*
382 GetRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision,
383 SamplerType sampler,
384 BlendMode blend_mode,
385 bool mask_for_background);
386
387 const TextureProgram* GetTextureProgram(
388 TexCoordPrecision precision);
389 const NonPremultipliedTextureProgram* GetNonPremultipliedTextureProgram(
390 TexCoordPrecision precision);
391 const TextureBackgroundProgram* GetTextureBackgroundProgram(
392 TexCoordPrecision precision);
393 const NonPremultipliedTextureBackgroundProgram*
394 GetNonPremultipliedTextureBackgroundProgram(TexCoordPrecision precision);
395 const TextureProgram* GetTextureIOSurfaceProgram(
396 TexCoordPrecision precision);
397
398 const VideoYUVProgram* GetVideoYUVProgram(
399 TexCoordPrecision precision);
400 const VideoYUVAProgram* GetVideoYUVAProgram(
401 TexCoordPrecision precision);
402 const VideoStreamTextureProgram* GetVideoStreamTextureProgram(
403 TexCoordPrecision precision);
404
405 const DebugBorderProgram* GetDebugBorderProgram();
406 const SolidColorProgram* GetSolidColorProgram();
407 const SolidColorProgramAA* GetSolidColorProgramAA();
408
409 TileProgram
410 tile_program_[LAST_TEX_COORD_PRECISION + 1][LAST_SAMPLER_TYPE + 1];
411 TileProgramOpaque
412 tile_program_opaque_[LAST_TEX_COORD_PRECISION + 1][LAST_SAMPLER_TYPE + 1];
413 TileProgramAA
414 tile_program_aa_[LAST_TEX_COORD_PRECISION + 1][LAST_SAMPLER_TYPE + 1];
415 TileProgramSwizzle tile_program_swizzle_[LAST_TEX_COORD_PRECISION +
416 1][LAST_SAMPLER_TYPE + 1];
417 TileProgramSwizzleOpaque
418 tile_program_swizzle_opaque_[LAST_TEX_COORD_PRECISION +
419 1][LAST_SAMPLER_TYPE + 1];
420 TileProgramSwizzleAA tile_program_swizzle_aa_[LAST_TEX_COORD_PRECISION +
421 1][LAST_SAMPLER_TYPE + 1];
422
423 TileCheckerboardProgram tile_checkerboard_program_;
424
425 TextureProgram texture_program_[LAST_TEX_COORD_PRECISION + 1];
426 NonPremultipliedTextureProgram
427 nonpremultiplied_texture_program_[LAST_TEX_COORD_PRECISION + 1];
428 TextureBackgroundProgram
429 texture_background_program_[LAST_TEX_COORD_PRECISION + 1];
430 NonPremultipliedTextureBackgroundProgram
431 nonpremultiplied_texture_background_program_[LAST_TEX_COORD_PRECISION +
432 1];
433 TextureProgram texture_io_surface_program_[LAST_TEX_COORD_PRECISION + 1];
434
435 RenderPassProgram
436 render_pass_program_[LAST_TEX_COORD_PRECISION + 1][LAST_BLEND_MODE + 1];
437 RenderPassProgramAA render_pass_program_aa_[LAST_TEX_COORD_PRECISION +
438 1][LAST_BLEND_MODE + 1];
439 RenderPassMaskProgram
440 render_pass_mask_program_[LAST_TEX_COORD_PRECISION + 1]
441 [LAST_SAMPLER_TYPE + 1]
442 [LAST_BLEND_MODE + 1]
443 [LAST_MASK_VALUE + 1];
444 RenderPassMaskProgramAA
445 render_pass_mask_program_aa_[LAST_TEX_COORD_PRECISION + 1]
446 [LAST_SAMPLER_TYPE + 1]
447 [LAST_BLEND_MODE + 1]
448 [LAST_MASK_VALUE + 1];
449 RenderPassColorMatrixProgram
450 render_pass_color_matrix_program_[LAST_TEX_COORD_PRECISION +
451 1][LAST_BLEND_MODE + 1];
452 RenderPassColorMatrixProgramAA
453 render_pass_color_matrix_program_aa_[LAST_TEX_COORD_PRECISION +
454 1][LAST_BLEND_MODE + 1];
455 RenderPassMaskColorMatrixProgram
456 render_pass_mask_color_matrix_program_[LAST_TEX_COORD_PRECISION + 1]
457 [LAST_SAMPLER_TYPE + 1]
458 [LAST_BLEND_MODE + 1]
459 [LAST_MASK_VALUE + 1];
460 RenderPassMaskColorMatrixProgramAA
461 render_pass_mask_color_matrix_program_aa_[LAST_TEX_COORD_PRECISION + 1]
462 [LAST_SAMPLER_TYPE + 1]
463 [LAST_BLEND_MODE + 1]
464 [LAST_MASK_VALUE + 1];
465
466 VideoYUVProgram video_yuv_program_[LAST_TEX_COORD_PRECISION + 1];
467 VideoYUVAProgram video_yuva_program_[LAST_TEX_COORD_PRECISION + 1];
468 VideoStreamTextureProgram
469 video_stream_texture_program_[LAST_TEX_COORD_PRECISION + 1];
470
471 DebugBorderProgram debug_border_program_;
472 SolidColorProgram solid_color_program_;
473 SolidColorProgramAA solid_color_program_aa_;
474
475 gpu::gles2::GLES2Interface* gl_;
476 gpu::ContextSupport* context_support_;
477
478 TextureMailboxDeleter* texture_mailbox_deleter_;
479
480 gfx::Rect swap_buffer_rect_;
481 gfx::Rect scissor_rect_;
482 gfx::Rect viewport_;
483 bool is_backbuffer_discarded_;
484 bool is_using_bind_uniform_;
485 bool is_scissor_enabled_;
486 bool scissor_rect_needs_reset_;
487 bool stencil_shadow_;
488 bool blend_shadow_;
489 unsigned program_shadow_;
490 TexturedQuadDrawCache draw_cache_;
491 int highp_threshold_min_;
492 int highp_threshold_cache_;
493
494 struct PendingAsyncReadPixels;
495 ScopedPtrVector<PendingAsyncReadPixels> pending_async_read_pixels_;
496
497 scoped_ptr<ResourceProvider::ScopedWriteLockGL> current_framebuffer_lock_;
498
499 class SyncQuery;
500 ScopedPtrDeque<SyncQuery> pending_sync_queries_;
501 ScopedPtrDeque<SyncQuery> available_sync_queries_;
502 scoped_ptr<SyncQuery> current_sync_query_;
503 bool use_sync_query_;
504 bool use_blend_equation_advanced_;
505 bool use_blend_equation_advanced_coherent_;
506
507 SkBitmap on_demand_tile_raster_bitmap_;
508 ResourceProvider::ResourceId on_demand_tile_raster_resource_id_;
509 BoundGeometry bound_geometry_;
510 DISALLOW_COPY_AND_ASSIGN(GLRenderer);
511 };
512
513 // Setting DEBUG_GL_CALLS to 1 will call glGetError() after almost every GL
514 // call made by the compositor. Useful for debugging rendering issues but
515 // will significantly degrade performance.
516 #define DEBUG_GL_CALLS 0
517
518 #if DEBUG_GL_CALLS && !defined(NDEBUG)
519 #define GLC(context, x) \
520 (x, GLRenderer::DebugGLCall(&* context, #x, __FILE__, __LINE__))
521 #else
522 #define GLC(context, x) (x)
523 #endif
524
525 } // namespace cc
526
527 #endif // CC_OUTPUT_GL_RENDERER_H_
OLDNEW
« no previous file with comments | « cc/output/gl_frame_data.cc ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698