Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
angle
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
angle
Commits
d5d8e393
Commit
d5d8e393
authored
Jul 25, 2013
by
Geoff Lang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added Renderbuffers for 3D and 2DArray textures.
TRAC #23470 Signed-off-by: Jamie Madill Signed-off-by: Shannon Woods Author: Geoff Lang
parent
8040f57d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
194 additions
and
6 deletions
+194
-6
Renderbuffer.cpp
src/libGLESv2/Renderbuffer.cpp
+128
-0
Renderbuffer.h
src/libGLESv2/Renderbuffer.h
+60
-0
Texture.cpp
src/libGLESv2/Texture.cpp
+4
-6
Texture.h
src/libGLESv2/Texture.h
+2
-0
No files found.
src/libGLESv2/Renderbuffer.cpp
View file @
d5d8e393
...
@@ -165,6 +165,134 @@ unsigned int RenderbufferTextureCubeMap::getSerial() const
...
@@ -165,6 +165,134 @@ unsigned int RenderbufferTextureCubeMap::getSerial() const
return
mTextureCubeMap
->
getRenderTargetSerial
(
mFaceTarget
,
mLevel
);
return
mTextureCubeMap
->
getRenderTargetSerial
(
mFaceTarget
,
mLevel
);
}
}
///// RenderbufferTexture3DLayer Implementation ////////
RenderbufferTexture3DLayer
::
RenderbufferTexture3DLayer
(
Texture3D
*
texture
,
GLint
level
,
GLint
layer
)
:
mLevel
(
level
),
mLayer
(
layer
)
{
mTexture3D
.
set
(
texture
);
}
RenderbufferTexture3DLayer
::~
RenderbufferTexture3DLayer
()
{
mTexture3D
.
set
(
NULL
);
}
// Textures need to maintain their own reference count for references via
// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
void
RenderbufferTexture3DLayer
::
addProxyRef
(
const
Renderbuffer
*
proxy
)
{
mTexture3D
->
addProxyRef
(
proxy
);
}
void
RenderbufferTexture3DLayer
::
releaseProxy
(
const
Renderbuffer
*
proxy
)
{
mTexture3D
->
releaseProxy
(
proxy
);
}
rx
::
RenderTarget
*
RenderbufferTexture3DLayer
::
getRenderTarget
()
{
return
mTexture3D
->
getRenderTarget
(
mLevel
,
mLayer
);
}
rx
::
RenderTarget
*
RenderbufferTexture3DLayer
::
getDepthStencil
()
{
return
mTexture3D
->
getDepthStencil
(
mLevel
,
mLayer
);
}
GLsizei
RenderbufferTexture3DLayer
::
getWidth
()
const
{
return
mTexture3D
->
getWidth
(
mLevel
);
}
GLsizei
RenderbufferTexture3DLayer
::
getHeight
()
const
{
return
mTexture3D
->
getHeight
(
mLevel
);
}
GLenum
RenderbufferTexture3DLayer
::
getInternalFormat
()
const
{
return
mTexture3D
->
getInternalFormat
(
mLevel
);
}
GLenum
RenderbufferTexture3DLayer
::
getActualFormat
()
const
{
return
mTexture3D
->
getActualFormat
(
mLevel
);
}
GLsizei
RenderbufferTexture3DLayer
::
getSamples
()
const
{
return
0
;
}
unsigned
int
RenderbufferTexture3DLayer
::
getSerial
()
const
{
return
mTexture3D
->
getRenderTargetSerial
(
mLevel
,
mLayer
);
}
////// RenderbufferTexture2DArrayLayer Implementation //////
RenderbufferTexture2DArrayLayer
::
RenderbufferTexture2DArrayLayer
(
Texture2DArray
*
texture
,
GLint
level
,
GLint
layer
)
:
mLevel
(
level
),
mLayer
(
layer
)
{
mTexture2DArray
.
set
(
texture
);
}
RenderbufferTexture2DArrayLayer
::~
RenderbufferTexture2DArrayLayer
()
{
mTexture2DArray
.
set
(
NULL
);
}
void
RenderbufferTexture2DArrayLayer
::
addProxyRef
(
const
Renderbuffer
*
proxy
)
{
mTexture2DArray
->
addProxyRef
(
proxy
);
}
void
RenderbufferTexture2DArrayLayer
::
releaseProxy
(
const
Renderbuffer
*
proxy
)
{
mTexture2DArray
->
releaseProxy
(
proxy
);
}
rx
::
RenderTarget
*
RenderbufferTexture2DArrayLayer
::
getRenderTarget
()
{
return
mTexture2DArray
->
getRenderTarget
(
mLevel
,
mLayer
);
}
rx
::
RenderTarget
*
RenderbufferTexture2DArrayLayer
::
getDepthStencil
()
{
return
mTexture2DArray
->
getDepthStencil
(
mLevel
,
mLayer
);
}
GLsizei
RenderbufferTexture2DArrayLayer
::
getWidth
()
const
{
return
mTexture2DArray
->
getWidth
(
mLevel
);
}
GLsizei
RenderbufferTexture2DArrayLayer
::
getHeight
()
const
{
return
mTexture2DArray
->
getHeight
(
mLevel
);
}
GLenum
RenderbufferTexture2DArrayLayer
::
getInternalFormat
()
const
{
return
mTexture2DArray
->
getInternalFormat
(
mLevel
);
}
GLenum
RenderbufferTexture2DArrayLayer
::
getActualFormat
()
const
{
return
mTexture2DArray
->
getActualFormat
(
mLevel
);
}
GLsizei
RenderbufferTexture2DArrayLayer
::
getSamples
()
const
{
return
0
;
}
unsigned
int
RenderbufferTexture2DArrayLayer
::
getSerial
()
const
{
return
mTexture2DArray
->
getRenderTargetSerial
(
mLevel
,
mLayer
);
}
////// Renderbuffer Implementation //////
////// Renderbuffer Implementation //////
Renderbuffer
::
Renderbuffer
(
rx
::
Renderer
*
renderer
,
GLuint
id
,
RenderbufferInterface
*
instance
)
:
RefCountObject
(
id
)
Renderbuffer
::
Renderbuffer
(
rx
::
Renderer
*
renderer
,
GLuint
id
,
RenderbufferInterface
*
instance
)
:
RefCountObject
(
id
)
...
...
src/libGLESv2/Renderbuffer.h
View file @
d5d8e393
...
@@ -30,6 +30,8 @@ namespace gl
...
@@ -30,6 +30,8 @@ namespace gl
{
{
class
Texture2D
;
class
Texture2D
;
class
TextureCubeMap
;
class
TextureCubeMap
;
class
Texture3D
;
class
Texture2DArray
;
class
Renderbuffer
;
class
Renderbuffer
;
class
Colorbuffer
;
class
Colorbuffer
;
class
DepthStencilbuffer
;
class
DepthStencilbuffer
;
...
@@ -116,6 +118,64 @@ class RenderbufferTextureCubeMap : public RenderbufferInterface
...
@@ -116,6 +118,64 @@ class RenderbufferTextureCubeMap : public RenderbufferInterface
const
GLenum
mFaceTarget
;
const
GLenum
mFaceTarget
;
};
};
class
RenderbufferTexture3DLayer
:
public
RenderbufferInterface
{
public
:
RenderbufferTexture3DLayer
(
Texture3D
*
texture
,
GLint
level
,
GLint
layer
);
virtual
~
RenderbufferTexture3DLayer
();
void
addProxyRef
(
const
Renderbuffer
*
proxy
);
void
releaseProxy
(
const
Renderbuffer
*
proxy
);
rx
::
RenderTarget
*
getRenderTarget
();
rx
::
RenderTarget
*
getDepthStencil
();
virtual
GLsizei
getWidth
()
const
;
virtual
GLsizei
getHeight
()
const
;
virtual
GLenum
getInternalFormat
()
const
;
virtual
GLenum
getActualFormat
()
const
;
virtual
GLsizei
getSamples
()
const
;
virtual
unsigned
int
getSerial
()
const
;
private
:
DISALLOW_COPY_AND_ASSIGN
(
RenderbufferTexture3DLayer
);
BindingPointer
<
Texture3D
>
mTexture3D
;
const
GLint
mLevel
;
const
GLint
mLayer
;
};
class
RenderbufferTexture2DArrayLayer
:
public
RenderbufferInterface
{
public
:
RenderbufferTexture2DArrayLayer
(
Texture2DArray
*
texture
,
GLint
level
,
GLint
layer
);
virtual
~
RenderbufferTexture2DArrayLayer
();
void
addProxyRef
(
const
Renderbuffer
*
proxy
);
void
releaseProxy
(
const
Renderbuffer
*
proxy
);
rx
::
RenderTarget
*
getRenderTarget
();
rx
::
RenderTarget
*
getDepthStencil
();
virtual
GLsizei
getWidth
()
const
;
virtual
GLsizei
getHeight
()
const
;
virtual
GLenum
getInternalFormat
()
const
;
virtual
GLenum
getActualFormat
()
const
;
virtual
GLsizei
getSamples
()
const
;
virtual
unsigned
int
getSerial
()
const
;
private
:
DISALLOW_COPY_AND_ASSIGN
(
RenderbufferTexture2DArrayLayer
);
BindingPointer
<
Texture2DArray
>
mTexture2DArray
;
const
GLint
mLevel
;
const
GLint
mLayer
;
};
// A class derived from RenderbufferStorage is created whenever glRenderbufferStorage
// A class derived from RenderbufferStorage is created whenever glRenderbufferStorage
// is called. The specific concrete type depends on whether the internal format is
// is called. The specific concrete type depends on whether the internal format is
// colour depth, stencil or packed depth/stencil.
// colour depth, stencil or packed depth/stencil.
...
...
src/libGLESv2/Texture.cpp
View file @
d5d8e393
...
@@ -1942,9 +1942,8 @@ Renderbuffer *Texture3D::getRenderbuffer(GLint level, GLint layer)
...
@@ -1942,9 +1942,8 @@ Renderbuffer *Texture3D::getRenderbuffer(GLint level, GLint layer)
Renderbuffer
*
renderBuffer
=
mRenderbufferProxies
.
get
(
level
,
layer
);
Renderbuffer
*
renderBuffer
=
mRenderbufferProxies
.
get
(
level
,
layer
);
if
(
!
renderBuffer
)
if
(
!
renderBuffer
)
{
{
UNIMPLEMENTED
();
renderBuffer
=
new
Renderbuffer
(
mRenderer
,
id
(),
new
RenderbufferTexture3DLayer
(
this
,
level
,
layer
));
//renderBuffer = new Renderbuffer(mRenderer, id(), new RenderbufferTexture3DLayer(this, level, layer));
mRenderbufferProxies
.
add
(
level
,
0
,
renderBuffer
);
//mRenderbufferProxies.add(level, 0, renderBuffer);
}
}
return
renderBuffer
;
return
renderBuffer
;
...
@@ -2490,9 +2489,8 @@ Renderbuffer *Texture2DArray::getRenderbuffer(GLint level, GLint layer)
...
@@ -2490,9 +2489,8 @@ Renderbuffer *Texture2DArray::getRenderbuffer(GLint level, GLint layer)
Renderbuffer
*
renderBuffer
=
mRenderbufferProxies
.
get
(
level
,
layer
);
Renderbuffer
*
renderBuffer
=
mRenderbufferProxies
.
get
(
level
,
layer
);
if
(
!
renderBuffer
)
if
(
!
renderBuffer
)
{
{
UNIMPLEMENTED
();
renderBuffer
=
new
Renderbuffer
(
mRenderer
,
id
(),
new
RenderbufferTexture2DArrayLayer
(
this
,
level
,
layer
));
//renderBuffer = new Renderbuffer(mRenderer, id(), new RenderbufferTexture2DArrayLayer(this, level, layer));
mRenderbufferProxies
.
add
(
level
,
0
,
renderBuffer
);
//mRenderbufferProxies.add(level, 0, renderBuffer);
}
}
return
renderBuffer
;
return
renderBuffer
;
...
...
src/libGLESv2/Texture.h
View file @
d5d8e393
...
@@ -301,6 +301,7 @@ class Texture3D : public Texture
...
@@ -301,6 +301,7 @@ class Texture3D : public Texture
unsigned
int
getRenderTargetSerial
(
GLint
level
,
GLint
layer
);
unsigned
int
getRenderTargetSerial
(
GLint
level
,
GLint
layer
);
protected
:
protected
:
friend
class
RenderbufferTexture3DLayer
;
rx
::
RenderTarget
*
getRenderTarget
(
GLint
level
,
GLint
layer
);
rx
::
RenderTarget
*
getRenderTarget
(
GLint
level
,
GLint
layer
);
rx
::
RenderTarget
*
getDepthStencil
(
GLint
level
,
GLint
layer
);
rx
::
RenderTarget
*
getDepthStencil
(
GLint
level
,
GLint
layer
);
virtual
int
levelCount
();
virtual
int
levelCount
();
...
@@ -356,6 +357,7 @@ class Texture2DArray : public Texture
...
@@ -356,6 +357,7 @@ class Texture2DArray : public Texture
unsigned
int
getRenderTargetSerial
(
GLint
level
,
GLint
layer
);
unsigned
int
getRenderTargetSerial
(
GLint
level
,
GLint
layer
);
protected
:
protected
:
friend
class
RenderbufferTexture2DArrayLayer
;
rx
::
RenderTarget
*
getRenderTarget
(
GLint
level
,
GLint
layer
);
rx
::
RenderTarget
*
getRenderTarget
(
GLint
level
,
GLint
layer
);
rx
::
RenderTarget
*
getDepthStencil
(
GLint
level
,
GLint
layer
);
rx
::
RenderTarget
*
getDepthStencil
(
GLint
level
,
GLint
layer
);
virtual
int
levelCount
();
virtual
int
levelCount
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment