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

Side by Side Diff: ui/gl/gl_image_ozone_native_pixmap_unittest.cc

Issue 1576353007: gl, ozone: add new GLImageBindTest unittests and make ozone run it. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 | « no previous file | ui/gl/test/gl_image_test_support.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/gfx/buffer_types.h" 8 #include "ui/gfx/buffer_types.h"
9 #include "ui/gl/gl_image_ozone_native_pixmap.h" 9 #include "ui/gl/gl_image_ozone_native_pixmap.h"
10 #include "ui/gl/test/gl_image_test_template.h" 10 #include "ui/gl/test/gl_image_test_template.h"
11 #include "ui/ozone/public/client_native_pixmap_factory.h"
11 #include "ui/ozone/public/ozone_platform.h" 12 #include "ui/ozone/public/ozone_platform.h"
12 #include "ui/ozone/public/surface_factory_ozone.h" 13 #include "ui/ozone/public/surface_factory_ozone.h"
13 14
14 namespace gl { 15 namespace gl {
15 namespace { 16 namespace {
16 17
17 template <gfx::BufferUsage usage> 18 template <gfx::BufferUsage usage>
18 class GLImageOzoneNativePixmapTestDelegate { 19 class GLImageOzoneNativePixmapTestDelegate {
19 public: 20 public:
20 scoped_refptr<gl::GLImage> CreateSolidColorImage( 21 scoped_refptr<gl::GLImage> CreateSolidColorImage(
21 const gfx::Size& size, 22 const gfx::Size& size,
22 gfx::BufferFormat format, 23 gfx::BufferFormat format,
23 const uint8_t color[4]) const { 24 const uint8_t color[4]) const {
24 DCHECK_EQ(NumberOfPlanesForBufferFormat(format), 1u); 25 DCHECK_EQ(NumberOfPlanesForBufferFormat(format), 1u);
25 ui::SurfaceFactoryOzone* surface_factory = 26 ui::SurfaceFactoryOzone* surface_factory =
26 ui::OzonePlatform::GetInstance()->GetSurfaceFactoryOzone(); 27 ui::OzonePlatform::GetInstance()->GetSurfaceFactoryOzone();
27 scoped_refptr<ui::NativePixmap> pixmap = 28 scoped_refptr<ui::NativePixmap> pixmap =
28 surface_factory->CreateNativePixmap(gfx::kNullAcceleratedWidget, size, 29 surface_factory->CreateNativePixmap(gfx::kNullAcceleratedWidget, size,
29 format, usage); 30 format, usage);
30 EXPECT_TRUE(pixmap != nullptr); 31 EXPECT_TRUE(pixmap != nullptr);
31 EXPECT_EQ(format, pixmap->GetBufferFormat()); 32 EXPECT_EQ(format, pixmap->GetBufferFormat());
32 33
34 if (usage == gfx::BufferUsage::GPU_READ_CPU_READ_WRITE ||
35 usage == gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT) {
36 gfx::NativePixmapHandle handle = pixmap->ExportHandle();
37 scoped_ptr<ui::ClientNativePixmap> native_pixmap =
38 ui::ClientNativePixmapFactory::GetInstance()->ImportFromHandle(
39 handle, size, usage);
40 EXPECT_TRUE(native_pixmap != nullptr);
41
42 GLImageTestSupport::SetBufferDataToColor(
43 size.width(), size.height(), handle.stride, 0, format, color,
44 reinterpret_cast<uint8_t*>(native_pixmap->Map()));
45 native_pixmap->Unmap();
46 } else {
47 // Cannot paint |color| on GPU_READ and SCANOUT buffer, but GLImageTest
48 // doesn't check actual color, so it's fine so far.
49 }
50
33 scoped_refptr<gfx::GLImageOzoneNativePixmap> image( 51 scoped_refptr<gfx::GLImageOzoneNativePixmap> image(
34 new gfx::GLImageOzoneNativePixmap( 52 new gfx::GLImageOzoneNativePixmap(
35 size, gl::GLImage::GetTextureFormatFrom(format))); 53 size, gl::GLImage::GetTextureFormatFrom(format)));
36 EXPECT_TRUE(image->Initialize(pixmap.get(), format)); 54 EXPECT_TRUE(image->Initialize(pixmap.get(), format));
37 return image; 55 return image;
38 } 56 }
39 57
40 static bool IsSupported(gfx::BufferFormat format) { 58 static bool IsSupported(gfx::BufferFormat format) {
41 switch (format) { 59 return ui::ClientNativePixmapFactory::GetInstance()
42 case gfx::BufferFormat::RGBA_8888: 60 ->IsConfigurationSupported(format, usage);
43 return true;
44 default:
45 return false;
46 }
47 } 61 }
48 }; 62 };
49 63
50 using GLImageTestTypesForGLImageTest = testing::Types< 64 using GLImageTestTypesForGLImageTest = testing::Types<
51 GLImageOzoneNativePixmapTestDelegate<gfx::BufferUsage::GPU_READ>, 65 GLImageOzoneNativePixmapTestDelegate<gfx::BufferUsage::GPU_READ>,
52 GLImageOzoneNativePixmapTestDelegate<gfx::BufferUsage::SCANOUT>, 66 GLImageOzoneNativePixmapTestDelegate<gfx::BufferUsage::SCANOUT>,
53 GLImageOzoneNativePixmapTestDelegate< 67 GLImageOzoneNativePixmapTestDelegate<
54 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE>, 68 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE>,
55 GLImageOzoneNativePixmapTestDelegate< 69 GLImageOzoneNativePixmapTestDelegate<
56 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT>>; 70 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT>>;
57 71
58 INSTANTIATE_TYPED_TEST_CASE_P(GLImageOzoneNativePixmap, 72 INSTANTIATE_TYPED_TEST_CASE_P(GLImageOzoneNativePixmap,
59 GLImageTest, 73 GLImageTest,
60 GLImageTestTypesForGLImageTest); 74 GLImageTestTypesForGLImageTest);
61 75
76 using GLImageTestTypesForGLImageBindTest =
77 testing::Types<GLImageOzoneNativePixmapTestDelegate<
78 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE>,
79 GLImageOzoneNativePixmapTestDelegate<
80 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT>>;
81
82 INSTANTIATE_TYPED_TEST_CASE_P(GLImageOzoneNativePixmap,
83 GLImageBindTest,
84 GLImageTestTypesForGLImageBindTest);
85
62 } // namespace 86 } // namespace
63 } // namespace gl 87 } // namespace gl
OLDNEW
« no previous file with comments | « no previous file | ui/gl/test/gl_image_test_support.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698