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

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

Issue 2460973002: gpu, cmaa: reuse CopyTextureCHROMIUMResourceManager (Closed)
Patch Set: revert unrelated change Created 4 years, 1 month 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.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc b/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc
index 1c87d6c2b462d0ee09d996d1eb48cc8af6b2db50..a8d5e4354b29a22f14c719c7f4176c9c64e9f366 100644
--- a/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc
+++ b/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc
@@ -6,6 +6,7 @@
#include "base/logging.h"
#include "gpu/command_buffer/service/framebuffer_manager.h"
+#include "gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_gl_api_implementation.h"
@@ -28,14 +29,12 @@ ApplyFramebufferAttachmentCMAAINTELResourceManager::
frame_id_(0),
width_(0),
height_(0),
- copy_to_framebuffer_shader_(0),
edges0_shader_(0),
edges1_shader_(0),
edges_combine_shader_(0),
process_and_apply_shader_(0),
debug_display_edges_shader_(0),
cmaa_framebuffer_(0),
- copy_framebuffer_(0),
rgba8_texture_(0),
working_color_texture_(0),
edges0_texture_(0),
@@ -59,9 +58,6 @@ void ApplyFramebufferAttachmentCMAAINTELResourceManager::Initialize(
is_gles31_compatible_ =
decoder->GetGLContext()->GetVersionInfo()->IsAtLeastGLES(3, 1);
- copy_to_framebuffer_shader_ =
- CreateProgram("", vert_str_, copy_frag_str_);
-
// Check if RGBA8UI is supported as an FBO colour target with depth.
// If not supported, GLSL needs to convert the data to/from float so there is
// a small extra cost.
@@ -197,7 +193,6 @@ void ApplyFramebufferAttachmentCMAAINTELResourceManager::Destroy() {
ReleaseTextures();
- glDeleteProgram(copy_to_framebuffer_shader_);
glDeleteProgram(process_and_apply_shader_);
glDeleteProgram(edges_combine_shader_);
glDeleteProgram(edges1_shader_);
@@ -211,8 +206,10 @@ void ApplyFramebufferAttachmentCMAAINTELResourceManager::Destroy() {
// color attachments of currently bound draw framebuffer.
// Reference GL_INTEL_framebuffer_CMAA for details.
void ApplyFramebufferAttachmentCMAAINTELResourceManager::
- ApplyFramebufferAttachmentCMAAINTEL(gles2::GLES2Decoder* decoder,
- gles2::Framebuffer* framebuffer) {
+ ApplyFramebufferAttachmentCMAAINTEL(
+ gles2::GLES2Decoder* decoder,
+ gles2::Framebuffer* framebuffer,
+ gles2::CopyTextureCHROMIUMResourceManager* copier) {
DCHECK(decoder);
DCHECK(initialized_);
if (!framebuffer)
@@ -249,7 +246,11 @@ void ApplyFramebufferAttachmentCMAAINTELResourceManager::
// CMAA Effect
if (do_copy) {
ApplyCMAAEffectTexture(source_texture, rgba8_texture_, do_copy);
- CopyTexture(rgba8_texture_, source_texture);
+
+ copier->DoCopySubTexture(
+ decoder, GL_TEXTURE_2D, rgba8_texture_, GL_RGBA8, GL_TEXTURE_2D,
+ source_texture, internal_format, 0, 0, 0, 0, width_, height_,
+ width_, height_, width_, height_, false, false, false);
} else {
ApplyCMAAEffectTexture(source_texture, source_texture, do_copy);
}
@@ -473,13 +474,9 @@ void ApplyFramebufferAttachmentCMAAINTELResourceManager::OnSize(GLint width,
height_ = height;
width_ = width;
- glGenFramebuffersEXT(1, &copy_framebuffer_);
glGenTextures(1, &rgba8_texture_);
glBindTexture(GL_TEXTURE_2D, rgba8_texture_);
glTexStorage2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8, width, height);
- glBindFramebufferEXT(GL_FRAMEBUFFER, copy_framebuffer_);
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
- rgba8_texture_, 0);
// Edges texture - R8
// OpenGLES has no single component 8/16-bit image support, so needs to be R32
@@ -537,7 +534,6 @@ void ApplyFramebufferAttachmentCMAAINTELResourceManager::OnSize(GLint width,
void ApplyFramebufferAttachmentCMAAINTELResourceManager::ReleaseTextures() {
if (textures_initialized_) {
- glDeleteFramebuffersEXT(1, &copy_framebuffer_);
glDeleteFramebuffersEXT(1, &cmaa_framebuffer_);
glDeleteTextures(1, &rgba8_texture_);
glDeleteTextures(1, &edges0_texture_);
@@ -549,27 +545,6 @@ void ApplyFramebufferAttachmentCMAAINTELResourceManager::ReleaseTextures() {
textures_initialized_ = false;
}
-// TODO(dshwang): reuse CopyTextureCHROMIUMResourceManager. crbug.com/535198
-void ApplyFramebufferAttachmentCMAAINTELResourceManager::CopyTexture(
- GLint source,
- GLint dest) {
- glBindFramebufferEXT(GL_FRAMEBUFFER, copy_framebuffer_);
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, dest, 0);
- glViewport(0, 0, width_, height_);
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, source);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-
- glUseProgram(copy_to_framebuffer_shader_);
-
- glDrawArrays(GL_TRIANGLES, 0, 3);
- glUseProgram(0);
- glBindTexture(GL_TEXTURE_2D, 0);
-}
-
GLuint ApplyFramebufferAttachmentCMAAINTELResourceManager::CreateProgram(
const char* defines,
const char* vs_source,
@@ -1869,20 +1844,6 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
\n#endif\n
}
);
-
-const char
- ApplyFramebufferAttachmentCMAAINTELResourceManager::copy_frag_str_[] =
- SHADER(
- precision highp float;
- layout(binding = 0) uniform highp sampler2D inTexture;
- layout(location = 0) out vec4 outColor;
-
- void main() {
- ivec2 screenPosI = ivec2( gl_FragCoord.xy );
- vec4 pixel = texelFetch(inTexture, screenPosI, 0);
- outColor = pixel;
- }
- );
/* clang-format on */
} // namespace gles2

Powered by Google App Engine
This is Rietveld 408576698