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

Side by Side Diff: content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc

Issue 793693003: Tile Compression (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h" 5 #include "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/numerics/safe_math.h" 8 #include "base/numerics/safe_math.h"
9 #include "ui/gl/gl_bindings.h" 9 #include "ui/gl/gl_bindings.h"
10 10
(...skipping 17 matching lines...) Expand all
28 28
29 GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() { 29 GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() {
30 } 30 }
31 31
32 // static 32 // static
33 scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImplSharedMemory::Create( 33 scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImplSharedMemory::Create(
34 gfx::GpuMemoryBufferId id, 34 gfx::GpuMemoryBufferId id,
35 const gfx::Size& size, 35 const gfx::Size& size,
36 Format format) { 36 Format format) {
37 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); 37 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
38 if (!shared_memory->CreateAnonymous(size.GetArea() * BytesPerPixel(format))) 38 if (!shared_memory->CreateAnonymous(size.GetArea() * BitsPerPixel(format) /
39 8))
39 return scoped_ptr<GpuMemoryBufferImpl>(); 40 return scoped_ptr<GpuMemoryBufferImpl>();
40 41
41 return make_scoped_ptr(new GpuMemoryBufferImplSharedMemory( 42 return make_scoped_ptr(new GpuMemoryBufferImplSharedMemory(
42 id, size, format, base::Bind(&Noop), shared_memory.Pass())); 43 id, size, format, base::Bind(&Noop), shared_memory.Pass()));
43 } 44 }
44 45
45 // static 46 // static
46 gfx::GpuMemoryBufferHandle 47 gfx::GpuMemoryBufferHandle
47 GpuMemoryBufferImplSharedMemory::AllocateForChildProcess( 48 GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
48 gfx::GpuMemoryBufferId id, 49 gfx::GpuMemoryBufferId id,
49 const gfx::Size& size, 50 const gfx::Size& size,
50 Format format, 51 Format format,
51 base::ProcessHandle child_process) { 52 base::ProcessHandle child_process) {
52 base::CheckedNumeric<int> buffer_size = size.width(); 53 base::CheckedNumeric<int> buffer_size = size.width();
53 buffer_size *= size.height(); 54 buffer_size *= size.height() * BitsPerPixel(format) / 8;
54 buffer_size *= BytesPerPixel(format);
55 if (!buffer_size.IsValid()) 55 if (!buffer_size.IsValid())
56 return gfx::GpuMemoryBufferHandle(); 56 return gfx::GpuMemoryBufferHandle();
57 57
58 base::SharedMemory shared_memory; 58 base::SharedMemory shared_memory;
59 if (!shared_memory.CreateAnonymous(buffer_size.ValueOrDie())) 59 if (!shared_memory.CreateAnonymous(buffer_size.ValueOrDie()))
60 return gfx::GpuMemoryBufferHandle(); 60 return gfx::GpuMemoryBufferHandle();
61 61
62 gfx::GpuMemoryBufferHandle handle; 62 gfx::GpuMemoryBufferHandle handle;
63 handle.type = gfx::SHARED_MEMORY_BUFFER; 63 handle.type = gfx::SHARED_MEMORY_BUFFER;
64 handle.id = id; 64 handle.id = id;
(...skipping 18 matching lines...) Expand all
83 format, 83 format,
84 callback, 84 callback,
85 make_scoped_ptr(new base::SharedMemory(handle.handle, false)))); 85 make_scoped_ptr(new base::SharedMemory(handle.handle, false))));
86 } 86 }
87 87
88 // static 88 // static
89 bool GpuMemoryBufferImplSharedMemory::IsFormatSupported(Format format) { 89 bool GpuMemoryBufferImplSharedMemory::IsFormatSupported(Format format) {
90 switch (format) { 90 switch (format) {
91 case RGBA_8888: 91 case RGBA_8888:
92 case BGRA_8888: 92 case BGRA_8888:
93 case ATC:
94 case ATCIA:
95 case DXT1:
96 case DXT5:
97 case ETC1:
93 return true; 98 return true;
94 case RGBX_8888: 99 case RGBX_8888:
95 return false; 100 return false;
96 } 101 }
97 102
98 NOTREACHED(); 103 NOTREACHED();
99 return false; 104 return false;
100 } 105 }
101 106
102 void* GpuMemoryBufferImplSharedMemory::Map() { 107 void* GpuMemoryBufferImplSharedMemory::Map() {
103 DCHECK(!mapped_); 108 DCHECK(!mapped_);
104 if (!shared_memory_->Map(size_.GetArea() * BytesPerPixel(format_))) 109 if (!shared_memory_->Map(size_.GetArea() * BitsPerPixel(format_) / 8))
105 return NULL; 110 return NULL;
106 mapped_ = true; 111 mapped_ = true;
107 return shared_memory_->memory(); 112 return shared_memory_->memory();
108 } 113 }
109 114
110 void GpuMemoryBufferImplSharedMemory::Unmap() { 115 void GpuMemoryBufferImplSharedMemory::Unmap() {
111 DCHECK(mapped_); 116 DCHECK(mapped_);
112 shared_memory_->Unmap(); 117 shared_memory_->Unmap();
113 mapped_ = false; 118 mapped_ = false;
114 } 119 }
115 120
116 uint32 GpuMemoryBufferImplSharedMemory::GetStride() const { 121 uint32 GpuMemoryBufferImplSharedMemory::GetStride() const {
117 return size_.width() * BytesPerPixel(format_); 122 return size_.width() * BitsPerPixel(format_) / 8;
118 } 123 }
119 124
120 gfx::GpuMemoryBufferHandle GpuMemoryBufferImplSharedMemory::GetHandle() const { 125 gfx::GpuMemoryBufferHandle GpuMemoryBufferImplSharedMemory::GetHandle() const {
121 gfx::GpuMemoryBufferHandle handle; 126 gfx::GpuMemoryBufferHandle handle;
122 handle.type = gfx::SHARED_MEMORY_BUFFER; 127 handle.type = gfx::SHARED_MEMORY_BUFFER;
123 handle.id = id_; 128 handle.id = id_;
124 handle.handle = shared_memory_->handle(); 129 handle.handle = shared_memory_->handle();
125 return handle; 130 return handle;
126 } 131 }
127 132
128 } // namespace content 133 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698