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
ce79dda1
Commit
ce79dda1
authored
Aug 30, 2013
by
Jamie Madill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change the varyings list type from a linked list to a vector type.
TRAC #23746 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods
parent
1cb333eb
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
13 deletions
+18
-13
ProgramBinary.cpp
src/libGLESv2/ProgramBinary.cpp
+12
-6
Shader.cpp
src/libGLESv2/Shader.cpp
+5
-4
Shader.h
src/libGLESv2/Shader.h
+1
-3
No files found.
src/libGLESv2/ProgramBinary.cpp
View file @
ce79dda1
...
@@ -932,8 +932,9 @@ int ProgramBinary::packVaryings(InfoLog &infoLog, const Varying *packing[][4], F
...
@@ -932,8 +932,9 @@ int ProgramBinary::packVaryings(InfoLog &infoLog, const Varying *packing[][4], F
fragmentShader
->
resetVaryingsRegisterAssignment
();
fragmentShader
->
resetVaryingsRegisterAssignment
();
for
(
VaryingList
::
iterator
varying
=
fragmentShader
->
mVaryings
.
begin
();
varying
!=
fragmentShader
->
mVaryings
.
end
();
varying
++
)
for
(
unsigned
int
varyingIndex
=
0
;
varyingIndex
<
fragmentShader
->
mVaryings
.
size
();
varyingIndex
++
)
{
{
Varying
*
varying
=
&
fragmentShader
->
mVaryings
[
varyingIndex
];
GLenum
transposedType
=
TransposeMatrixType
(
varying
->
type
);
GLenum
transposedType
=
TransposeMatrixType
(
varying
->
type
);
int
n
=
VariableRowCount
(
transposedType
)
*
varying
->
size
;
int
n
=
VariableRowCount
(
transposedType
)
*
varying
->
size
;
int
m
=
VariableColumnCount
(
transposedType
);
int
m
=
VariableColumnCount
(
transposedType
);
...
@@ -1141,12 +1142,14 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
...
@@ -1141,12 +1142,14 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
vertexShader
->
resetVaryingsRegisterAssignment
();
vertexShader
->
resetVaryingsRegisterAssignment
();
for
(
VaryingList
::
iterator
input
=
fragmentShader
->
mVaryings
.
begin
();
input
!=
fragmentShader
->
mVaryings
.
end
();
input
++
)
for
(
unsigned
int
fragVaryingIndex
=
0
;
fragVaryingIndex
<
fragmentShader
->
mVaryings
.
size
();
fragVaryingIndex
++
)
{
{
Varying
*
input
=
&
fragmentShader
->
mVaryings
[
fragVaryingIndex
];
bool
matched
=
false
;
bool
matched
=
false
;
for
(
VaryingList
::
iterator
output
=
vertexShader
->
mVaryings
.
begin
();
output
!=
vertexShader
->
mVaryings
.
end
();
output
++
)
for
(
unsigned
int
vertVaryingIndex
=
0
;
vertVaryingIndex
<
vertexShader
->
mVaryings
.
size
();
vertVaryingIndex
++
)
{
{
Varying
*
output
=
&
vertexShader
->
mVaryings
[
vertVaryingIndex
];
if
(
output
->
name
==
input
->
name
)
if
(
output
->
name
==
input
->
name
)
{
{
if
(
output
->
type
!=
input
->
type
||
output
->
size
!=
input
->
size
||
output
->
interpolation
!=
input
->
interpolation
)
if
(
output
->
type
!=
input
->
type
||
output
->
size
!=
input
->
size
||
output
->
interpolation
!=
input
->
interpolation
)
...
@@ -1296,8 +1299,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
...
@@ -1296,8 +1299,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
vertexHLSL
+=
" output.gl_FragCoord = gl_Position;
\n
"
;
vertexHLSL
+=
" output.gl_FragCoord = gl_Position;
\n
"
;
}
}
for
(
VaryingList
::
iterator
varying
=
vertexShader
->
mVaryings
.
begin
();
varying
!=
vertexShader
->
mVaryings
.
end
();
varying
++
)
for
(
unsigned
int
vertVaryingIndex
=
0
;
vertVaryingIndex
<
vertexShader
->
mVaryings
.
size
();
vertVaryingIndex
++
)
{
{
Varying
*
varying
=
&
vertexShader
->
mVaryings
[
vertVaryingIndex
];
if
(
varying
->
reg
>=
0
)
if
(
varying
->
reg
>=
0
)
{
{
for
(
int
i
=
0
;
i
<
varying
->
size
;
i
++
)
for
(
int
i
=
0
;
i
<
varying
->
size
;
i
++
)
...
@@ -1494,8 +1498,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
...
@@ -1494,8 +1498,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
}
}
}
}
for
(
VaryingList
::
iterator
varying
=
fragmentShader
->
mVaryings
.
begin
();
varying
!=
fragmentShader
->
mVaryings
.
end
();
varying
++
)
for
(
unsigned
int
varyingIndex
=
0
;
varyingIndex
<
fragmentShader
->
mVaryings
.
size
();
varyingIndex
++
)
{
{
Varying
*
varying
=
&
fragmentShader
->
mVaryings
[
varyingIndex
];
if
(
varying
->
reg
>=
0
)
if
(
varying
->
reg
>=
0
)
{
{
for
(
int
i
=
0
;
i
<
varying
->
size
;
i
++
)
for
(
int
i
=
0
;
i
<
varying
->
size
;
i
++
)
...
@@ -1574,8 +1579,9 @@ std::string ProgramBinary::generateVaryingHLSL(FragmentShader *fragmentShader, c
...
@@ -1574,8 +1579,9 @@ std::string ProgramBinary::generateVaryingHLSL(FragmentShader *fragmentShader, c
{
{
std
::
string
varyingHLSL
;
std
::
string
varyingHLSL
;
for
(
VaryingList
::
iterator
varying
=
fragmentShader
->
mVaryings
.
begin
();
varying
!=
fragmentShader
->
mVaryings
.
end
();
varying
++
)
for
(
unsigned
int
varyingIndex
=
0
;
varyingIndex
<
fragmentShader
->
mVaryings
.
size
();
varyingIndex
++
)
{
{
Varying
*
varying
=
&
fragmentShader
->
mVaryings
[
varyingIndex
];
if
(
varying
->
reg
>=
0
)
if
(
varying
->
reg
>=
0
)
{
{
for
(
int
i
=
0
;
i
<
varying
->
size
;
i
++
)
for
(
int
i
=
0
;
i
<
varying
->
size
;
i
++
)
...
...
src/libGLESv2/Shader.cpp
View file @
ce79dda1
...
@@ -241,10 +241,11 @@ void Shader::parseVaryings(void *compiler)
...
@@ -241,10 +241,11 @@ void Shader::parseVaryings(void *compiler)
void
Shader
::
resetVaryingsRegisterAssignment
()
void
Shader
::
resetVaryingsRegisterAssignment
()
{
{
for
(
VaryingList
::
iterator
var
=
mVaryings
.
begin
();
var
!=
mVaryings
.
end
();
var
++
)
for
(
unsigned
int
varyingIndex
=
0
;
varyingIndex
<
mVaryings
.
size
();
varyingIndex
++
)
{
{
var
->
reg
=
-
1
;
Varying
*
varying
=
&
mVaryings
[
varyingIndex
];
var
->
col
=
-
1
;
varying
->
reg
=
-
1
;
varying
->
col
=
-
1
;
}
}
}
}
...
@@ -525,7 +526,7 @@ void FragmentShader::compile()
...
@@ -525,7 +526,7 @@ void FragmentShader::compile()
compileToHLSL
(
mFragmentCompiler
);
compileToHLSL
(
mFragmentCompiler
);
parseVaryings
(
mFragmentCompiler
);
parseVaryings
(
mFragmentCompiler
);
mVaryings
.
sort
(
compareVarying
);
std
::
sort
(
mVaryings
.
begin
(),
mVaryings
.
end
(),
compareVarying
);
const
std
::
string
&
hlsl
=
getHLSL
();
const
std
::
string
&
hlsl
=
getHLSL
();
if
(
!
hlsl
.
empty
())
if
(
!
hlsl
.
empty
())
...
...
src/libGLESv2/Shader.h
View file @
ce79dda1
...
@@ -60,8 +60,6 @@ struct Varying
...
@@ -60,8 +60,6 @@ struct Varying
int
col
;
// First register element, assigned during link
int
col
;
// First register element, assigned during link
};
};
typedef
std
::
list
<
Varying
>
VaryingList
;
class
Shader
class
Shader
{
{
friend
class
ProgramBinary
;
friend
class
ProgramBinary
;
...
@@ -111,7 +109,7 @@ class Shader
...
@@ -111,7 +109,7 @@ class Shader
const
rx
::
Renderer
*
const
mRenderer
;
const
rx
::
Renderer
*
const
mRenderer
;
VaryingList
mVaryings
;
std
::
vector
<
Varying
>
mVaryings
;
bool
mUsesMultipleRenderTargets
;
bool
mUsesMultipleRenderTargets
;
bool
mUsesFragColor
;
bool
mUsesFragColor
;
...
...
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