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

Side by Side Diff: gpu/ipc/client/gpu_memory_buffer_impl_test_template.h

Issue 1859703002: convert //gpu to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: undo part of clang-format Created 4 years, 8 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
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 // This file defines tests that implementations of GpuMemoryBufferFactory should 5 // This file defines tests that implementations of GpuMemoryBufferFactory should
6 // pass in order to be conformant. 6 // pass in order to be conformant.
7 7
8 #ifndef GPU_IPC_CLIENT_GPU_MEMORY_BUFFER_IMPL_TEST_TEMPLATE_H_ 8 #ifndef GPU_IPC_CLIENT_GPU_MEMORY_BUFFER_IMPL_TEST_TEMPLATE_H_
9 #define GPU_IPC_CLIENT_GPU_MEMORY_BUFFER_IMPL_TEST_TEMPLATE_H_ 9 #define GPU_IPC_CLIENT_GPU_MEMORY_BUFFER_IMPL_TEST_TEMPLATE_H_
10 10
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT}; 54 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT};
55 for (auto usage : usages) { 55 for (auto usage : usages) {
56 if (!TypeParam::IsConfigurationSupported(format, usage)) 56 if (!TypeParam::IsConfigurationSupported(format, usage))
57 continue; 57 continue;
58 58
59 bool destroyed = false; 59 bool destroyed = false;
60 gfx::GpuMemoryBufferHandle handle; 60 gfx::GpuMemoryBufferHandle handle;
61 GpuMemoryBufferImpl::DestructionCallback destroy_callback = 61 GpuMemoryBufferImpl::DestructionCallback destroy_callback =
62 TestFixture::AllocateGpuMemoryBuffer(kBufferSize, format, usage, 62 TestFixture::AllocateGpuMemoryBuffer(kBufferSize, format, usage,
63 &handle, &destroyed); 63 &handle, &destroyed);
64 scoped_ptr<TypeParam> buffer(TypeParam::CreateFromHandle( 64 std::unique_ptr<TypeParam> buffer(TypeParam::CreateFromHandle(
65 handle, kBufferSize, format, usage, destroy_callback)); 65 handle, kBufferSize, format, usage, destroy_callback));
66 ASSERT_TRUE(buffer); 66 ASSERT_TRUE(buffer);
67 EXPECT_EQ(buffer->GetFormat(), format); 67 EXPECT_EQ(buffer->GetFormat(), format);
68 68
69 // Check if destruction callback is executed when deleting the buffer. 69 // Check if destruction callback is executed when deleting the buffer.
70 buffer.reset(); 70 buffer.reset();
71 ASSERT_TRUE(destroyed); 71 ASSERT_TRUE(destroyed);
72 } 72 }
73 } 73 }
74 } 74 }
75 75
76 TYPED_TEST_P(GpuMemoryBufferImplTest, Map) { 76 TYPED_TEST_P(GpuMemoryBufferImplTest, Map) {
77 // Use a multiple of 4 for both dimensions to support compressed formats. 77 // Use a multiple of 4 for both dimensions to support compressed formats.
78 const gfx::Size kBufferSize(4, 4); 78 const gfx::Size kBufferSize(4, 4);
79 79
80 for (auto format : gfx::GetBufferFormatsForTesting()) { 80 for (auto format : gfx::GetBufferFormatsForTesting()) {
81 if (!TypeParam::IsConfigurationSupported( 81 if (!TypeParam::IsConfigurationSupported(
82 format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE)) { 82 format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE)) {
83 continue; 83 continue;
84 } 84 }
85 85
86 gfx::GpuMemoryBufferHandle handle; 86 gfx::GpuMemoryBufferHandle handle;
87 GpuMemoryBufferImpl::DestructionCallback destroy_callback = 87 GpuMemoryBufferImpl::DestructionCallback destroy_callback =
88 TestFixture::AllocateGpuMemoryBuffer( 88 TestFixture::AllocateGpuMemoryBuffer(
89 kBufferSize, format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, 89 kBufferSize, format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
90 &handle, nullptr); 90 &handle, nullptr);
91 scoped_ptr<TypeParam> buffer(TypeParam::CreateFromHandle( 91 std::unique_ptr<TypeParam> buffer(TypeParam::CreateFromHandle(
92 handle, kBufferSize, format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, 92 handle, kBufferSize, format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
93 destroy_callback)); 93 destroy_callback));
94 ASSERT_TRUE(buffer); 94 ASSERT_TRUE(buffer);
95 95
96 const size_t num_planes = gfx::NumberOfPlanesForBufferFormat(format); 96 const size_t num_planes = gfx::NumberOfPlanesForBufferFormat(format);
97 97
98 // Map buffer into user space. 98 // Map buffer into user space.
99 ASSERT_TRUE(buffer->Map()); 99 ASSERT_TRUE(buffer->Map());
100 100
101 // Copy and compare mapped buffers. 101 // Copy and compare mapped buffers.
102 for (size_t plane = 0; plane < num_planes; ++plane) { 102 for (size_t plane = 0; plane < num_planes; ++plane) {
103 const size_t row_size_in_bytes = 103 const size_t row_size_in_bytes =
104 gfx::RowSizeForBufferFormat(kBufferSize.width(), format, plane); 104 gfx::RowSizeForBufferFormat(kBufferSize.width(), format, plane);
105 EXPECT_GT(row_size_in_bytes, 0u); 105 EXPECT_GT(row_size_in_bytes, 0u);
106 106
107 scoped_ptr<char[]> data(new char[row_size_in_bytes]); 107 std::unique_ptr<char[]> data(new char[row_size_in_bytes]);
108 memset(data.get(), 0x2a + plane, row_size_in_bytes); 108 memset(data.get(), 0x2a + plane, row_size_in_bytes);
109 109
110 size_t height = kBufferSize.height() / 110 size_t height = kBufferSize.height() /
111 gfx::SubsamplingFactorForBufferFormat(format, plane); 111 gfx::SubsamplingFactorForBufferFormat(format, plane);
112 for (size_t y = 0; y < height; ++y) { 112 for (size_t y = 0; y < height; ++y) {
113 memcpy(static_cast<char*>(buffer->memory(plane)) + 113 memcpy(static_cast<char*>(buffer->memory(plane)) +
114 y * buffer->stride(plane), 114 y * buffer->stride(plane),
115 data.get(), row_size_in_bytes); 115 data.get(), row_size_in_bytes);
116 EXPECT_EQ(0, memcmp(static_cast<char*>(buffer->memory(plane)) + 116 EXPECT_EQ(0, memcmp(static_cast<char*>(buffer->memory(plane)) +
117 y * buffer->stride(plane), 117 y * buffer->stride(plane),
(...skipping 14 matching lines...) Expand all
132 format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT)) { 132 format, gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT)) {
133 continue; 133 continue;
134 } 134 }
135 135
136 gfx::GpuMemoryBufferHandle handle; 136 gfx::GpuMemoryBufferHandle handle;
137 GpuMemoryBufferImpl::DestructionCallback destroy_callback = 137 GpuMemoryBufferImpl::DestructionCallback destroy_callback =
138 TestFixture::AllocateGpuMemoryBuffer( 138 TestFixture::AllocateGpuMemoryBuffer(
139 kBufferSize, format, 139 kBufferSize, format,
140 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT, &handle, 140 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT, &handle,
141 nullptr); 141 nullptr);
142 scoped_ptr<TypeParam> buffer(TypeParam::CreateFromHandle( 142 std::unique_ptr<TypeParam> buffer(TypeParam::CreateFromHandle(
143 handle, kBufferSize, format, 143 handle, kBufferSize, format,
144 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT, 144 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT,
145 destroy_callback)); 145 destroy_callback));
146 ASSERT_TRUE(buffer); 146 ASSERT_TRUE(buffer);
147 147
148 // Map buffer into user space. 148 // Map buffer into user space.
149 ASSERT_TRUE(buffer->Map()); 149 ASSERT_TRUE(buffer->Map());
150 150
151 // Copy and compare mapped buffers. 151 // Copy and compare mapped buffers.
152 size_t num_planes = gfx::NumberOfPlanesForBufferFormat(format); 152 size_t num_planes = gfx::NumberOfPlanesForBufferFormat(format);
153 for (size_t plane = 0; plane < num_planes; ++plane) { 153 for (size_t plane = 0; plane < num_planes; ++plane) {
154 const size_t row_size_in_bytes = 154 const size_t row_size_in_bytes =
155 gfx::RowSizeForBufferFormat(kBufferSize.width(), format, plane); 155 gfx::RowSizeForBufferFormat(kBufferSize.width(), format, plane);
156 EXPECT_GT(row_size_in_bytes, 0u); 156 EXPECT_GT(row_size_in_bytes, 0u);
157 157
158 scoped_ptr<char[]> data(new char[row_size_in_bytes]); 158 std::unique_ptr<char[]> data(new char[row_size_in_bytes]);
159 memset(data.get(), 0x2a + plane, row_size_in_bytes); 159 memset(data.get(), 0x2a + plane, row_size_in_bytes);
160 160
161 size_t height = kBufferSize.height() / 161 size_t height = kBufferSize.height() /
162 gfx::SubsamplingFactorForBufferFormat(format, plane); 162 gfx::SubsamplingFactorForBufferFormat(format, plane);
163 for (size_t y = 0; y < height; ++y) { 163 for (size_t y = 0; y < height; ++y) {
164 memcpy(static_cast<char*>(buffer->memory(plane)) + 164 memcpy(static_cast<char*>(buffer->memory(plane)) +
165 y * buffer->stride(plane), 165 y * buffer->stride(plane),
166 data.get(), row_size_in_bytes); 166 data.get(), row_size_in_bytes);
167 EXPECT_EQ(0, memcmp(static_cast<char*>(buffer->memory(plane)) + 167 EXPECT_EQ(0, memcmp(static_cast<char*>(buffer->memory(plane)) +
168 y * buffer->stride(plane), 168 y * buffer->stride(plane),
169 data.get(), row_size_in_bytes)); 169 data.get(), row_size_in_bytes));
170 } 170 }
171 } 171 }
172 172
173 buffer->Unmap(); 173 buffer->Unmap();
174 174
175 // Remap the buffer, and compare again. It should contain the same data. 175 // Remap the buffer, and compare again. It should contain the same data.
176 ASSERT_TRUE(buffer->Map()); 176 ASSERT_TRUE(buffer->Map());
177 177
178 for (size_t plane = 0; plane < num_planes; ++plane) { 178 for (size_t plane = 0; plane < num_planes; ++plane) {
179 const size_t row_size_in_bytes = 179 const size_t row_size_in_bytes =
180 gfx::RowSizeForBufferFormat(kBufferSize.width(), format, plane); 180 gfx::RowSizeForBufferFormat(kBufferSize.width(), format, plane);
181 181
182 scoped_ptr<char[]> data(new char[row_size_in_bytes]); 182 std::unique_ptr<char[]> data(new char[row_size_in_bytes]);
183 memset(data.get(), 0x2a + plane, row_size_in_bytes); 183 memset(data.get(), 0x2a + plane, row_size_in_bytes);
184 184
185 size_t height = kBufferSize.height() / 185 size_t height = kBufferSize.height() /
186 gfx::SubsamplingFactorForBufferFormat(format, plane); 186 gfx::SubsamplingFactorForBufferFormat(format, plane);
187 for (size_t y = 0; y < height; ++y) { 187 for (size_t y = 0; y < height; ++y) {
188 EXPECT_EQ(0, memcmp(static_cast<char*>(buffer->memory(plane)) + 188 EXPECT_EQ(0, memcmp(static_cast<char*>(buffer->memory(plane)) +
189 y * buffer->stride(plane), 189 y * buffer->stride(plane),
190 data.get(), row_size_in_bytes)); 190 data.get(), row_size_in_bytes));
191 } 191 }
192 } 192 }
193 193
194 buffer->Unmap(); 194 buffer->Unmap();
195 } 195 }
196 } 196 }
197 197
198 // The GpuMemoryBufferImplTest test case verifies behavior that is expected 198 // The GpuMemoryBufferImplTest test case verifies behavior that is expected
199 // from a GpuMemoryBuffer implementation in order to be conformant. 199 // from a GpuMemoryBuffer implementation in order to be conformant.
200 REGISTER_TYPED_TEST_CASE_P(GpuMemoryBufferImplTest, 200 REGISTER_TYPED_TEST_CASE_P(GpuMemoryBufferImplTest,
201 CreateFromHandle, 201 CreateFromHandle,
202 Map, 202 Map,
203 PersistentMap); 203 PersistentMap);
204 204
205 } // namespace gpu 205 } // namespace gpu
206 206
207 #endif // GPU_IPC_CLIENT_GPU_MEMORY_BUFFER_IMPL_TEST_TEMPLATE_H_ 207 #endif // GPU_IPC_CLIENT_GPU_MEMORY_BUFFER_IMPL_TEST_TEMPLATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698