blob: dbb26255a4832152869666e613c5f31e7976f1cb [file] [log] [blame]
[email protected]94f206c12012-08-25 00:09:141// Copyright 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]e12dd0e2013-03-18 08:24:405#include "cc/resources/scoped_resource.h"
[email protected]94f206c12012-08-25 00:09:146
avi02a4d172015-12-21 06:14:367#include <stddef.h>
8
[email protected]7f0d825f2013-03-18 07:24:309#include "cc/output/renderer.h"
[email protected]3be2171d2012-12-06 06:13:2010#include "cc/test/fake_output_surface.h"
[email protected]0634cdd42013-08-16 00:46:0911#include "cc/test/fake_output_surface_client.h"
danakj61bf05f2015-05-26 23:28:5612#include "cc/test/fake_resource_provider.h"
[email protected]4e2eb352014-03-20 17:25:4513#include "cc/test/test_shared_bitmap_manager.h"
[email protected]7f0c53db2012-10-02 00:23:1814#include "testing/gtest/include/gtest/gtest.h"
[email protected]94f206c12012-08-25 00:09:1415
[email protected]ba565742012-11-10 09:29:4816namespace cc {
[email protected]94f206c12012-08-25 00:09:1417namespace {
18
[email protected]3847fa32013-03-22 16:19:1219TEST(ScopedResourceTest, NewScopedResource) {
[email protected]0634cdd42013-08-16 00:46:0920 FakeOutputSurfaceClient output_surface_client;
danakj6021ec32016-07-22 22:16:0821 std::unique_ptr<OutputSurface> output_surface(
22 FakeOutputSurface::CreateDelegating3d());
[email protected]0634cdd42013-08-16 00:46:0923 CHECK(output_surface->BindToClient(&output_surface_client));
24
danakj60bc3bc2016-04-09 00:24:4825 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager(
[email protected]4e2eb352014-03-20 17:25:4526 new TestSharedBitmapManager());
danakj60bc3bc2016-04-09 00:24:4827 std::unique_ptr<ResourceProvider> resource_provider =
28 FakeResourceProvider::Create(output_surface.get(),
29 shared_bitmap_manager.get());
30 std::unique_ptr<ScopedResource> texture =
[email protected]e51444a2013-12-10 23:05:0131 ScopedResource::Create(resource_provider.get());
[email protected]94f206c12012-08-25 00:09:1432
[email protected]3847fa32013-03-22 16:19:1233 // New scoped textures do not hold a texture yet.
34 EXPECT_EQ(0u, texture->id());
[email protected]94f206c12012-08-25 00:09:1435
[email protected]3847fa32013-03-22 16:19:1236 // New scoped textures do not have a size yet.
37 EXPECT_EQ(gfx::Size(), texture->size());
prashant.n8e494282015-08-03 07:13:4138 EXPECT_EQ(0u, ResourceUtil::UncheckedSizeInBytes<size_t>(texture->size(),
39 texture->format()));
[email protected]94f206c12012-08-25 00:09:1440}
41
[email protected]3847fa32013-03-22 16:19:1242TEST(ScopedResourceTest, CreateScopedResource) {
[email protected]0634cdd42013-08-16 00:46:0943 FakeOutputSurfaceClient output_surface_client;
danakj6021ec32016-07-22 22:16:0844 std::unique_ptr<OutputSurface> output_surface(
45 FakeOutputSurface::CreateDelegating3d());
[email protected]0634cdd42013-08-16 00:46:0946 CHECK(output_surface->BindToClient(&output_surface_client));
47
danakj60bc3bc2016-04-09 00:24:4848 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager(
[email protected]4e2eb352014-03-20 17:25:4549 new TestSharedBitmapManager());
danakj60bc3bc2016-04-09 00:24:4850 std::unique_ptr<ResourceProvider> resource_provider =
51 FakeResourceProvider::Create(output_surface.get(),
52 shared_bitmap_manager.get());
53 std::unique_ptr<ScopedResource> texture =
[email protected]e51444a2013-12-10 23:05:0154 ScopedResource::Create(resource_provider.get());
ericrk7c030992015-02-20 01:39:3855 texture->Allocate(gfx::Size(30, 30), ResourceProvider::TEXTURE_HINT_IMMUTABLE,
56 RGBA_8888);
[email protected]94f206c12012-08-25 00:09:1457
[email protected]3847fa32013-03-22 16:19:1258 // The texture has an allocated byte-size now.
59 size_t expected_bytes = 30 * 30 * 4;
prashant.n8e494282015-08-03 07:13:4160 EXPECT_EQ(expected_bytes, ResourceUtil::UncheckedSizeInBytes<size_t>(
vmpstr93a24d42015-06-05 22:39:4661 texture->size(), texture->format()));
[email protected]94f206c12012-08-25 00:09:1462
[email protected]3847fa32013-03-22 16:19:1263 EXPECT_LT(0u, texture->id());
[email protected]27a41fe2013-09-19 05:05:1464 EXPECT_EQ(static_cast<unsigned>(RGBA_8888), texture->format());
[email protected]3847fa32013-03-22 16:19:1265 EXPECT_EQ(gfx::Size(30, 30), texture->size());
66}
67
68TEST(ScopedResourceTest, ScopedResourceIsDeleted) {
[email protected]0634cdd42013-08-16 00:46:0969 FakeOutputSurfaceClient output_surface_client;
danakj6021ec32016-07-22 22:16:0870 std::unique_ptr<OutputSurface> output_surface(
71 FakeOutputSurface::CreateDelegating3d());
[email protected]0634cdd42013-08-16 00:46:0972 CHECK(output_surface->BindToClient(&output_surface_client));
73
danakj60bc3bc2016-04-09 00:24:4874 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager(
[email protected]4e2eb352014-03-20 17:25:4575 new TestSharedBitmapManager());
danakj60bc3bc2016-04-09 00:24:4876 std::unique_ptr<ResourceProvider> resource_provider =
77 FakeResourceProvider::Create(output_surface.get(),
78 shared_bitmap_manager.get());
[email protected]3847fa32013-03-22 16:19:1279 {
danakj60bc3bc2016-04-09 00:24:4880 std::unique_ptr<ScopedResource> texture =
[email protected]e51444a2013-12-10 23:05:0181 ScopedResource::Create(resource_provider.get());
[email protected]3847fa32013-03-22 16:19:1282
83 EXPECT_EQ(0u, resource_provider->num_resources());
ericrk7c030992015-02-20 01:39:3884 texture->Allocate(gfx::Size(30, 30),
85 ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888);
[email protected]94f206c12012-08-25 00:09:1486 EXPECT_LT(0u, texture->id());
[email protected]3847fa32013-03-22 16:19:1287 EXPECT_EQ(1u, resource_provider->num_resources());
88 }
89
90 EXPECT_EQ(0u, resource_provider->num_resources());
91 {
danakj60bc3bc2016-04-09 00:24:4892 std::unique_ptr<ScopedResource> texture =
[email protected]e51444a2013-12-10 23:05:0193 ScopedResource::Create(resource_provider.get());
[email protected]3847fa32013-03-22 16:19:1294 EXPECT_EQ(0u, resource_provider->num_resources());
ericrk7c030992015-02-20 01:39:3895 texture->Allocate(gfx::Size(30, 30),
96 ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888);
[email protected]3847fa32013-03-22 16:19:1297 EXPECT_LT(0u, texture->id());
98 EXPECT_EQ(1u, resource_provider->num_resources());
99 texture->Free();
100 EXPECT_EQ(0u, resource_provider->num_resources());
101 }
[email protected]94f206c12012-08-25 00:09:14102}
103
[email protected]ba565742012-11-10 09:29:48104} // namespace
105} // namespace cc