blob: 072177f52b0697719e664150c6c7e59d99339b64 [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
118unsigned int Texture2DAttachment::getTextureSerial() const
119{
120 return mTexture2D->getTextureSerial();
121}
122
123///// TextureCubeMapAttachment Implementation ////////
124
125TextureCubeMapAttachment::TextureCubeMapAttachment(TextureCubeMap *texture, GLenum faceTarget, GLint level)
126 : mFaceTarget(faceTarget), mLevel(level)
127{
128 mTextureCubeMap.set(texture);
129}
130
131TextureCubeMapAttachment::~TextureCubeMapAttachment()
132{
133 mTextureCubeMap.set(NULL);
134}
135
136// Textures need to maintain their own reference count for references via
137// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
138void TextureCubeMapAttachment::addProxyRef(const FramebufferAttachment *proxy)
139{
140 mTextureCubeMap->addProxyRef(proxy);
141}
142
143void TextureCubeMapAttachment::releaseProxy(const FramebufferAttachment *proxy)
144{
145 mTextureCubeMap->releaseProxy(proxy);
146}
147
148rx::RenderTarget *TextureCubeMapAttachment::getRenderTarget()
149{
150 return mTextureCubeMap->getRenderTarget(mFaceTarget, mLevel);
151}
152
153rx::RenderTarget *TextureCubeMapAttachment::getDepthStencil()
154{
155 return mTextureCubeMap->getDepthStencil(mFaceTarget, mLevel);
156}
157
158rx::TextureStorage *TextureCubeMapAttachment::getTextureStorage()
159{
160 return mTextureCubeMap->getNativeTexture()->getStorageInstance();
161}
162
163GLsizei TextureCubeMapAttachment::getWidth() const
164{
165 return mTextureCubeMap->getWidth(mFaceTarget, mLevel);
166}
167
168GLsizei TextureCubeMapAttachment::getHeight() const
169{
170 return mTextureCubeMap->getHeight(mFaceTarget, mLevel);
171}
172
173GLenum TextureCubeMapAttachment::getInternalFormat() const
174{
175 return mTextureCubeMap->getInternalFormat(mFaceTarget, mLevel);
176}
177
178GLenum TextureCubeMapAttachment::getActualFormat() const
179{
180 return mTextureCubeMap->getActualFormat(mFaceTarget, mLevel);
181}
182
183GLsizei TextureCubeMapAttachment::getSamples() const
184{
185 return 0;
186}
187
188unsigned int TextureCubeMapAttachment::getSerial() const
189{
190 return mTextureCubeMap->getRenderTargetSerial(mFaceTarget, mLevel);
191}
192
Jamie Madill218b6ed2014-06-16 10:34:01 -0400193GLuint TextureCubeMapAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400194{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400195 return mTextureCubeMap->id();
196}
197
198GLenum TextureCubeMapAttachment::type() const
199{
200 return mFaceTarget;
Jamie Madillafc21c02014-06-04 15:29:47 -0400201}
202
203unsigned int TextureCubeMapAttachment::getTextureSerial() const
204{
205 return mTextureCubeMap->getTextureSerial();
206}
207
208///// Texture3DAttachment Implementation ////////
209
210Texture3DAttachment::Texture3DAttachment(Texture3D *texture, GLint level, GLint layer)
211 : mLevel(level), mLayer(layer)
212{
213 mTexture3D.set(texture);
214}
215
216Texture3DAttachment::~Texture3DAttachment()
217{
218 mTexture3D.set(NULL);
219}
220
221// Textures need to maintain their own reference count for references via
222// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
223void Texture3DAttachment::addProxyRef(const FramebufferAttachment *proxy)
224{
225 mTexture3D->addProxyRef(proxy);
226}
227
228void Texture3DAttachment::releaseProxy(const FramebufferAttachment *proxy)
229{
230 mTexture3D->releaseProxy(proxy);
231}
232
233rx::RenderTarget *Texture3DAttachment::getRenderTarget()
234{
235 return mTexture3D->getRenderTarget(mLevel, mLayer);
236}
237
238rx::RenderTarget *Texture3DAttachment::getDepthStencil()
239{
240 return mTexture3D->getDepthStencil(mLevel, mLayer);
241}
242
243rx::TextureStorage *Texture3DAttachment::getTextureStorage()
244{
245 return mTexture3D->getNativeTexture()->getStorageInstance();
246}
247
248GLsizei Texture3DAttachment::getWidth() const
249{
250 return mTexture3D->getWidth(mLevel);
251}
252
253GLsizei Texture3DAttachment::getHeight() const
254{
255 return mTexture3D->getHeight(mLevel);
256}
257
258GLenum Texture3DAttachment::getInternalFormat() const
259{
260 return mTexture3D->getInternalFormat(mLevel);
261}
262
263GLenum Texture3DAttachment::getActualFormat() const
264{
265 return mTexture3D->getActualFormat(mLevel);
266}
267
268GLsizei Texture3DAttachment::getSamples() const
269{
270 return 0;
271}
272
273unsigned int Texture3DAttachment::getSerial() const
274{
275 return mTexture3D->getRenderTargetSerial(mLevel, mLayer);
276}
277
Jamie Madill218b6ed2014-06-16 10:34:01 -0400278GLuint Texture3DAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400279{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400280 return mTexture3D->id();
281}
282
283GLenum Texture3DAttachment::type() const
284{
285 return GL_TEXTURE_3D;
Jamie Madillafc21c02014-06-04 15:29:47 -0400286}
287
288unsigned int Texture3DAttachment::getTextureSerial() const
289{
290 return mTexture3D->getTextureSerial();
291}
292
293////// Texture2DArrayAttachment Implementation //////
294
295Texture2DArrayAttachment::Texture2DArrayAttachment(Texture2DArray *texture, GLint level, GLint layer)
296 : mLevel(level), mLayer(layer)
297{
298 mTexture2DArray.set(texture);
299}
300
301Texture2DArrayAttachment::~Texture2DArrayAttachment()
302{
303 mTexture2DArray.set(NULL);
304}
305
306void Texture2DArrayAttachment::addProxyRef(const FramebufferAttachment *proxy)
307{
308 mTexture2DArray->addProxyRef(proxy);
309}
310
311void Texture2DArrayAttachment::releaseProxy(const FramebufferAttachment *proxy)
312{
313 mTexture2DArray->releaseProxy(proxy);
314}
315
316rx::RenderTarget *Texture2DArrayAttachment::getRenderTarget()
317{
318 return mTexture2DArray->getRenderTarget(mLevel, mLayer);
319}
320
321rx::RenderTarget *Texture2DArrayAttachment::getDepthStencil()
322{
323 return mTexture2DArray->getDepthStencil(mLevel, mLayer);
324}
325
326rx::TextureStorage *Texture2DArrayAttachment::getTextureStorage()
327{
328 return mTexture2DArray->getNativeTexture()->getStorageInstance();
329}
330
331GLsizei Texture2DArrayAttachment::getWidth() const
332{
333 return mTexture2DArray->getWidth(mLevel);
334}
335
336GLsizei Texture2DArrayAttachment::getHeight() const
337{
338 return mTexture2DArray->getHeight(mLevel);
339}
340
341GLenum Texture2DArrayAttachment::getInternalFormat() const
342{
343 return mTexture2DArray->getInternalFormat(mLevel);
344}
345
346GLenum Texture2DArrayAttachment::getActualFormat() const
347{
348 return mTexture2DArray->getActualFormat(mLevel);
349}
350
351GLsizei Texture2DArrayAttachment::getSamples() const
352{
353 return 0;
354}
355
356unsigned int Texture2DArrayAttachment::getSerial() const
357{
358 return mTexture2DArray->getRenderTargetSerial(mLevel, mLayer);
359}
360
Jamie Madill218b6ed2014-06-16 10:34:01 -0400361GLuint Texture2DArrayAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400362{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400363 return mTexture2DArray->id();
364}
365
366GLenum Texture2DArrayAttachment::type() const
367{
368 return GL_TEXTURE_2D_ARRAY;
Jamie Madillafc21c02014-06-04 15:29:47 -0400369}
370
371unsigned int Texture2DArrayAttachment::getTextureSerial() const
372{
373 return mTexture2DArray->getTextureSerial();
374}
375
376////// FramebufferAttachment Implementation //////
377
Jamie Madill1e3fa742014-06-16 10:34:00 -0400378FramebufferAttachment::FramebufferAttachment(GLuint id, FramebufferAttachmentImpl *instance)
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400379 : RefCountObject(id),
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400380 mImpl(instance)
Jamie Madillafc21c02014-06-04 15:29:47 -0400381{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400382 ASSERT(mImpl != NULL);
Jamie Madillafc21c02014-06-04 15:29:47 -0400383}
384
385FramebufferAttachment::~FramebufferAttachment()
386{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400387 SafeDelete(mImpl);
Jamie Madillafc21c02014-06-04 15:29:47 -0400388}
389
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400390// The FramebufferAttachmentImpl contained in this FramebufferAttachment may need to maintain
Jamie Madillafc21c02014-06-04 15:29:47 -0400391// its own reference count, so we pass it on here.
392void FramebufferAttachment::addRef() const
393{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400394 mImpl->addProxyRef(this);
Jamie Madillafc21c02014-06-04 15:29:47 -0400395
396 RefCountObject::addRef();
397}
398
399void FramebufferAttachment::release() const
400{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400401 mImpl->releaseProxy(this);
Jamie Madillafc21c02014-06-04 15:29:47 -0400402
403 RefCountObject::release();
404}
405
406rx::RenderTarget *FramebufferAttachment::getRenderTarget()
407{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400408 return mImpl->getRenderTarget();
Jamie Madillafc21c02014-06-04 15:29:47 -0400409}
410
411rx::RenderTarget *FramebufferAttachment::getDepthStencil()
412{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400413 return mImpl->getDepthStencil();
Jamie Madillafc21c02014-06-04 15:29:47 -0400414}
415
416rx::TextureStorage *FramebufferAttachment::getTextureStorage()
417{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400418 return mImpl->getTextureStorage();
Jamie Madillafc21c02014-06-04 15:29:47 -0400419}
420
421GLsizei FramebufferAttachment::getWidth() const
422{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400423 return mImpl->getWidth();
Jamie Madillafc21c02014-06-04 15:29:47 -0400424}
425
426GLsizei FramebufferAttachment::getHeight() const
427{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400428 return mImpl->getHeight();
Jamie Madillafc21c02014-06-04 15:29:47 -0400429}
430
431GLenum FramebufferAttachment::getInternalFormat() const
432{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400433 return mImpl->getInternalFormat();
Jamie Madillafc21c02014-06-04 15:29:47 -0400434}
435
436GLenum FramebufferAttachment::getActualFormat() const
437{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400438 return mImpl->getActualFormat();
Jamie Madillafc21c02014-06-04 15:29:47 -0400439}
440
Jamie Madill1e3fa742014-06-16 10:34:00 -0400441GLuint FramebufferAttachment::getRedSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400442{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400443 if (gl::GetRedBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400444 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400445 return gl::GetRedBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400446 }
447 else
448 {
449 return 0;
450 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400451}
452
Jamie Madill1e3fa742014-06-16 10:34:00 -0400453GLuint FramebufferAttachment::getGreenSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400454{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400455 if (gl::GetGreenBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400456 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400457 return gl::GetGreenBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400458 }
459 else
460 {
461 return 0;
462 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400463}
464
Jamie Madill1e3fa742014-06-16 10:34:00 -0400465GLuint FramebufferAttachment::getBlueSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400466{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400467 if (gl::GetBlueBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400468 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400469 return gl::GetBlueBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400470 }
471 else
472 {
473 return 0;
474 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400475}
476
Jamie Madill1e3fa742014-06-16 10:34:00 -0400477GLuint FramebufferAttachment::getAlphaSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400478{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400479 if (gl::GetAlphaBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400480 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400481 return gl::GetAlphaBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400482 }
483 else
484 {
485 return 0;
486 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400487}
488
Jamie Madill1e3fa742014-06-16 10:34:00 -0400489GLuint FramebufferAttachment::getDepthSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400490{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400491 if (gl::GetDepthBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400492 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400493 return gl::GetDepthBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400494 }
495 else
496 {
497 return 0;
498 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400499}
500
Jamie Madill1e3fa742014-06-16 10:34:00 -0400501GLuint FramebufferAttachment::getStencilSize(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400502{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400503 if (gl::GetStencilBits(getInternalFormat(), clientVersion) > 0)
Geoff Langb6a673a2014-06-05 14:19:16 -0400504 {
Jamie Madill1e3fa742014-06-16 10:34:00 -0400505 return gl::GetStencilBits(getActualFormat(), clientVersion);
Geoff Langb6a673a2014-06-05 14:19:16 -0400506 }
507 else
508 {
509 return 0;
510 }
Jamie Madillafc21c02014-06-04 15:29:47 -0400511}
512
Jamie Madill1e3fa742014-06-16 10:34:00 -0400513GLenum FramebufferAttachment::getComponentType(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400514{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400515 return gl::GetComponentType(getActualFormat(), clientVersion);
Jamie Madillafc21c02014-06-04 15:29:47 -0400516}
517
Jamie Madill1e3fa742014-06-16 10:34:00 -0400518GLenum FramebufferAttachment::getColorEncoding(int clientVersion) const
Jamie Madillafc21c02014-06-04 15:29:47 -0400519{
Jamie Madill1e3fa742014-06-16 10:34:00 -0400520 return gl::GetColorEncoding(getActualFormat(), clientVersion);
Jamie Madillafc21c02014-06-04 15:29:47 -0400521}
522
Jamie Madill218b6ed2014-06-16 10:34:01 -0400523bool FramebufferAttachment::isTexture() const
524{
525 return (type() != GL_RENDERBUFFER);
526}
527
Jamie Madillafc21c02014-06-04 15:29:47 -0400528GLsizei FramebufferAttachment::getSamples() const
529{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400530 return mImpl->getSamples();
Jamie Madillafc21c02014-06-04 15:29:47 -0400531}
532
533unsigned int FramebufferAttachment::getSerial() const
534{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400535 return mImpl->getSerial();
Jamie Madillafc21c02014-06-04 15:29:47 -0400536}
537
Jamie Madill218b6ed2014-06-16 10:34:01 -0400538GLuint FramebufferAttachment::id() const
Jamie Madillafc21c02014-06-04 15:29:47 -0400539{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400540 return mImpl->id();
541}
542
543GLuint FramebufferAttachment::type() const
544{
545 return mImpl->type();
Jamie Madillafc21c02014-06-04 15:29:47 -0400546}
547
548unsigned int FramebufferAttachment::getTextureSerial() const
549{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400550 return mImpl->getTextureSerial();
Jamie Madillafc21c02014-06-04 15:29:47 -0400551}
552
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400553void FramebufferAttachment::setImplementation(FramebufferAttachmentImpl *newImpl)
Jamie Madillafc21c02014-06-04 15:29:47 -0400554{
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400555 ASSERT(newImpl != NULL);
Jamie Madillafc21c02014-06-04 15:29:47 -0400556
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400557 delete mImpl;
558 mImpl = newImpl;
559}
560
561RenderbufferAttachment::RenderbufferAttachment(Renderbuffer *renderbuffer)
562{
563 ASSERT(renderbuffer);
564 mRenderbuffer.set(renderbuffer);
565}
566
567RenderbufferAttachment::~RenderbufferAttachment()
568{
569 mRenderbuffer.set(NULL);
570}
571
572rx::RenderTarget *RenderbufferAttachment::getRenderTarget()
573{
574 return mRenderbuffer->getStorage()->getRenderTarget();
575}
576
577rx::RenderTarget *RenderbufferAttachment::getDepthStencil()
578{
579 return mRenderbuffer->getStorage()->getDepthStencil();
580}
581
582rx::TextureStorage *RenderbufferAttachment::getTextureStorage()
583{
584 UNREACHABLE();
585 return NULL;
586}
587
588GLsizei RenderbufferAttachment::getWidth() const
589{
590 return mRenderbuffer->getWidth();
591}
592
593GLsizei RenderbufferAttachment::getHeight() const
594{
595 return mRenderbuffer->getHeight();
596}
597
598GLenum RenderbufferAttachment::getInternalFormat() const
599{
600 return mRenderbuffer->getInternalFormat();
601}
602
603GLenum RenderbufferAttachment::getActualFormat() const
604{
605 return mRenderbuffer->getActualFormat();
606}
607
608GLsizei RenderbufferAttachment::getSamples() const
609{
610 return mRenderbuffer->getStorage()->getSamples();
611}
612
613unsigned int RenderbufferAttachment::getSerial() const
614{
615 return mRenderbuffer->getStorage()->getSerial();
616}
617
Jamie Madill218b6ed2014-06-16 10:34:01 -0400618GLuint RenderbufferAttachment::id() const
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400619{
Jamie Madill218b6ed2014-06-16 10:34:01 -0400620 return mRenderbuffer->id();
621}
622
623GLenum RenderbufferAttachment::type() const
624{
625 return GL_RENDERBUFFER;
Jamie Madill6c7b4ad2014-06-16 10:33:59 -0400626}
627
628unsigned int RenderbufferAttachment::getTextureSerial() const
629{
630 UNREACHABLE();
631 return 0;
Jamie Madillafc21c02014-06-04 15:29:47 -0400632}
633
634}