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
7aeab46f
Commit
7aeab46f
authored
May 31, 2012
by
daniel@transgaming.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Factor renderability check into GetTextureUsage
Trac #20875 Signed-off-by: Nicolas Capens git-svn-id:
https://angleproject.googlecode.com/svn/trunk@1109
736b8ea6-26fd-11df-bfd4-992fa37f6226
parent
e32d5699
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
25 deletions
+21
-25
Texture.cpp
src/libGLESv2/Texture.cpp
+21
-25
No files found.
src/libGLESv2/Texture.cpp
View file @
7aeab46f
...
@@ -95,15 +95,15 @@ static bool IsTextureFormatRenderable(D3DFORMAT format)
...
@@ -95,15 +95,15 @@ static bool IsTextureFormatRenderable(D3DFORMAT format)
return
false
;
return
false
;
}
}
static
inline
DWORD
GetTextureUsage
(
bool
rendertarget
,
D3DFORMAT
fmt
)
static
inline
DWORD
GetTextureUsage
(
D3DFORMAT
d3dfmt
,
GLenum
glusage
,
bool
forceRenderable
)
{
{
DWORD
usage
=
0
;
DWORD
d3d
usage
=
0
;
if
(
rendertarget
)
if
(
forceRenderable
||
(
IsTextureFormatRenderable
(
d3dfmt
)
&&
(
glusage
==
GL_FRAMEBUFFER_ATTACHMENT_ANGLE
))
)
{
{
usage
|=
D3DUSAGE_RENDERTARGET
;
d3d
usage
|=
D3DUSAGE_RENDERTARGET
;
}
}
return
usage
;
return
d3d
usage
;
}
}
Image
::
Image
()
Image
::
Image
()
...
@@ -2033,11 +2033,10 @@ void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL
...
@@ -2033,11 +2033,10 @@ void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL
GLenum
format
=
gl
::
ExtractFormat
(
internalformat
);
GLenum
format
=
gl
::
ExtractFormat
(
internalformat
);
GLenum
type
=
gl
::
ExtractType
(
internalformat
);
GLenum
type
=
gl
::
ExtractType
(
internalformat
);
D3DFORMAT
d3dfmt
=
ConvertTextureFormatType
(
format
,
type
);
D3DFORMAT
d3dfmt
=
ConvertTextureFormatType
(
format
,
type
);
const
bool
renderTarget
=
IsTextureFormatRenderable
(
d3dfmt
)
&&
(
mUsage
==
GL_FRAMEBUFFER_ATTACHMENT_ANGLE
);
DWORD
d3dusage
=
GetTextureUsage
(
d3dfmt
,
mUsage
,
false
);
DWORD
usage
=
GetTextureUsage
(
renderTarget
,
d3dfmt
);
delete
mTexStorage
;
delete
mTexStorage
;
mTexStorage
=
new
TextureStorage2D
(
levels
,
d3dfmt
,
usage
,
width
,
height
);
mTexStorage
=
new
TextureStorage2D
(
levels
,
d3dfmt
,
d3d
usage
,
width
,
height
);
mImmutable
=
true
;
mImmutable
=
true
;
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
...
@@ -2196,12 +2195,11 @@ void Texture2D::createTexture()
...
@@ -2196,12 +2195,11 @@ void Texture2D::createTexture()
GLsizei
width
=
mImageArray
[
0
].
getWidth
();
GLsizei
width
=
mImageArray
[
0
].
getWidth
();
GLsizei
height
=
mImageArray
[
0
].
getHeight
();
GLsizei
height
=
mImageArray
[
0
].
getHeight
();
GLint
levels
=
creationLevels
(
width
,
height
);
GLint
levels
=
creationLevels
(
width
,
height
);
D3DFORMAT
format
=
mImageArray
[
0
].
getD3DFormat
();
D3DFORMAT
d3dfmt
=
mImageArray
[
0
].
getD3DFormat
();
const
bool
renderTarget
=
IsTextureFormatRenderable
(
format
)
&&
(
mUsage
==
GL_FRAMEBUFFER_ATTACHMENT_ANGLE
);
DWORD
d3dusage
=
GetTextureUsage
(
d3dfmt
,
mUsage
,
false
);
DWORD
usage
=
GetTextureUsage
(
renderTarget
,
format
);
delete
mTexStorage
;
delete
mTexStorage
;
mTexStorage
=
new
TextureStorage2D
(
levels
,
format
,
usage
,
width
,
height
);
mTexStorage
=
new
TextureStorage2D
(
levels
,
d3dfmt
,
d3d
usage
,
width
,
height
);
if
(
mTexStorage
->
isManaged
())
if
(
mTexStorage
->
isManaged
())
{
{
...
@@ -2241,10 +2239,10 @@ void Texture2D::convertToRenderTarget()
...
@@ -2241,10 +2239,10 @@ void Texture2D::convertToRenderTarget()
GLsizei
width
=
mImageArray
[
0
].
getWidth
();
GLsizei
width
=
mImageArray
[
0
].
getWidth
();
GLsizei
height
=
mImageArray
[
0
].
getHeight
();
GLsizei
height
=
mImageArray
[
0
].
getHeight
();
GLint
levels
=
creationLevels
(
width
,
height
);
GLint
levels
=
creationLevels
(
width
,
height
);
D3DFORMAT
forma
t
=
mImageArray
[
0
].
getD3DFormat
();
D3DFORMAT
d3dfm
t
=
mImageArray
[
0
].
getD3DFormat
();
DWORD
usage
=
GetTextureUsage
(
true
,
format
);
DWORD
d3dusage
=
GetTextureUsage
(
d3dfmt
,
GL_FRAMEBUFFER_ATTACHMENT_ANGLE
,
true
);
newTexStorage
=
new
TextureStorage2D
(
levels
,
format
,
usage
,
width
,
height
);
newTexStorage
=
new
TextureStorage2D
(
levels
,
d3dfmt
,
d3d
usage
,
width
,
height
);
if
(
mTexStorage
!=
NULL
)
if
(
mTexStorage
!=
NULL
)
{
{
...
@@ -2724,12 +2722,11 @@ void TextureCubeMap::createTexture()
...
@@ -2724,12 +2722,11 @@ void TextureCubeMap::createTexture()
{
{
GLsizei
size
=
mImageArray
[
0
][
0
].
getWidth
();
GLsizei
size
=
mImageArray
[
0
][
0
].
getWidth
();
GLint
levels
=
creationLevels
(
size
,
0
);
GLint
levels
=
creationLevels
(
size
,
0
);
D3DFORMAT
format
=
mImageArray
[
0
][
0
].
getD3DFormat
();
D3DFORMAT
d3dfmt
=
mImageArray
[
0
][
0
].
getD3DFormat
();
const
bool
renderTarget
=
IsTextureFormatRenderable
(
format
)
&&
(
mUsage
==
GL_FRAMEBUFFER_ATTACHMENT_ANGLE
);
DWORD
d3dusage
=
GetTextureUsage
(
d3dfmt
,
mUsage
,
false
);
DWORD
usage
=
GetTextureUsage
(
renderTarget
,
format
);
delete
mTexStorage
;
delete
mTexStorage
;
mTexStorage
=
new
TextureStorageCubeMap
(
levels
,
format
,
usage
,
size
);
mTexStorage
=
new
TextureStorageCubeMap
(
levels
,
d3dfmt
,
d3d
usage
,
size
);
if
(
mTexStorage
->
isManaged
())
if
(
mTexStorage
->
isManaged
())
{
{
...
@@ -2773,10 +2770,10 @@ void TextureCubeMap::convertToRenderTarget()
...
@@ -2773,10 +2770,10 @@ void TextureCubeMap::convertToRenderTarget()
{
{
GLsizei
size
=
mImageArray
[
0
][
0
].
getWidth
();
GLsizei
size
=
mImageArray
[
0
][
0
].
getWidth
();
GLint
levels
=
creationLevels
(
size
,
0
);
GLint
levels
=
creationLevels
(
size
,
0
);
D3DFORMAT
forma
t
=
mImageArray
[
0
][
0
].
getD3DFormat
();
D3DFORMAT
d3dfm
t
=
mImageArray
[
0
][
0
].
getD3DFormat
();
DWORD
usage
=
GetTextureUsage
(
true
,
format
);
DWORD
d3dusage
=
GetTextureUsage
(
d3dfmt
,
GL_FRAMEBUFFER_ATTACHMENT_ANGLE
,
true
);
newTexStorage
=
new
TextureStorageCubeMap
(
levels
,
format
,
usage
,
size
);
newTexStorage
=
new
TextureStorageCubeMap
(
levels
,
d3dfmt
,
d3d
usage
,
size
);
if
(
mTexStorage
!=
NULL
)
if
(
mTexStorage
!=
NULL
)
{
{
...
@@ -2961,11 +2958,10 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
...
@@ -2961,11 +2958,10 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
GLenum
format
=
gl
::
ExtractFormat
(
internalformat
);
GLenum
format
=
gl
::
ExtractFormat
(
internalformat
);
GLenum
type
=
gl
::
ExtractType
(
internalformat
);
GLenum
type
=
gl
::
ExtractType
(
internalformat
);
D3DFORMAT
d3dfmt
=
ConvertTextureFormatType
(
format
,
type
);
D3DFORMAT
d3dfmt
=
ConvertTextureFormatType
(
format
,
type
);
const
bool
renderTarget
=
IsTextureFormatRenderable
(
d3dfmt
)
&&
(
mUsage
==
GL_FRAMEBUFFER_ATTACHMENT_ANGLE
);
DWORD
d3dusage
=
GetTextureUsage
(
d3dfmt
,
mUsage
,
false
);
DWORD
usage
=
GetTextureUsage
(
renderTarget
,
d3dfmt
);
delete
mTexStorage
;
delete
mTexStorage
;
mTexStorage
=
new
TextureStorageCubeMap
(
levels
,
d3dfmt
,
usage
,
size
);
mTexStorage
=
new
TextureStorageCubeMap
(
levels
,
d3dfmt
,
d3d
usage
,
size
);
mImmutable
=
true
;
mImmutable
=
true
;
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
...
...
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