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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Issue 1407133017: Cleanup some dead code in blink::ImageBuffer and friends (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010, Google Inc. All rights reserved. 2 * Copyright (c) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 m_context->bindFramebuffer(target, m_multisampleFBO ? m_multisampleFBO : m_fbo); 869 m_context->bindFramebuffer(target, m_multisampleFBO ? m_multisampleFBO : m_fbo);
870 else 870 else
871 m_context->bindFramebuffer(target, m_fbo); 871 m_context->bindFramebuffer(target, m_fbo);
872 } 872 }
873 873
874 void DrawingBuffer::setPackAlignment(GLint param) 874 void DrawingBuffer::setPackAlignment(GLint param)
875 { 875 {
876 m_packAlignment = param; 876 m_packAlignment = param;
877 } 877 }
878 878
879 void DrawingBuffer::paintRenderingResultsToCanvas(ImageBuffer* imageBuffer)
880 {
881 paintFramebufferToCanvas(framebuffer(), size().width(), size().height(), !m_ actualAttributes.premultipliedAlpha, imageBuffer);
882 }
883
884 bool DrawingBuffer::paintRenderingResultsToImageData(int& width, int& height, So urceDrawingBuffer sourceBuffer, WTF::ArrayBufferContents& contents) 879 bool DrawingBuffer::paintRenderingResultsToImageData(int& width, int& height, So urceDrawingBuffer sourceBuffer, WTF::ArrayBufferContents& contents)
885 { 880 {
886 ASSERT(!m_actualAttributes.premultipliedAlpha); 881 ASSERT(!m_actualAttributes.premultipliedAlpha);
887 width = size().width(); 882 width = size().width();
888 height = size().height(); 883 height = size().height();
889 884
890 Checked<int, RecordOverflow> dataSize = 4; 885 Checked<int, RecordOverflow> dataSize = 4;
891 dataSize *= width; 886 dataSize *= width;
892 dataSize *= height; 887 dataSize *= height;
893 if (dataSize.hasOverflowed()) 888 if (dataSize.hasOverflowed())
(...skipping 17 matching lines...) Expand all
911 m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL _TEXTURE_2D, 0, 0); 906 m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL _TEXTURE_2D, 0, 0);
912 m_context->deleteFramebuffer(fbo); 907 m_context->deleteFramebuffer(fbo);
913 } 908 }
914 909
915 restoreFramebufferBindings(); 910 restoreFramebufferBindings();
916 911
917 pixels.transfer(contents); 912 pixels.transfer(contents);
918 return true; 913 return true;
919 } 914 }
920 915
921 void DrawingBuffer::paintFramebufferToCanvas(int framebuffer, int width, int hei ght, bool premultiplyAlpha, ImageBuffer* imageBuffer)
922 {
923 unsigned char* pixels = 0;
924
925 const SkBitmap& canvasBitmap = imageBuffer->deprecatedBitmapForOverwrite();
926 const SkBitmap* readbackBitmap = 0;
927 ASSERT(canvasBitmap.colorType() == kN32_SkColorType);
928 if (canvasBitmap.width() == width && canvasBitmap.height() == height) {
929 // This is the fastest and most common case. We read back
930 // directly into the canvas's backing store.
931 readbackBitmap = &canvasBitmap;
932 m_resizingBitmap.reset();
933 } else {
934 // We need to allocate a temporary bitmap for reading back the
935 // pixel data. We will then use Skia to rescale this bitmap to
936 // the size of the canvas's backing store.
937 if (m_resizingBitmap.width() != width || m_resizingBitmap.height() != he ight) {
938 if (!m_resizingBitmap.tryAllocN32Pixels(width, height))
939 return;
940 }
941 readbackBitmap = &m_resizingBitmap;
942 }
943
944 // Read back the frame buffer.
945 SkAutoLockPixels bitmapLock(*readbackBitmap);
946 pixels = static_cast<unsigned char*>(readbackBitmap->getPixels());
947
948 m_context->bindFramebuffer(GL_FRAMEBUFFER, framebuffer);
949 readBackFramebuffer(pixels, width, height, ReadbackSkia, premultiplyAlpha ? WebGLImageConversion::AlphaDoPremultiply : WebGLImageConversion::AlphaDoNothing) ;
950 flipVertically(pixels, width, height);
951
952 readbackBitmap->notifyPixelsChanged();
953 if (m_resizingBitmap.readyToDraw()) {
954 // We need to draw the resizing bitmap into the canvas's backing store.
955 SkCanvas canvas(canvasBitmap);
956 canvas.drawBitmapRect(m_resizingBitmap, SkRect::MakeIWH(canvasBitmap.wid th(), canvasBitmap.height()), nullptr);
957 }
958 }
959
960 void DrawingBuffer::readBackFramebuffer(unsigned char* pixels, int width, int he ight, ReadbackOrder readbackOrder, WebGLImageConversion::AlphaOp op) 916 void DrawingBuffer::readBackFramebuffer(unsigned char* pixels, int width, int he ight, ReadbackOrder readbackOrder, WebGLImageConversion::AlphaOp op)
961 { 917 {
962 if (m_packAlignment > 4) 918 if (m_packAlignment > 4)
963 m_context->pixelStorei(GL_PACK_ALIGNMENT, 1); 919 m_context->pixelStorei(GL_PACK_ALIGNMENT, 1);
964 m_context->readPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels ); 920 m_context->readPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels );
965 if (m_packAlignment > 4) 921 if (m_packAlignment > 4)
966 m_context->pixelStorei(GL_PACK_ALIGNMENT, m_packAlignment); 922 m_context->pixelStorei(GL_PACK_ALIGNMENT, m_packAlignment);
967 923
968 size_t bufferSize = 4 * width * height; 924 size_t bufferSize = 4 * width * height;
969 925
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 void DrawingBuffer::deleteChromiumImageForTexture(TextureInfo* info) 983 void DrawingBuffer::deleteChromiumImageForTexture(TextureInfo* info)
1028 { 984 {
1029 if (info->imageId) { 985 if (info->imageId) {
1030 m_context->releaseTexImage2DCHROMIUM(GL_TEXTURE_2D, info->imageId); 986 m_context->releaseTexImage2DCHROMIUM(GL_TEXTURE_2D, info->imageId);
1031 m_context->destroyImageCHROMIUM(info->imageId); 987 m_context->destroyImageCHROMIUM(info->imageId);
1032 info->imageId = 0; 988 info->imageId = 0;
1033 } 989 }
1034 } 990 }
1035 991
1036 } // namespace blink 992 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698