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
2db197cd
Commit
2db197cd
authored
Oct 24, 2013
by
Jamie Madill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use a consistent naming scheme for the cube map face index variables in Texture.cpp.
TRAC #23961 Signed-off-by: Shannon Woods Signed-off-by: Geoff Lang
parent
d4589c97
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
99 additions
and
96 deletions
+99
-96
Texture.cpp
src/libGLESv2/Texture.cpp
+73
-70
Texture.h
src/libGLESv2/Texture.h
+5
-5
TextureStorage.cpp
src/libGLESv2/renderer/TextureStorage.cpp
+3
-3
TextureStorage.h
src/libGLESv2/renderer/TextureStorage.h
+1
-1
TextureStorage11.cpp
src/libGLESv2/renderer/d3d11/TextureStorage11.cpp
+11
-11
TextureStorage11.h
src/libGLESv2/renderer/d3d11/TextureStorage11.h
+1
-1
TextureStorage9.cpp
src/libGLESv2/renderer/d3d9/TextureStorage9.cpp
+4
-4
TextureStorage9.h
src/libGLESv2/renderer/d3d9/TextureStorage9.h
+1
-1
No files found.
src/libGLESv2/Texture.cpp
View file @
2db197cd
...
@@ -1026,7 +1026,7 @@ TextureCubeMap::~TextureCubeMap()
...
@@ -1026,7 +1026,7 @@ TextureCubeMap::~TextureCubeMap()
GLsizei
TextureCubeMap
::
getWidth
(
GLenum
target
,
GLint
level
)
const
GLsizei
TextureCubeMap
::
getWidth
(
GLenum
target
,
GLint
level
)
const
{
{
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
return
mImageArray
[
face
Index
(
target
)][
level
]
->
getWidth
();
return
mImageArray
[
targetTo
Index
(
target
)][
level
]
->
getWidth
();
else
else
return
0
;
return
0
;
}
}
...
@@ -1034,7 +1034,7 @@ GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const
...
@@ -1034,7 +1034,7 @@ GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const
GLsizei
TextureCubeMap
::
getHeight
(
GLenum
target
,
GLint
level
)
const
GLsizei
TextureCubeMap
::
getHeight
(
GLenum
target
,
GLint
level
)
const
{
{
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
return
mImageArray
[
face
Index
(
target
)][
level
]
->
getHeight
();
return
mImageArray
[
targetTo
Index
(
target
)][
level
]
->
getHeight
();
else
else
return
0
;
return
0
;
}
}
...
@@ -1042,7 +1042,7 @@ GLsizei TextureCubeMap::getHeight(GLenum target, GLint level) const
...
@@ -1042,7 +1042,7 @@ GLsizei TextureCubeMap::getHeight(GLenum target, GLint level) const
GLenum
TextureCubeMap
::
getInternalFormat
(
GLenum
target
,
GLint
level
)
const
GLenum
TextureCubeMap
::
getInternalFormat
(
GLenum
target
,
GLint
level
)
const
{
{
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
return
mImageArray
[
face
Index
(
target
)][
level
]
->
getInternalFormat
();
return
mImageArray
[
targetTo
Index
(
target
)][
level
]
->
getInternalFormat
();
else
else
return
GL_NONE
;
return
GL_NONE
;
}
}
...
@@ -1050,7 +1050,7 @@ GLenum TextureCubeMap::getInternalFormat(GLenum target, GLint level) const
...
@@ -1050,7 +1050,7 @@ GLenum TextureCubeMap::getInternalFormat(GLenum target, GLint level) const
GLenum
TextureCubeMap
::
getActualFormat
(
GLenum
target
,
GLint
level
)
const
GLenum
TextureCubeMap
::
getActualFormat
(
GLenum
target
,
GLint
level
)
const
{
{
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
if
(
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
)
return
mImageArray
[
face
Index
(
target
)][
level
]
->
getActualFormat
();
return
mImageArray
[
targetTo
Index
(
target
)][
level
]
->
getActualFormat
();
else
else
return
D3DFMT_UNKNOWN
;
return
D3DFMT_UNKNOWN
;
}
}
...
@@ -1085,37 +1085,40 @@ void TextureCubeMap::setImageNegZ(GLint level, GLsizei width, GLsizei height, GL
...
@@ -1085,37 +1085,40 @@ void TextureCubeMap::setImageNegZ(GLint level, GLsizei width, GLsizei height, GL
setImage
(
5
,
level
,
width
,
height
,
internalFormat
,
format
,
type
,
unpack
,
pixels
);
setImage
(
5
,
level
,
width
,
height
,
internalFormat
,
format
,
type
,
unpack
,
pixels
);
}
}
void
TextureCubeMap
::
setCompressedImage
(
GLenum
face
,
GLint
level
,
GLenum
format
,
GLsizei
width
,
GLsizei
height
,
GLsizei
imageSize
,
const
void
*
pixels
)
void
TextureCubeMap
::
setCompressedImage
(
GLenum
target
,
GLint
level
,
GLenum
format
,
GLsizei
width
,
GLsizei
height
,
GLsizei
imageSize
,
const
void
*
pixels
)
{
{
// compressed formats don't have separate sized internal formats-- we can just use the compressed format directly
// compressed formats don't have separate sized internal formats-- we can just use the compressed format directly
redefineImage
(
faceIndex
(
face
),
level
,
format
,
width
,
height
);
int
faceIndex
=
targetToIndex
(
target
);
redefineImage
(
faceIndex
,
level
,
format
,
width
,
height
);
Texture
::
setCompressedImage
(
imageSize
,
pixels
,
mImageArray
[
faceIndex
(
face
)
][
level
]);
Texture
::
setCompressedImage
(
imageSize
,
pixels
,
mImageArray
[
faceIndex
][
level
]);
}
}
void
TextureCubeMap
::
commitRect
(
int
face
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
)
void
TextureCubeMap
::
commitRect
(
int
face
Index
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
)
{
{
if
(
level
<
levelCount
())
if
(
level
<
levelCount
())
{
{
rx
::
Image
*
image
=
mImageArray
[
face
][
level
];
rx
::
Image
*
image
=
mImageArray
[
face
Index
][
level
];
if
(
image
->
updateSurface
(
mTexStorage
,
face
,
level
,
xoffset
,
yoffset
,
width
,
height
))
if
(
image
->
updateSurface
(
mTexStorage
,
face
Index
,
level
,
xoffset
,
yoffset
,
width
,
height
))
image
->
markClean
();
image
->
markClean
();
}
}
}
}
void
TextureCubeMap
::
subImage
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
)
void
TextureCubeMap
::
subImage
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
)
{
{
if
(
Texture
::
subImage
(
xoffset
,
yoffset
,
0
,
width
,
height
,
1
,
format
,
type
,
unpack
,
pixels
,
mImageArray
[
faceIndex
(
target
)][
level
]))
int
faceIndex
=
targetToIndex
(
target
);
if
(
Texture
::
subImage
(
xoffset
,
yoffset
,
0
,
width
,
height
,
1
,
format
,
type
,
unpack
,
pixels
,
mImageArray
[
faceIndex
][
level
]))
{
{
commitRect
(
faceIndex
(
target
)
,
level
,
xoffset
,
yoffset
,
width
,
height
);
commitRect
(
faceIndex
,
level
,
xoffset
,
yoffset
,
width
,
height
);
}
}
}
}
void
TextureCubeMap
::
subImageCompressed
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLsizei
imageSize
,
const
void
*
pixels
)
void
TextureCubeMap
::
subImageCompressed
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLsizei
imageSize
,
const
void
*
pixels
)
{
{
if
(
Texture
::
subImageCompressed
(
xoffset
,
yoffset
,
0
,
width
,
height
,
1
,
format
,
imageSize
,
pixels
,
mImageArray
[
faceIndex
(
target
)][
level
]))
int
faceIndex
=
targetToIndex
(
target
);
if
(
Texture
::
subImageCompressed
(
xoffset
,
yoffset
,
0
,
width
,
height
,
1
,
format
,
imageSize
,
pixels
,
mImageArray
[
faceIndex
][
level
]))
{
{
commitRect
(
faceIndex
(
target
)
,
level
,
xoffset
,
yoffset
,
width
,
height
);
commitRect
(
faceIndex
,
level
,
xoffset
,
yoffset
,
width
,
height
);
}
}
}
}
...
@@ -1173,9 +1176,9 @@ bool TextureCubeMap::isCubeComplete() const
...
@@ -1173,9 +1176,9 @@ bool TextureCubeMap::isCubeComplete() const
return
false
;
return
false
;
}
}
for
(
unsigned
int
face
=
1
;
face
<
6
;
face
++
)
for
(
int
faceIndex
=
1
;
faceIndex
<
6
;
faceIndex
++
)
{
{
const
rx
::
Image
&
faceBaseImage
=
*
mImageArray
[
face
][
0
];
const
rx
::
Image
&
faceBaseImage
=
*
mImageArray
[
face
Index
][
0
];
if
(
faceBaseImage
.
getWidth
()
!=
baseWidth
||
if
(
faceBaseImage
.
getWidth
()
!=
baseWidth
||
faceBaseImage
.
getHeight
()
!=
baseHeight
||
faceBaseImage
.
getHeight
()
!=
baseHeight
||
...
@@ -1217,9 +1220,9 @@ bool TextureCubeMap::isMipmapCubeComplete() const
...
@@ -1217,9 +1220,9 @@ bool TextureCubeMap::isMipmapCubeComplete() const
return
true
;
return
true
;
}
}
bool
TextureCubeMap
::
isFaceLevelComplete
(
int
face
,
int
level
)
const
bool
TextureCubeMap
::
isFaceLevelComplete
(
int
face
Index
,
int
level
)
const
{
{
ASSERT
(
level
>=
0
&&
face
<
6
&&
level
<
(
int
)
ArraySize
(
mImageArray
[
face
])
&&
mImageArray
[
face
][
level
]
!=
NULL
);
ASSERT
(
level
>=
0
&&
face
Index
<
6
&&
level
<
(
int
)
ArraySize
(
mImageArray
[
faceIndex
])
&&
mImageArray
[
faceIndex
][
level
]
!=
NULL
);
if
(
isImmutable
())
if
(
isImmutable
())
{
{
...
@@ -1242,7 +1245,7 @@ bool TextureCubeMap::isFaceLevelComplete(int face, int level) const
...
@@ -1242,7 +1245,7 @@ bool TextureCubeMap::isFaceLevelComplete(int face, int level) const
}
}
// Check that non-zero levels are consistent with the base level.
// Check that non-zero levels are consistent with the base level.
const
rx
::
Image
*
faceLevelImage
=
mImageArray
[
face
][
level
];
const
rx
::
Image
*
faceLevelImage
=
mImageArray
[
face
Index
][
level
];
if
(
faceLevelImage
->
getInternalFormat
()
!=
getBaseLevelInternalFormat
())
if
(
faceLevelImage
->
getInternalFormat
()
!=
getBaseLevelInternalFormat
())
{
{
...
@@ -1285,11 +1288,11 @@ void TextureCubeMap::createTexture()
...
@@ -1285,11 +1288,11 @@ void TextureCubeMap::createTexture()
{
{
int
levels
=
levelCount
();
int
levels
=
levelCount
();
for
(
int
face
=
0
;
face
<
6
;
face
++
)
for
(
int
face
Index
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
{
{
mImageArray
[
face
][
level
]
->
setManagedSurface
(
mTexStorage
,
face
,
level
);
mImageArray
[
face
Index
][
level
]
->
setManagedSurface
(
mTexStorage
,
faceIndex
,
level
);
}
}
}
}
}
}
...
@@ -1313,14 +1316,14 @@ void TextureCubeMap::updateTexture()
...
@@ -1313,14 +1316,14 @@ void TextureCubeMap::updateTexture()
}
}
}
}
void
TextureCubeMap
::
updateTextureFaceLevel
(
int
face
,
int
level
)
void
TextureCubeMap
::
updateTextureFaceLevel
(
int
face
Index
,
int
level
)
{
{
ASSERT
(
level
>=
0
&&
face
<
6
&&
level
<
(
int
)
ArraySize
(
mImageArray
[
face
])
&&
mImageArray
[
face
][
level
]
!=
NULL
);
ASSERT
(
level
>=
0
&&
face
Index
<
6
&&
level
<
(
int
)
ArraySize
(
mImageArray
[
faceIndex
])
&&
mImageArray
[
faceIndex
][
level
]
!=
NULL
);
rx
::
Image
*
image
=
mImageArray
[
face
][
level
];
rx
::
Image
*
image
=
mImageArray
[
face
Index
][
level
];
if
(
image
->
isDirty
())
if
(
image
->
isDirty
())
{
{
commitRect
(
face
,
level
,
0
,
0
,
image
->
getWidth
(),
image
->
getHeight
());
commitRect
(
face
Index
,
level
,
0
,
0
,
image
->
getWidth
(),
image
->
getHeight
());
}
}
}
}
...
@@ -1369,7 +1372,7 @@ void TextureCubeMap::setImage(int faceIndex, GLint level, GLsizei width, GLsizei
...
@@ -1369,7 +1372,7 @@ void TextureCubeMap::setImage(int faceIndex, GLint level, GLsizei width, GLsizei
Texture
::
setImage
(
unpack
,
type
,
pixels
,
mImageArray
[
faceIndex
][
level
]);
Texture
::
setImage
(
unpack
,
type
,
pixels
,
mImageArray
[
faceIndex
][
level
]);
}
}
unsigned
int
TextureCubeMap
::
faceIndex
(
GLenum
face
)
int
TextureCubeMap
::
targetToIndex
(
GLenum
target
)
{
{
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_NEGATIVE_X
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
1
);
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_NEGATIVE_X
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
1
);
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_POSITIVE_Y
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
2
);
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_POSITIVE_Y
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
2
);
...
@@ -1377,17 +1380,17 @@ unsigned int TextureCubeMap::faceIndex(GLenum face)
...
@@ -1377,17 +1380,17 @@ unsigned int TextureCubeMap::faceIndex(GLenum face)
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_POSITIVE_Z
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
4
);
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_POSITIVE_Z
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
4
);
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
5
);
META_ASSERT
(
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
==
5
);
return
face
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
;
return
target
-
GL_TEXTURE_CUBE_MAP_POSITIVE_X
;
}
}
void
TextureCubeMap
::
redefineImage
(
int
face
,
GLint
level
,
GLenum
internalformat
,
GLsizei
width
,
GLsizei
height
)
void
TextureCubeMap
::
redefineImage
(
int
face
Index
,
GLint
level
,
GLenum
internalformat
,
GLsizei
width
,
GLsizei
height
)
{
{
// If there currently is a corresponding storage texture image, it has these parameters
// If there currently is a corresponding storage texture image, it has these parameters
const
int
storageWidth
=
std
::
max
(
1
,
getBaseLevelWidth
()
>>
level
);
const
int
storageWidth
=
std
::
max
(
1
,
getBaseLevelWidth
()
>>
level
);
const
int
storageHeight
=
std
::
max
(
1
,
getBaseLevelHeight
()
>>
level
);
const
int
storageHeight
=
std
::
max
(
1
,
getBaseLevelHeight
()
>>
level
);
const
GLenum
storageFormat
=
getBaseLevelInternalFormat
();
const
GLenum
storageFormat
=
getBaseLevelInternalFormat
();
mImageArray
[
face
][
level
]
->
redefine
(
mRenderer
,
GL_TEXTURE_CUBE_MAP
,
internalformat
,
width
,
height
,
1
,
false
);
mImageArray
[
face
Index
][
level
]
->
redefine
(
mRenderer
,
GL_TEXTURE_CUBE_MAP
,
internalformat
,
width
,
height
,
1
,
false
);
if
(
mTexStorage
)
if
(
mTexStorage
)
{
{
...
@@ -1398,11 +1401,11 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat,
...
@@ -1398,11 +1401,11 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat,
height
!=
storageHeight
||
height
!=
storageHeight
||
internalformat
!=
storageFormat
)
// Discard mismatched storage
internalformat
!=
storageFormat
)
// Discard mismatched storage
{
{
for
(
int
i
=
0
;
i
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
;
i
++
)
for
(
int
level
=
0
;
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
;
level
++
)
{
{
for
(
int
f
=
0
;
f
<
6
;
f
++
)
for
(
int
f
aceIndex
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
mImageArray
[
f
][
i
]
->
markDirty
();
mImageArray
[
f
aceIndex
][
level
]
->
markDirty
();
}
}
}
}
...
@@ -1416,21 +1419,21 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat,
...
@@ -1416,21 +1419,21 @@ void TextureCubeMap::redefineImage(int face, GLint level, GLenum internalformat,
void
TextureCubeMap
::
copyImage
(
GLenum
target
,
GLint
level
,
GLenum
format
,
GLint
x
,
GLint
y
,
GLsizei
width
,
GLsizei
height
,
Framebuffer
*
source
)
void
TextureCubeMap
::
copyImage
(
GLenum
target
,
GLint
level
,
GLenum
format
,
GLint
x
,
GLint
y
,
GLsizei
width
,
GLsizei
height
,
Framebuffer
*
source
)
{
{
unsigned
int
faceindex
=
face
Index
(
target
);
int
faceIndex
=
targetTo
Index
(
target
);
GLuint
clientVersion
=
mRenderer
->
getCurrentClientVersion
();
GLuint
clientVersion
=
mRenderer
->
getCurrentClientVersion
();
GLenum
sizedInternalFormat
=
IsSizedInternalFormat
(
format
,
clientVersion
)
?
format
GLenum
sizedInternalFormat
=
IsSizedInternalFormat
(
format
,
clientVersion
)
?
format
:
GetSizedInternalFormat
(
format
,
GL_UNSIGNED_BYTE
,
clientVersion
);
:
GetSizedInternalFormat
(
format
,
GL_UNSIGNED_BYTE
,
clientVersion
);
redefineImage
(
face
i
ndex
,
level
,
sizedInternalFormat
,
width
,
height
);
redefineImage
(
face
I
ndex
,
level
,
sizedInternalFormat
,
width
,
height
);
if
(
!
mImageArray
[
face
i
ndex
][
level
]
->
isRenderableFormat
())
if
(
!
mImageArray
[
face
I
ndex
][
level
]
->
isRenderableFormat
())
{
{
mImageArray
[
face
i
ndex
][
level
]
->
copy
(
0
,
0
,
0
,
x
,
y
,
width
,
height
,
source
);
mImageArray
[
face
I
ndex
][
level
]
->
copy
(
0
,
0
,
0
,
x
,
y
,
width
,
height
,
source
);
mDirtyImages
=
true
;
mDirtyImages
=
true
;
}
}
else
else
{
{
ensureRenderTarget
();
ensureRenderTarget
();
mImageArray
[
face
i
ndex
][
level
]
->
markClean
();
mImageArray
[
face
I
ndex
][
level
]
->
markClean
();
ASSERT
(
width
==
height
);
ASSERT
(
width
==
height
);
...
@@ -1449,23 +1452,23 @@ void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint
...
@@ -1449,23 +1452,23 @@ void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint
void
TextureCubeMap
::
copySubImage
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLint
zoffset
,
GLint
x
,
GLint
y
,
GLsizei
width
,
GLsizei
height
,
Framebuffer
*
source
)
void
TextureCubeMap
::
copySubImage
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLint
zoffset
,
GLint
x
,
GLint
y
,
GLsizei
width
,
GLsizei
height
,
Framebuffer
*
source
)
{
{
GLsizei
size
=
mImageArray
[
faceIndex
(
target
)][
level
]
->
getWidth
();
int
faceIndex
=
targetToIndex
(
target
);
GLsizei
size
=
mImageArray
[
faceIndex
][
level
]
->
getWidth
();
if
(
xoffset
+
width
>
size
||
yoffset
+
height
>
size
||
zoffset
!=
0
)
if
(
xoffset
+
width
>
size
||
yoffset
+
height
>
size
||
zoffset
!=
0
)
{
{
return
gl
::
error
(
GL_INVALID_VALUE
);
return
gl
::
error
(
GL_INVALID_VALUE
);
}
}
unsigned
int
face
=
faceIndex
(
target
);
// We can only make our texture storage to a render target if the level we're copying *to* is complete
// We can only make our texture storage to a render target if the level we're copying *to* is complete
// and the base level is cube-complete. The base level must be cube complete (common case) because we cannot
// and the base level is cube-complete. The base level must be cube complete (common case) because we cannot
// rely on the "getBaseLevel*" methods reliably otherwise.
// rely on the "getBaseLevel*" methods reliably otherwise.
bool
canCreateRenderTarget
=
isFaceLevelComplete
(
face
,
level
)
&&
isCubeComplete
();
bool
canCreateRenderTarget
=
isFaceLevelComplete
(
face
Index
,
level
)
&&
isCubeComplete
();
if
(
!
mImageArray
[
face
][
level
]
->
isRenderableFormat
()
||
(
!
mTexStorage
&&
!
canCreateRenderTarget
))
if
(
!
mImageArray
[
face
Index
][
level
]
->
isRenderableFormat
()
||
(
!
mTexStorage
&&
!
canCreateRenderTarget
))
{
{
mImageArray
[
face
][
level
]
->
copy
(
0
,
0
,
0
,
x
,
y
,
width
,
height
,
source
);
mImageArray
[
face
Index
][
level
]
->
copy
(
0
,
0
,
0
,
x
,
y
,
width
,
height
,
source
);
mDirtyImages
=
true
;
mDirtyImages
=
true
;
}
}
else
else
...
@@ -1474,7 +1477,7 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi
...
@@ -1474,7 +1477,7 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi
if
(
level
<
levelCount
())
if
(
level
<
levelCount
())
{
{
updateTextureFaceLevel
(
face
,
level
);
updateTextureFaceLevel
(
face
Index
,
level
);
GLuint
clientVersion
=
mRenderer
->
getCurrentClientVersion
();
GLuint
clientVersion
=
mRenderer
->
getCurrentClientVersion
();
...
@@ -1499,17 +1502,17 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
...
@@ -1499,17 +1502,17 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
{
{
GLsizei
mipSize
=
std
::
max
(
1
,
size
>>
level
);
GLsizei
mipSize
=
std
::
max
(
1
,
size
>>
level
);
for
(
int
face
=
0
;
face
<
6
;
face
++
)
for
(
int
face
Index
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
mImageArray
[
face
][
level
]
->
redefine
(
mRenderer
,
GL_TEXTURE_CUBE_MAP
,
internalformat
,
mipSize
,
mipSize
,
1
,
true
);
mImageArray
[
face
Index
][
level
]
->
redefine
(
mRenderer
,
GL_TEXTURE_CUBE_MAP
,
internalformat
,
mipSize
,
mipSize
,
1
,
true
);
}
}
}
}
for
(
int
level
=
levels
;
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
;
level
++
)
for
(
int
level
=
levels
;
level
<
IMPLEMENTATION_MAX_TEXTURE_LEVELS
;
level
++
)
{
{
for
(
int
face
=
0
;
face
<
6
;
face
++
)
for
(
int
face
Index
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
mImageArray
[
face
][
level
]
->
redefine
(
mRenderer
,
GL_TEXTURE_CUBE_MAP
,
GL_NONE
,
0
,
0
,
0
,
true
);
mImageArray
[
face
Index
][
level
]
->
redefine
(
mRenderer
,
GL_TEXTURE_CUBE_MAP
,
GL_NONE
,
0
,
0
,
0
,
true
);
}
}
}
}
...
@@ -1517,11 +1520,11 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
...
@@ -1517,11 +1520,11 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
{
{
int
levels
=
levelCount
();
int
levels
=
levelCount
();
for
(
int
face
=
0
;
face
<
6
;
face
++
)
for
(
int
face
Index
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
for
(
int
level
=
0
;
level
<
levels
;
level
++
)
{
{
mImageArray
[
face
][
level
]
->
setManagedSurface
(
mTexStorage
,
face
,
level
);
mImageArray
[
face
Index
][
level
]
->
setManagedSurface
(
mTexStorage
,
faceIndex
,
level
);
}
}
}
}
}
}
...
@@ -1530,36 +1533,36 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
...
@@ -1530,36 +1533,36 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
void
TextureCubeMap
::
generateMipmaps
()
void
TextureCubeMap
::
generateMipmaps
()
{
{
// Purge array levels 1 through q and reset them to represent the generated mipmap levels.
// Purge array levels 1 through q and reset them to represent the generated mipmap levels.
unsigned
int
q
=
log2
(
getBaseLevelWidth
());
int
q
=
log2
(
getBaseLevelWidth
());
for
(
unsigned
int
f
=
0
;
f
<
6
;
f
++
)
for
(
int
faceIndex
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
for
(
unsigned
int
i
=
1
;
i
<=
q
;
i
++
)
for
(
int
level
=
1
;
level
<=
q
;
level
++
)
{
{
redefineImage
(
f
,
i
,
mImageArray
[
f
][
0
]
->
getInternalFormat
(),
redefineImage
(
f
aceIndex
,
level
,
mImageArray
[
faceIndex
][
0
]
->
getInternalFormat
(),
std
::
max
(
mImageArray
[
f
][
0
]
->
getWidth
()
>>
i
,
1
),
std
::
max
(
mImageArray
[
f
aceIndex
][
0
]
->
getWidth
()
>>
level
,
1
),
std
::
max
(
mImageArray
[
f
][
0
]
->
getWidth
()
>>
i
,
1
));
std
::
max
(
mImageArray
[
f
aceIndex
][
0
]
->
getWidth
()
>>
level
,
1
));
}
}
}
}
if
(
mTexStorage
&&
mTexStorage
->
isRenderTarget
())
if
(
mTexStorage
&&
mTexStorage
->
isRenderTarget
())
{
{
for
(
unsigned
int
f
=
0
;
f
<
6
;
f
++
)
for
(
int
faceIndex
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
for
(
unsigned
int
i
=
1
;
i
<=
q
;
i
++
)
for
(
int
level
=
1
;
level
<=
q
;
level
++
)
{
{
mTexStorage
->
generateMipmap
(
f
,
i
);
mTexStorage
->
generateMipmap
(
f
aceIndex
,
level
);
mImageArray
[
f
][
i
]
->
markClean
();
mImageArray
[
f
aceIndex
][
level
]
->
markClean
();
}
}
}
}
}
}
else
else
{
{
for
(
unsigned
int
f
=
0
;
f
<
6
;
f
++
)
for
(
int
faceIndex
=
0
;
faceIndex
<
6
;
faceIndex
++
)
{
{
for
(
unsigned
int
i
=
1
;
i
<=
q
;
i
++
)
for
(
int
level
=
1
;
level
<=
q
;
level
++
)
{
{
mRenderer
->
generateMipmap
(
mImageArray
[
f
][
i
],
mImageArray
[
f
][
i
-
1
]);
mRenderer
->
generateMipmap
(
mImageArray
[
f
aceIndex
][
level
],
mImageArray
[
faceIndex
][
level
-
1
]);
}
}
}
}
}
}
...
@@ -1579,21 +1582,21 @@ Renderbuffer *TextureCubeMap::getRenderbuffer(GLenum target, GLint level)
...
@@ -1579,21 +1582,21 @@ Renderbuffer *TextureCubeMap::getRenderbuffer(GLenum target, GLint level)
return
gl
::
error
(
GL_INVALID_OPERATION
,
(
Renderbuffer
*
)
NULL
);
return
gl
::
error
(
GL_INVALID_OPERATION
,
(
Renderbuffer
*
)
NULL
);
}
}
unsigned
int
face
=
face
Index
(
target
);
int
faceIndex
=
targetTo
Index
(
target
);
Renderbuffer
*
renderBuffer
=
mRenderbufferProxies
.
get
(
level
,
face
);
Renderbuffer
*
renderBuffer
=
mRenderbufferProxies
.
get
(
level
,
face
Index
);
if
(
!
renderBuffer
)
if
(
!
renderBuffer
)
{
{
renderBuffer
=
new
Renderbuffer
(
mRenderer
,
id
(),
new
RenderbufferTextureCubeMap
(
this
,
target
,
level
));
renderBuffer
=
new
Renderbuffer
(
mRenderer
,
id
(),
new
RenderbufferTextureCubeMap
(
this
,
target
,
level
));
mRenderbufferProxies
.
add
(
level
,
face
,
renderBuffer
);
mRenderbufferProxies
.
add
(
level
,
face
Index
,
renderBuffer
);
}
}
return
renderBuffer
;
return
renderBuffer
;
}
}
unsigned
int
TextureCubeMap
::
getRenderTargetSerial
(
GLenum
faceT
arget
,
GLint
level
)
unsigned
int
TextureCubeMap
::
getRenderTargetSerial
(
GLenum
t
arget
,
GLint
level
)
{
{
return
(
ensureRenderTarget
()
?
mTexStorage
->
getRenderTargetSerial
(
faceT
arget
,
level
)
:
0
);
return
(
ensureRenderTarget
()
?
mTexStorage
->
getRenderTargetSerial
(
t
arget
,
level
)
:
0
);
}
}
rx
::
RenderTarget
*
TextureCubeMap
::
getRenderTarget
(
GLenum
target
,
GLint
level
)
rx
::
RenderTarget
*
TextureCubeMap
::
getRenderTarget
(
GLenum
target
,
GLint
level
)
...
@@ -1606,7 +1609,7 @@ rx::RenderTarget *TextureCubeMap::getRenderTarget(GLenum target, GLint level)
...
@@ -1606,7 +1609,7 @@ rx::RenderTarget *TextureCubeMap::getRenderTarget(GLenum target, GLint level)
return
NULL
;
return
NULL
;
}
}
updateTextureFaceLevel
(
face
Index
(
target
),
level
);
updateTextureFaceLevel
(
targetTo
Index
(
target
),
level
);
// ensure this is NOT a depth texture
// ensure this is NOT a depth texture
if
(
isDepth
(
target
,
level
))
if
(
isDepth
(
target
,
level
))
...
@@ -1627,7 +1630,7 @@ rx::RenderTarget *TextureCubeMap::getDepthStencil(GLenum target, GLint level)
...
@@ -1627,7 +1630,7 @@ rx::RenderTarget *TextureCubeMap::getDepthStencil(GLenum target, GLint level)
return
NULL
;
return
NULL
;
}
}
updateTextureFaceLevel
(
face
Index
(
target
),
level
);
updateTextureFaceLevel
(
targetTo
Index
(
target
),
level
);
// ensure this is a depth texture
// ensure this is a depth texture
if
(
!
isDepth
(
target
,
level
))
if
(
!
isDepth
(
target
,
level
))
...
...
src/libGLESv2/Texture.h
View file @
2db197cd
...
@@ -235,7 +235,7 @@ class TextureCubeMap : public Texture
...
@@ -235,7 +235,7 @@ class TextureCubeMap : public Texture
void
setImagePosZ
(
GLint
level
,
GLsizei
width
,
GLsizei
height
,
GLenum
internalFormat
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
setImagePosZ
(
GLint
level
,
GLsizei
width
,
GLsizei
height
,
GLenum
internalFormat
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
setImageNegZ
(
GLint
level
,
GLsizei
width
,
GLsizei
height
,
GLenum
internalFormat
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
setImageNegZ
(
GLint
level
,
GLsizei
width
,
GLsizei
height
,
GLenum
internalFormat
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
setCompressedImage
(
GLenum
face
,
GLint
level
,
GLenum
format
,
GLsizei
width
,
GLsizei
height
,
GLsizei
imageSize
,
const
void
*
pixels
);
void
setCompressedImage
(
GLenum
target
,
GLint
level
,
GLenum
format
,
GLsizei
width
,
GLsizei
height
,
GLsizei
imageSize
,
const
void
*
pixels
);
void
subImage
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
subImage
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
subImageCompressed
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLsizei
imageSize
,
const
void
*
pixels
);
void
subImageCompressed
(
GLenum
target
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
,
GLenum
format
,
GLsizei
imageSize
,
const
void
*
pixels
);
...
@@ -249,9 +249,9 @@ class TextureCubeMap : public Texture
...
@@ -249,9 +249,9 @@ class TextureCubeMap : public Texture
virtual
void
generateMipmaps
();
virtual
void
generateMipmaps
();
Renderbuffer
*
getRenderbuffer
(
GLenum
target
,
GLint
level
);
Renderbuffer
*
getRenderbuffer
(
GLenum
target
,
GLint
level
);
unsigned
int
getRenderTargetSerial
(
GLenum
faceT
arget
,
GLint
level
);
unsigned
int
getRenderTargetSerial
(
GLenum
t
arget
,
GLint
level
);
static
unsigned
int
faceIndex
(
GLenum
face
);
static
int
targetToIndex
(
GLenum
target
);
protected
:
protected
:
friend
class
RenderbufferTextureCubeMap
;
friend
class
RenderbufferTextureCubeMap
;
...
@@ -269,8 +269,8 @@ class TextureCubeMap : public Texture
...
@@ -269,8 +269,8 @@ class TextureCubeMap : public Texture
virtual
const
rx
::
Image
*
getBaseLevelImage
()
const
;
virtual
const
rx
::
Image
*
getBaseLevelImage
()
const
;
bool
isMipmapCubeComplete
()
const
;
bool
isMipmapCubeComplete
()
const
;
bool
isFaceLevelComplete
(
int
face
,
int
level
)
const
;
bool
isFaceLevelComplete
(
int
face
Index
,
int
level
)
const
;
void
updateTextureFaceLevel
(
int
face
,
int
level
);
void
updateTextureFaceLevel
(
int
face
Index
,
int
level
);
void
setImage
(
int
faceIndex
,
GLint
level
,
GLsizei
width
,
GLsizei
height
,
GLenum
internalFormat
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
setImage
(
int
faceIndex
,
GLint
level
,
GLsizei
width
,
GLsizei
height
,
GLenum
internalFormat
,
GLenum
format
,
GLenum
type
,
const
PixelUnpackState
&
unpack
,
const
void
*
pixels
);
void
commitRect
(
int
faceIndex
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
);
void
commitRect
(
int
faceIndex
,
GLint
level
,
GLint
xoffset
,
GLint
yoffset
,
GLsizei
width
,
GLsizei
height
);
...
...
src/libGLESv2/renderer/TextureStorage.cpp
View file @
2db197cd
...
@@ -118,14 +118,14 @@ RenderTarget *TextureStorageInterfaceCube::getRenderTarget(GLenum faceTarget, GL
...
@@ -118,14 +118,14 @@ RenderTarget *TextureStorageInterfaceCube::getRenderTarget(GLenum faceTarget, GL
return
mInstance
->
getRenderTargetFace
(
faceTarget
,
level
);
return
mInstance
->
getRenderTargetFace
(
faceTarget
,
level
);
}
}
void
TextureStorageInterfaceCube
::
generateMipmap
(
int
face
,
int
level
)
void
TextureStorageInterfaceCube
::
generateMipmap
(
int
face
Index
,
int
level
)
{
{
mInstance
->
generateMipmap
(
face
,
level
);
mInstance
->
generateMipmap
(
face
Index
,
level
);
}
}
unsigned
int
TextureStorageInterfaceCube
::
getRenderTargetSerial
(
GLenum
target
,
GLint
level
)
const
unsigned
int
TextureStorageInterfaceCube
::
getRenderTargetSerial
(
GLenum
target
,
GLint
level
)
const
{
{
return
mFirstRenderTargetSerial
+
(
level
*
6
)
+
gl
::
TextureCubeMap
::
face
Index
(
target
);
return
mFirstRenderTargetSerial
+
(
level
*
6
)
+
gl
::
TextureCubeMap
::
targetTo
Index
(
target
);
}
}
TextureStorageInterface3D
::
TextureStorageInterface3D
(
Renderer
*
renderer
,
int
levels
,
GLenum
internalformat
,
bool
renderTarget
,
TextureStorageInterface3D
::
TextureStorageInterface3D
(
Renderer
*
renderer
,
int
levels
,
GLenum
internalformat
,
bool
renderTarget
,
...
...
src/libGLESv2/renderer/TextureStorage.h
View file @
2db197cd
...
@@ -92,7 +92,7 @@ class TextureStorageInterfaceCube : public TextureStorageInterface
...
@@ -92,7 +92,7 @@ class TextureStorageInterfaceCube : public TextureStorageInterface
TextureStorageInterfaceCube
(
Renderer
*
renderer
,
int
levels
,
GLenum
internalformat
,
bool
renderTarget
,
int
size
);
TextureStorageInterfaceCube
(
Renderer
*
renderer
,
int
levels
,
GLenum
internalformat
,
bool
renderTarget
,
int
size
);
virtual
~
TextureStorageInterfaceCube
();
virtual
~
TextureStorageInterfaceCube
();
void
generateMipmap
(
int
face
,
int
level
);
void
generateMipmap
(
int
face
Index
,
int
level
);
RenderTarget
*
getRenderTarget
(
GLenum
faceTarget
,
GLint
level
)
const
;
RenderTarget
*
getRenderTarget
(
GLenum
faceTarget
,
GLint
level
)
const
;
virtual
unsigned
int
getRenderTargetSerial
(
GLenum
target
,
GLint
level
)
const
;
virtual
unsigned
int
getRenderTargetSerial
(
GLenum
target
,
GLint
level
)
const
;
...
...
src/libGLESv2/renderer/d3d11/TextureStorage11.cpp
View file @
2db197cd
...
@@ -515,10 +515,10 @@ ID3D11Resource *TextureStorage11_Cube::getBaseTexture() const
...
@@ -515,10 +515,10 @@ ID3D11Resource *TextureStorage11_Cube::getBaseTexture() const
RenderTarget
*
TextureStorage11_Cube
::
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
)
RenderTarget
*
TextureStorage11_Cube
::
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
)
{
{
unsigned
int
faceIdx
=
gl
::
TextureCubeMap
::
faceIndex
(
faceTarget
);
if
(
level
>=
0
&&
level
<
static_cast
<
int
>
(
mMipLevels
))
if
(
level
>=
0
&&
level
<
static_cast
<
int
>
(
mMipLevels
))
{
{
if
(
!
mRenderTarget
[
faceIdx
][
level
])
int
faceIndex
=
gl
::
TextureCubeMap
::
targetToIndex
(
faceTarget
);
if
(
!
mRenderTarget
[
faceIndex
][
level
])
{
{
ID3D11Device
*
device
=
mRenderer
->
getDevice
();
ID3D11Device
*
device
=
mRenderer
->
getDevice
();
HRESULT
result
;
HRESULT
result
;
...
@@ -528,7 +528,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
...
@@ -528,7 +528,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
srvDesc
.
ViewDimension
=
D3D11_SRV_DIMENSION_TEXTURE2DARRAY
;
// Will be used with Texture2D sampler, not TextureCube
srvDesc
.
ViewDimension
=
D3D11_SRV_DIMENSION_TEXTURE2DARRAY
;
// Will be used with Texture2D sampler, not TextureCube
srvDesc
.
Texture2DArray
.
MostDetailedMip
=
level
;
srvDesc
.
Texture2DArray
.
MostDetailedMip
=
level
;
srvDesc
.
Texture2DArray
.
MipLevels
=
1
;
srvDesc
.
Texture2DArray
.
MipLevels
=
1
;
srvDesc
.
Texture2DArray
.
FirstArraySlice
=
faceI
d
x
;
srvDesc
.
Texture2DArray
.
FirstArraySlice
=
faceI
nde
x
;
srvDesc
.
Texture2DArray
.
ArraySize
=
1
;
srvDesc
.
Texture2DArray
.
ArraySize
=
1
;
ID3D11ShaderResourceView
*
srv
;
ID3D11ShaderResourceView
*
srv
;
...
@@ -546,7 +546,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
...
@@ -546,7 +546,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
rtvDesc
.
Format
=
mRenderTargetFormat
;
rtvDesc
.
Format
=
mRenderTargetFormat
;
rtvDesc
.
ViewDimension
=
D3D11_RTV_DIMENSION_TEXTURE2DARRAY
;
rtvDesc
.
ViewDimension
=
D3D11_RTV_DIMENSION_TEXTURE2DARRAY
;
rtvDesc
.
Texture2DArray
.
MipSlice
=
level
;
rtvDesc
.
Texture2DArray
.
MipSlice
=
level
;
rtvDesc
.
Texture2DArray
.
FirstArraySlice
=
faceI
d
x
;
rtvDesc
.
Texture2DArray
.
FirstArraySlice
=
faceI
nde
x
;
rtvDesc
.
Texture2DArray
.
ArraySize
=
1
;
rtvDesc
.
Texture2DArray
.
ArraySize
=
1
;
ID3D11RenderTargetView
*
rtv
;
ID3D11RenderTargetView
*
rtv
;
...
@@ -563,7 +563,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
...
@@ -563,7 +563,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
// also needs to keep a reference to the texture.
// also needs to keep a reference to the texture.
mTexture
->
AddRef
();
mTexture
->
AddRef
();
mRenderTarget
[
faceI
d
x
][
level
]
=
new
RenderTarget11
(
mRenderer
,
rtv
,
mTexture
,
srv
,
mRenderTarget
[
faceI
nde
x
][
level
]
=
new
RenderTarget11
(
mRenderer
,
rtv
,
mTexture
,
srv
,
std
::
max
(
mTextureWidth
>>
level
,
1U
),
std
::
max
(
mTextureWidth
>>
level
,
1U
),
std
::
max
(
mTextureHeight
>>
level
,
1U
),
std
::
max
(
mTextureHeight
>>
level
,
1U
),
1
);
1
);
...
@@ -575,7 +575,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
...
@@ -575,7 +575,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
dsvDesc
.
ViewDimension
=
D3D11_DSV_DIMENSION_TEXTURE2DARRAY
;
dsvDesc
.
ViewDimension
=
D3D11_DSV_DIMENSION_TEXTURE2DARRAY
;
dsvDesc
.
Flags
=
0
;
dsvDesc
.
Flags
=
0
;
dsvDesc
.
Texture2DArray
.
MipSlice
=
level
;
dsvDesc
.
Texture2DArray
.
MipSlice
=
level
;
dsvDesc
.
Texture2DArray
.
FirstArraySlice
=
faceI
d
x
;
dsvDesc
.
Texture2DArray
.
FirstArraySlice
=
faceI
nde
x
;
dsvDesc
.
Texture2DArray
.
ArraySize
=
1
;
dsvDesc
.
Texture2DArray
.
ArraySize
=
1
;
ID3D11DepthStencilView
*
dsv
;
ID3D11DepthStencilView
*
dsv
;
...
@@ -592,7 +592,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
...
@@ -592,7 +592,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
// also needs to keep a reference to the texture.
// also needs to keep a reference to the texture.
mTexture
->
AddRef
();
mTexture
->
AddRef
();
mRenderTarget
[
faceI
d
x
][
level
]
=
new
RenderTarget11
(
mRenderer
,
dsv
,
mTexture
,
srv
,
mRenderTarget
[
faceI
nde
x
][
level
]
=
new
RenderTarget11
(
mRenderer
,
dsv
,
mTexture
,
srv
,
std
::
max
(
mTextureWidth
>>
level
,
1U
),
std
::
max
(
mTextureWidth
>>
level
,
1U
),
std
::
max
(
mTextureHeight
>>
level
,
1U
),
std
::
max
(
mTextureHeight
>>
level
,
1U
),
1
);
1
);
...
@@ -603,7 +603,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
...
@@ -603,7 +603,7 @@ RenderTarget *TextureStorage11_Cube::getRenderTargetFace(GLenum faceTarget, int
}
}
}
}
return
mRenderTarget
[
faceI
d
x
][
level
];
return
mRenderTarget
[
faceI
nde
x
][
level
];
}
}
else
else
{
{
...
@@ -635,10 +635,10 @@ ID3D11ShaderResourceView *TextureStorage11_Cube::getSRV()
...
@@ -635,10 +635,10 @@ ID3D11ShaderResourceView *TextureStorage11_Cube::getSRV()
return
mSRV
;
return
mSRV
;
}
}
void
TextureStorage11_Cube
::
generateMipmap
(
int
face
,
int
level
)
void
TextureStorage11_Cube
::
generateMipmap
(
int
face
Index
,
int
level
)
{
{
RenderTarget11
*
source
=
RenderTarget11
::
makeRenderTarget11
(
getRenderTargetFace
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
,
level
-
1
));
RenderTarget11
*
source
=
RenderTarget11
::
makeRenderTarget11
(
getRenderTargetFace
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
Index
,
level
-
1
));
RenderTarget11
*
dest
=
RenderTarget11
::
makeRenderTarget11
(
getRenderTargetFace
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
,
level
));
RenderTarget11
*
dest
=
RenderTarget11
::
makeRenderTarget11
(
getRenderTargetFace
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
Index
,
level
));
generateMipmapLayer
(
source
,
dest
);
generateMipmapLayer
(
source
,
dest
);
}
}
...
...
src/libGLESv2/renderer/d3d11/TextureStorage11.h
View file @
2db197cd
...
@@ -109,7 +109,7 @@ class TextureStorage11_Cube : public TextureStorage11
...
@@ -109,7 +109,7 @@ class TextureStorage11_Cube : public TextureStorage11
virtual
ID3D11ShaderResourceView
*
getSRV
();
virtual
ID3D11ShaderResourceView
*
getSRV
();
virtual
RenderTarget
*
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
);
virtual
RenderTarget
*
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
);
virtual
void
generateMipmap
(
int
face
,
int
level
);
virtual
void
generateMipmap
(
int
face
Index
,
int
level
);
private
:
private
:
DISALLOW_COPY_AND_ASSIGN
(
TextureStorage11_Cube
);
DISALLOW_COPY_AND_ASSIGN
(
TextureStorage11_Cube
);
...
...
src/libGLESv2/renderer/d3d9/TextureStorage9.cpp
View file @
2db197cd
...
@@ -261,13 +261,13 @@ IDirect3DSurface9 *TextureStorage9_Cube::getCubeMapSurface(GLenum faceTarget, in
...
@@ -261,13 +261,13 @@ IDirect3DSurface9 *TextureStorage9_Cube::getCubeMapSurface(GLenum faceTarget, in
RenderTarget
*
TextureStorage9_Cube
::
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
)
RenderTarget
*
TextureStorage9_Cube
::
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
)
{
{
return
mRenderTarget
[
gl
::
TextureCubeMap
::
face
Index
(
faceTarget
)];
return
mRenderTarget
[
gl
::
TextureCubeMap
::
targetTo
Index
(
faceTarget
)];
}
}
void
TextureStorage9_Cube
::
generateMipmap
(
int
face
,
int
level
)
void
TextureStorage9_Cube
::
generateMipmap
(
int
face
Index
,
int
level
)
{
{
IDirect3DSurface9
*
upper
=
getCubeMapSurface
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
,
level
-
1
,
false
);
IDirect3DSurface9
*
upper
=
getCubeMapSurface
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
Index
,
level
-
1
,
false
);
IDirect3DSurface9
*
lower
=
getCubeMapSurface
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
,
level
,
true
);
IDirect3DSurface9
*
lower
=
getCubeMapSurface
(
GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
face
Index
,
level
,
true
);
if
(
upper
!=
NULL
&&
lower
!=
NULL
)
if
(
upper
!=
NULL
&&
lower
!=
NULL
)
{
{
...
...
src/libGLESv2/renderer/d3d9/TextureStorage9.h
View file @
2db197cd
...
@@ -91,7 +91,7 @@ class TextureStorage9_Cube : public TextureStorage9
...
@@ -91,7 +91,7 @@ class TextureStorage9_Cube : public TextureStorage9
IDirect3DSurface9
*
getCubeMapSurface
(
GLenum
faceTarget
,
int
level
,
bool
dirty
);
IDirect3DSurface9
*
getCubeMapSurface
(
GLenum
faceTarget
,
int
level
,
bool
dirty
);
virtual
RenderTarget
*
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
);
virtual
RenderTarget
*
getRenderTargetFace
(
GLenum
faceTarget
,
int
level
);
virtual
IDirect3DBaseTexture9
*
getBaseTexture
()
const
;
virtual
IDirect3DBaseTexture9
*
getBaseTexture
()
const
;
virtual
void
generateMipmap
(
int
face
,
int
level
);
virtual
void
generateMipmap
(
int
face
Index
,
int
level
);
private
:
private
:
DISALLOW_COPY_AND_ASSIGN
(
TextureStorage9_Cube
);
DISALLOW_COPY_AND_ASSIGN
(
TextureStorage9_Cube
);
...
...
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