blob: ee26f199056b352bb11216488ef7056e044ef0db [file] [log] [blame]
Jamie Madillafc21c02014-06-04 15:29:47 -04001#include "precompiled.h"
2//
3// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style license that can be
5// found in the LICENSE file.
6//
7
8// FramebufferAttachment.cpp: the gl::FramebufferAttachment class and its derived classes
9// objects and related functionality. [OpenGL ES 2.0.24] section 4.4.3 page 108.
10
11#include "libGLESv2/FramebufferAttachment.h"
12#include "libGLESv2/renderer/RenderTarget.h"
13
14#include "libGLESv2/Texture.h"
15#include "libGLESv2/renderer/Renderer.h"
16#include "libGLESv2/renderer/TextureStorage.h"
17#include "common/utilities.h"
18#include "libGLESv2/formatutils.h"
19#include "libGLESv2/Renderbuffer.h"
20
21namespace gl
22{
23
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040024FramebufferAttachmentImpl::FramebufferAttachmentImpl()
Jamie Madillafc21c02014-06-04 15:29:47 -040025{
26}
27
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040028// The default case for classes inherited from FramebufferAttachmentImpl is not to
Jamie Madillafc21c02014-06-04 15:29:47 -040029// need to do anything upon the reference count to the parent FramebufferAttachment incrementing
30// or decrementing.
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040031void FramebufferAttachmentImpl::addProxyRef(const FramebufferAttachment *proxy)
Jamie Madillafc21c02014-06-04 15:29:47 -040032{
33}
34
Jamie Madill6c7b4ad2014-06-16 10:33:59 -040035void FramebufferAttachmentImpl::releaseProxy(const FramebufferAttachment *proxy)
Jamie Madillafc21c02014-06-04 15:29:47 -040036{
37}
38
39///// Texture2DAttachment Implementation ////////
40
41Texture2DAttachment::Texture2DAttachment(Texture2D *texture, GLint level) : mLevel(level)
42{
43 mTexture2D.set(texture);
44}
45
46Texture2DAttachment::~Texture2DAttachment()
47{
48 mTexture2D.set(NULL);
49}
50
51// Textures need to maintain their own reference count for references via
52// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
53void Texture2DAttachment::addProxyRef(const FramebufferAttachment *proxy)
54{
55 mTexture2D->addProxyRef(proxy);
56}
57
58void Texture2DAttachment::releaseProxy(const FramebufferAttachment *proxy)
59{
60 mTexture2D->releaseProxy(proxy);
61}
62
63rx::RenderTarget *Texture2DAttachment::getRenderTarget()
64{
65 return mTexture2D->getRenderTarget(mLevel);
66}
67
68rx::RenderTarget *Texture2DAttachment::getDepthStencil()
69{
70 return mTexture2D->getDepthSencil(mLevel);
71}
72
73rx::TextureStorage *Texture2DAttachment::getTextureStorage()
74{
75 return mTexture2D->getNativeTexture()->getStorageInstance();
76}
77
78GLsizei Texture2DAttachment::getWidth() const
79{
80 return mTexture2D->getWidth(mLevel);
81}
82
83GLsizei Texture2DAttachment::getHeight() const
84{
85 return mTexture2D->getHeight(mLevel);
86}
87
88GLenum Texture2DAttachment::getInternalFormat() const
89{
90 return mTexture2D->getInternalFormat(mLevel);
91}
92
93GLenum Texture2DAttachment::getActualFormat() const
94{
95 return mTexture2D->getActualFormat(mLevel);
96}
97
98GLsizei Texture2DAttachment::getSamples() const
99{
100 return 0;
101}
102
103unsigned int Texture2DAttachment::getSerial() const
104{
105 return mTexture2D->getRenderTargetSerial(mLevel);
106}
107
Jamie Madill218b6ed2014-06-16 10:34:01 -0400108GLuint Texture2DAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400109{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400110 return mTexture2D->id();
111}
112
113GLenum Texture2DAttachment::type() const
114{
115 return GL_TEXTURE_2D;
Jamie Madillafc21c02014-06-04 15:29:47 -0400116}
117
Jamie Madill9c074a32014-06-16 10:34:02 -0400118GLint Texture2DAttachment::mipLevel() const
119{
120 return mLevel;
121}
122
123GLint Texture2DAttachment::layer() const
124{
125 return 0;
126}
127
Jamie Madillafc21c02014-06-04 15:29:47 -0400128unsigned int Texture2DAttachment::getTextureSerial() const
129{
130 return mTexture2D->getTextureSerial();
131}
132
133///// TextureCubeMapAttachment Implementation ////////
134
135TextureCubeMapAttachment::TextureCubeMapAttachment(TextureCubeMap *texture, GLenum faceTarget, GLint level)
136 : mFaceTarget(faceTarget), mLevel(level)
137{
138 mTextureCubeMap.set(texture);
139}
140
141TextureCubeMapAttachment::~TextureCubeMapAttachment()
142{
143 mTextureCubeMap.set(NULL);
144}
145
146// Textures need to maintain their own reference count for references via
147// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
148void TextureCubeMapAttachment::addProxyRef(const FramebufferAttachment *proxy)
149{
150 mTextureCubeMap->addProxyRef(proxy);
151}
152
153void TextureCubeMapAttachment::releaseProxy(const FramebufferAttachment *proxy)
154{
155 mTextureCubeMap->releaseProxy(proxy);
156}
157
158rx::RenderTarget *TextureCubeMapAttachment::getRenderTarget()
159{
160 return mTextureCubeMap->getRenderTarget(mFaceTarget, mLevel);
161}
162
163rx::RenderTarget *TextureCubeMapAttachment::getDepthStencil()
164{
165 return mTextureCubeMap->getDepthStencil(mFaceTarget, mLevel);
166}
167
168rx::TextureStorage *TextureCubeMapAttachment::getTextureStorage()
169{
170 return mTextureCubeMap->getNativeTexture()->getStorageInstance();
171}
172
173GLsizei TextureCubeMapAttachment::getWidth() const
174{
175 return mTextureCubeMap->getWidth(mFaceTarget, mLevel);
176}
177
178GLsizei TextureCubeMapAttachment::getHeight() const
179{
180 return mTextureCubeMap->getHeight(mFaceTarget, mLevel);
181}
182
183GLenum TextureCubeMapAttachment::getInternalFormat() const
184{
185 return mTextureCubeMap->getInternalFormat(mFaceTarget, mLevel);
186}
187
188GLenum TextureCubeMapAttachment::getActualFormat() const
189{
190 return mTextureCubeMap->getActualFormat(mFaceTarget, mLevel);
191}
192
193GLsizei TextureCubeMapAttachment::getSamples() const
194{
195 return 0;
196}
197
198unsigned int TextureCubeMapAttachment::getSerial() const
199{
200 return mTextureCubeMap->getRenderTargetSerial(mFaceTarget, mLevel);
201}
202
Jamie Madill218b6ed2014-06-16 10:34:01 -0400203GLuint TextureCubeMapAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400204{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400205 return mTextureCubeMap->id();
206}
207
208GLenum TextureCubeMapAttachment::type() const
209{
210 return mFaceTarget;
Jamie Madillafc21c02014-06-04 15:29:47 -0400211}
212
Jamie Madill9c074a32014-06-16 10:34:02 -0400213GLint TextureCubeMapAttachment::mipLevel() const
214{
215 return mLevel;
216}
217
218GLint TextureCubeMapAttachment::layer() const
219{
220 return 0;
221}
222
Jamie Madillafc21c02014-06-04 15:29:47 -0400223unsigned int TextureCubeMapAttachment::getTextureSerial() const
224{
225 return mTextureCubeMap->getTextureSerial();
226}
227
228///// Texture3DAttachment Implementation ////////
229
230Texture3DAttachment::Texture3DAttachment(Texture3D *texture, GLint level, GLint layer)
231 : mLevel(level), mLayer(layer)
232{
233 mTexture3D.set(texture);
234}
235
236Texture3DAttachment::~Texture3DAttachment()
237{
238 mTexture3D.set(NULL);
239}
240
241// Textures need to maintain their own reference count for references via
242// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
243void Texture3DAttachment::addProxyRef(const FramebufferAttachment *proxy)
244{
245 mTexture3D->addProxyRef(proxy);
246}
247
248void Texture3DAttachment::releaseProxy(const FramebufferAttachment *proxy)
249{
250 mTexture3D->releaseProxy(proxy);
251}
252
253rx::RenderTarget *Texture3DAttachment::getRenderTarget()
254{
255 return mTexture3D->getRenderTarget(mLevel, mLayer);
256}
257
258rx::RenderTarget *Texture3DAttachment::getDepthStencil()
259{
260 return mTexture3D->getDepthStencil(mLevel, mLayer);
261}
262
263rx::TextureStorage *Texture3DAttachment::getTextureStorage()
264{
265 return mTexture3D->getNativeTexture()->getStorageInstance();
266}
267
268GLsizei Texture3DAttachment::getWidth() const
269{
270 return mTexture3D->getWidth(mLevel);
271}
272
273GLsizei Texture3DAttachment::getHeight() const
274{
275 return mTexture3D->getHeight(mLevel);
276}
277
278GLenum Texture3DAttachment::getInternalFormat() const
279{
280 return mTexture3D->getInternalFormat(mLevel);
281}
282
283GLenum Texture3DAttachment::getActualFormat() const
284{
285 return mTexture3D->getActualFormat(mLevel);
286}
287
288GLsizei Texture3DAttachment::getSamples() const
289{
290 return 0;
291}
292
293unsigned int Texture3DAttachment::getSerial() const
294{
295 return mTexture3D->getRenderTargetSerial(mLevel, mLayer);
296}
297
Jamie Madill218b6ed2014-06-16 10:34:01 -0400298GLuint Texture3DAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400299{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400300 return mTexture3D->id();
301}
302
303GLenum Texture3DAttachment::type() const
304{
305 return GL_TEXTURE_3D;
Jamie Madillafc21c02014-06-04 15:29:47 -0400306}
307
Jamie Madill9c074a32014-06-16 10:34:02 -0400308GLint Texture3DAttachment::mipLevel() const
309{
310 return mLevel;
311}
312
313GLint Texture3DAttachment::layer() const
314{
315 return mLayer;
316}
317
Jamie Madillafc21c02014-06-04 15:29:47 -0400318unsigned int Texture3DAttachment::getTextureSerial() const
319{
320 return mTexture3D->getTextureSerial();
321}
322
323////// Texture2DArrayAttachment Implementation //////
324
325Texture2DArrayAttachment::Texture2DArrayAttachment(Texture2DArray *texture, GLint level, GLint layer)
326 : mLevel(level), mLayer(layer)
327{
328 mTexture2DArray.set(texture);
329}
330
331Texture2DArrayAttachment::~Texture2DArrayAttachment()
332{
333 mTexture2DArray.set(NULL);
334}
335
336void Texture2DArrayAttachment::addProxyRef(const FramebufferAttachment *proxy)
337{
338 mTexture2DArray->addProxyRef(proxy);
339}
340
341void Texture2DArrayAttachment::releaseProxy(const FramebufferAttachment *proxy)
342{
343 mTexture2DArray->releaseProxy(proxy);
344}
345
346rx::RenderTarget *Texture2DArrayAttachment::getRenderTarget()
347{
348 return mTexture2DArray->getRenderTarget(mLevel, mLayer);
349}
350
351rx::RenderTarget *Texture2DArrayAttachment::getDepthStencil()
352{
353 return mTexture2DArray->getDepthStencil(mLevel, mLayer);
354}
355
356rx::TextureStorage *Texture2DArrayAttachment::getTextureStorage()
357{
358 return mTexture2DArray->getNativeTexture()->getStorageInstance();
359}
360
361GLsizei Texture2DArrayAttachment::getWidth() const
362{
363 return mTexture2DArray->getWidth(mLevel);
364}
365
366GLsizei Texture2DArrayAttachment::getHeight() const
367{
368 return mTexture2DArray->getHeight(mLevel);
369}
370
371GLenum Texture2DArrayAttachment::getInternalFormat() const
372{
373 return mTexture2DArray->getInternalFormat(mLevel);
374}
375
376GLenum Texture2DArrayAttachment::getActualFormat() const
377{
378 return mTexture2DArray->getActualFormat(mLevel);
379}
380
381GLsizei Texture2DArrayAttachment::getSamples() const
382{
383 return 0;
384}
385
386unsigned int Texture2DArrayAttachment::getSerial() const
387{
388 return mTexture2DArray->getRenderTargetSerial(mLevel, mLayer);
389}
390
Jamie Madill218b6ed2014-06-16 10:34:01 -0400391GLuint Texture2DArrayAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400392{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400393 return mTexture2DArray->id();
394}
395
396GLenum Texture2DArrayAttachment::type() const
397{
398 return GL_TEXTURE_2D_ARRAY;
Jamie Madillafc21c02014-06-04 15:29:47 -0400399}
400
Jamie Madill9c074a32014-06-16 10:34:02 -0400401GLint Texture2DArrayAttachment::mipLevel() const
402{
403 return mLevel;
404}
405
406GLint Texture2DArrayAttachment::layer() const
407{
408 return mLayer;
409}
410
Jamie Madillafc21c02014-06-04 15:29:47 -0400411unsigned int Texture2DArrayAttachment::getTextureSerial() const
412{
413 return mTexture2DArray->getTextureSerial();
414}
415
416////// FramebufferAttachment Implementation //////
417
Jamie Madill1e3fa742014-06-16 10:34:00 -0400418FramebufferAttachment::FramebufferAttachment(GLuint id, FramebufferAttachmentImpl *instance)
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400419 : RefCountObject(id),
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400420 mImpl(instance)
Jamie Madillafc21c02014-06-04 15:29:47 -0400421{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400422 ASSERT(mImpl != NULL);
Jamie Madillafc21c02014-06-04 15:29:47 -0400423}
424
425FramebufferAttachment::~FramebufferAttachment()
426{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400427 SafeDelete(mImpl);
Jamie Madillafc21c02014-06-04 15:29:47 -0400428}
429
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400430// The FramebufferAttachmentImpl contained in this FramebufferAttachment may need to maintain
Jamie Madillafc21c02014-06-04 15:29:47 -0400431// its own reference count, so we pass it on here.
432void FramebufferAttachment::addRef() const
433{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400434 mImpl->addProxyRef(this);
Jamie Madillafc21c02014-06-04 15:29:47 -0400435
436 RefCountObject::addRef();
437}
438
439void FramebufferAttachment::release() const
440{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400441 mImpl->releaseProxy(this);
Jamie Madillafc21c02014-06-04 15:29:47 -0400442
443 RefCountObject::release();
444}
445
446rx::RenderTarget *FramebufferAttachment::getRenderTarget()
447{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400448 return mImpl->getRenderTarget();
Jamie Madillafc21c02014-06-04 15:29:47 -0400449}
450
451rx::RenderTarget *FramebufferAttachment::getDepthStencil()
452{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400453 return mImpl->getDepthStencil();
Jamie Madillafc21c02014-06-04 15:29:47 -0400454}
455
456rx::TextureStorage *FramebufferAttachment::getTextureStorage()
457{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400458 return mImpl->getTextureStorage();
Jamie Madillafc21c02014-06-04 15:29:47 -0400459}
460
461GLsizei FramebufferAttachment::getWidth() const
462{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400463 return mImpl->getWidth();
Jamie Madillafc21c02014-06-04 15:29:47 -0400464}
465
466GLsizei FramebufferAttachment::getHeight() const
467{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400468 return mImpl->getHeight();
Jamie Madillafc21c02014-06-04 15:29:47 -0400469}
470
471GLenum FramebufferAttachment::getInternalFormat() const
472{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400473 return mImpl->getInternalFormat();
Jamie Madillafc21c02014-06-04 15:29:47 -0400474}
475
476GLenum FramebufferAttachment::getActualFormat() const
477{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400478 return mImpl->getActualFormat();
Jamie Madillafc21c02014-06-04 15:29:47 -0400479}
480
Jamie Madill1e3fa742014-06-16 10:34:00 -0400481GLuint FramebufferAttachment::getRedSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400482{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400483 if (gl::GetRedBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400484 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400485 return gl::GetRedBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400486 }
487 else
488 {
489 return 0;
490 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400491}
492
Jamie Madill1e3fa742014-06-16 10:34:00 -0400493GLuint FramebufferAttachment::getGreenSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400494{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400495 if (gl::GetGreenBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400496 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400497 return gl::GetGreenBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400498 }
499 else
500 {
501 return 0;
502 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400503}
504
Jamie Madill1e3fa742014-06-16 10:34:00 -0400505GLuint FramebufferAttachment::getBlueSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400506{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400507 if (gl::GetBlueBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400508 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400509 return gl::GetBlueBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400510 }
511 else
512 {
513 return 0;
514 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400515}
516
Jamie Madill1e3fa742014-06-16 10:34:00 -0400517GLuint FramebufferAttachment::getAlphaSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400518{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400519 if (gl::GetAlphaBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400520 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400521 return gl::GetAlphaBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400522 }
523 else
524 {
525 return 0;
526 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400527}
528
Jamie Madill1e3fa742014-06-16 10:34:00 -0400529GLuint FramebufferAttachment::getDepthSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400530{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400531 if (gl::GetDepthBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400532 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400533 return gl::GetDepthBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400534 }
535 else
536 {
537 return 0;
538 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400539}
540
Jamie Madill1e3fa742014-06-16 10:34:00 -0400541GLuint FramebufferAttachment::getStencilSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400542{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400543 if (gl::GetStencilBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400544 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400545 return gl::GetStencilBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400546 }
547 else
548 {
549 return 0;
550 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400551}
552
Jamie Madill1e3fa742014-06-16 10:34:00 -0400553GLenum FramebufferAttachment::getComponentType(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400554{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400555 return gl::GetComponentType(getActualFormat(), clientVersion);
Jamie Madillafc21c02014-06-04 15:29:47 -0400556}
557
Jamie Madill1e3fa742014-06-16 10:34:00 -0400558GLenum FramebufferAttachment::getColorEncoding(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400559{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400560 return gl::GetColorEncoding(getActualFormat(), clientVersion);
Jamie Madillafc21c02014-06-04 15:29:47 -0400561}
562
Jamie Madill218b6ed2014-06-16 10:34:01 -0400563bool FramebufferAttachment::isTexture() const
564{
565 return (type() != GL_RENDERBUFFER);
566}
567
Jamie Madillafc21c02014-06-04 15:29:47 -0400568GLsizei FramebufferAttachment::getSamples() const
569{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400570 return mImpl->getSamples();
Jamie Madillafc21c02014-06-04 15:29:47 -0400571}
572
573unsigned int FramebufferAttachment::getSerial() const
574{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400575 return mImpl->getSerial();
Jamie Madillafc21c02014-06-04 15:29:47 -0400576}
577
Jamie Madill218b6ed2014-06-16 10:34:01 -0400578GLuint FramebufferAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400579{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400580 return mImpl->id();
581}
582
583GLuint FramebufferAttachment::type() const
584{
585 return mImpl->type();
Jamie Madillafc21c02014-06-04 15:29:47 -0400586}
587
Jamie Madill9c074a32014-06-16 10:34:02 -0400588GLint FramebufferAttachment::mipLevel() const
589{
590 return mImpl->mipLevel();
591}
592
593GLint FramebufferAttachment::layer() const
594{
595 return mImpl->layer();
596}
597
Jamie Madillafc21c02014-06-04 15:29:47 -0400598unsigned int FramebufferAttachment::getTextureSerial() const
599{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400600 return mImpl->getTextureSerial();
Jamie Madillafc21c02014-06-04 15:29:47 -0400601}
602
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400603void FramebufferAttachment::setImplementation(FramebufferAttachmentImpl *newImpl)
Jamie Madillafc21c02014-06-04 15:29:47 -0400604{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400605 ASSERT(newImpl != NULL);
Jamie Madillafc21c02014-06-04 15:29:47 -0400606
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400607 delete mImpl;
608 mImpl = newImpl;
609}
610
611RenderbufferAttachment::RenderbufferAttachment(Renderbuffer *renderbuffer)
612{
613 ASSERT(renderbuffer);
614 mRenderbuffer.set(renderbuffer);
615}
616
617RenderbufferAttachment::~RenderbufferAttachment()
618{
619 mRenderbuffer.set(NULL);
620}
621
622rx::RenderTarget *RenderbufferAttachment::getRenderTarget()
623{
624 return mRenderbuffer->getStorage()->getRenderTarget();
625}
626
627rx::RenderTarget *RenderbufferAttachment::getDepthStencil()
628{
629 return mRenderbuffer->getStorage()->getDepthStencil();
630}
631
632rx::TextureStorage *RenderbufferAttachment::getTextureStorage()
633{
634 UNREACHABLE();
635 return NULL;
636}
637
638GLsizei RenderbufferAttachment::getWidth() const
639{
640 return mRenderbuffer->getWidth();
641}
642
643GLsizei RenderbufferAttachment::getHeight() const
644{
645 return mRenderbuffer->getHeight();
646}
647
648GLenum RenderbufferAttachment::getInternalFormat() const
649{
650 return mRenderbuffer->getInternalFormat();
651}
652
653GLenum RenderbufferAttachment::getActualFormat() const
654{
655 return mRenderbuffer->getActualFormat();
656}
657
658GLsizei RenderbufferAttachment::getSamples() const
659{
660 return mRenderbuffer->getStorage()->getSamples();
661}
662
663unsigned int RenderbufferAttachment::getSerial() const
664{
665 return mRenderbuffer->getStorage()->getSerial();
666}
667
Jamie Madill218b6ed2014-06-16 10:34:01 -0400668GLuint RenderbufferAttachment::id() const
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400669{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400670 return mRenderbuffer->id();
671}
672
673GLenum RenderbufferAttachment::type() const
674{
675 return GL_RENDERBUFFER;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400676}
677
Jamie Madill9c074a32014-06-16 10:34:02 -0400678GLint RenderbufferAttachment::mipLevel() const
679{
680 return 0;
681}
682
683GLint RenderbufferAttachment::layer() const
684{
685 return 0;
686}
687
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400688unsigned int RenderbufferAttachment::getTextureSerial() const
689{
690 UNREACHABLE();
691 return 0;
Jamie Madillafc21c02014-06-04 15:29:47 -0400692}
693
694}