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

Unified Diff: gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.h

Issue 2055713003: gpu: Implement GL_INTEL_framebuffer_CMAA via shaders in the GPU Service (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Fix component & windows build. Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.h
diff --git a/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.h b/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.h
new file mode 100644
index 0000000000000000000000000000000000000000..4f5b4833dad691f2286653724d4b90940b1a1d77
--- /dev/null
+++ b/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.h
@@ -0,0 +1,102 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_APPLY_FRAMEBUFFER_ATTACHMENT_CMAA_INTEL_H_
+#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_APPLY_FRAMEBUFFER_ATTACHMENT_CMAA_INTEL_H_
+
+#include "gpu/command_buffer/service/gl_utils.h"
+#include "gpu/gpu_export.h"
+
+namespace {
+class CMAAEffect;
+}
+
+namespace gpu {
+namespace gles2 {
+class GLES2Decoder;
+class Framebuffer;
+}
+
+// This class encapsulates the resources required to implement the
+// GL_INTEL_framebuffer_CMAA extension via shaders.
+//
+// The CMAA Conservative Morphological Anti-Aliasing) algorithm is applied to
+// all color attachments of the currently bound draw framebuffer.
+//
+// Reference GL_INTEL_framebuffer_CMAA for details.
+class GPU_EXPORT ApplyFramebufferAttachmentCMAAINTELResourceManager {
+ public:
+ ApplyFramebufferAttachmentCMAAINTELResourceManager();
+ ~ApplyFramebufferAttachmentCMAAINTELResourceManager();
+
+ void Initialize(gles2::GLES2Decoder* decoder);
+ void Destroy();
+
+ // Applies the algorithm to the color attachments of the currently bound draw
+ // framebuffer.
+ void ApplyFramebufferAttachmentCMAAINTEL(gles2::GLES2Decoder* decoder,
+ gles2::Framebuffer* framebuffer);
+
+ private:
+ // Applies the CMAA algorithm to a texture.
+ void ApplyCMAAEffectTexture(GLuint source_texture, GLuint dest_texture);
+
+ void OnSize(GLint width, GLint height);
+ void ReleaseTextures();
+
+ void CopyTexture(GLint source, GLint dest, bool via_fbo);
+ GLuint CreateProgram(const char* defines,
+ const char* vs_source,
+ const char* fs_source);
+ GLuint CreateShader(GLenum type, const char* defines, const char* source);
+
+ bool initialized_;
+ bool textures_initialized_;
+ bool is_in_gamma_correct_mode_;
+ bool supports_usampler_;
+ bool supports_r8_image_;
+ bool supports_r8_read_format_;
+ bool is_gles31_compatible_;
+
+ int frame_id_;
+
+ GLint width_;
+ GLint height_;
+
+ GLuint copy_to_framebuffer_shader_;
+ GLuint copy_to_image_shader_;
+ GLuint edges0_shader_;
+ GLuint edges1_shader_;
+ GLuint edges_combine_shader_;
+ GLuint process_and_apply_shader_;
+ GLuint debug_display_edges_shader_;
+
+ GLuint cmaa_framebuffer_;
+ GLuint copy_framebuffer_;
+
+ GLuint rgba8_texture_;
+ GLuint working_color_texture_;
+ GLuint edges0_texture_;
+ GLuint edges1_texture_;
+ GLuint mini4_edge_texture_;
+ GLuint mini4_edge_depth_texture_;
+
+ GLuint edges1_shader_result_texture_float4_slot1_;
+ GLuint edges1_shader_result_texture_;
+ GLuint edges_combine_shader_result_texture_float4_slot1_;
+ GLuint process_and_apply_shader_result_texture_float4_slot1_;
+ GLuint edges_combine_shader_result_texture_slot2_;
+ GLuint copy_to_image_shader_outTexture_;
+
+ static const char vert_str_[];
+ static const char cmaa_frag_s1_[];
+ static const char cmaa_frag_s2_[];
+ static const char copy_frag_str_[];
+
+ DISALLOW_COPY_AND_ASSIGN(ApplyFramebufferAttachmentCMAAINTELResourceManager);
+};
+
+} // namespace gpu
+
+#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_APPLY_FRAMEBUFFER_ATTACHMENT_CMAA_INTEL_H_

Powered by Google App Engine
This is Rietveld 408576698