Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
XDG Integration
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Silent mode is enabled
All outbound communications are blocked.
Learn more
.
Show more breadcrumbs
JennaHuntsman
XDG Integration
Commits
cd4babf9
Commit
cd4babf9
authored
10 years ago
by
Oz Linden
Browse files
Options
Downloads
Patches
Plain Diff
remove unused gpu table code, improve logging for gpu benchmarks
parent
0013a503
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
indra/newview/llfeaturemanager.cpp
+2
-199
2 additions, 199 deletions
indra/newview/llfeaturemanager.cpp
indra/newview/llfeaturemanager.h
+0
-3
0 additions, 3 deletions
indra/newview/llfeaturemanager.h
indra/newview/llglsandbox.cpp
+2
-2
2 additions, 2 deletions
indra/newview/llglsandbox.cpp
with
4 additions
and
204 deletions
indra/newview/llfeaturemanager.cpp
+
2
−
199
View file @
cd4babf9
...
@@ -76,9 +76,6 @@ const char FEATURE_TABLE_FILENAME[] = "featuretable%s.txt";
...
@@ -76,9 +76,6 @@ const char FEATURE_TABLE_FILENAME[] = "featuretable%s.txt";
const
char
FEATURE_TABLE_VER_FILENAME
[]
=
"featuretable%s.%s.txt"
;
const
char
FEATURE_TABLE_VER_FILENAME
[]
=
"featuretable%s.%s.txt"
;
#endif
#endif
const
char
GPU_TABLE_FILENAME
[]
=
"gpu_table.txt"
;
const
char
GPU_TABLE_VER_FILENAME
[]
=
"gpu_table.%s.txt"
;
LLFeatureInfo
::
LLFeatureInfo
(
const
std
::
string
&
name
,
const
BOOL
available
,
const
F32
level
)
LLFeatureInfo
::
LLFeatureInfo
(
const
std
::
string
&
name
,
const
BOOL
available
,
const
F32
level
)
:
mValid
(
TRUE
),
mName
(
name
),
mAvailable
(
available
),
mRecommendedLevel
(
level
)
:
mValid
(
TRUE
),
mName
(
name
),
mAvailable
(
available
),
mRecommendedLevel
(
level
)
{
{
...
@@ -428,6 +425,7 @@ bool LLFeatureManager::loadGPUClass()
...
@@ -428,6 +425,7 @@ bool LLFeatureManager::loadGPUClass()
{
//couldn't bench, use GLVersion
{
//couldn't bench, use GLVersion
#if LL_DARWIN
#if LL_DARWIN
//GLVersion is misleading on OSX, just default to class 3 if we can't bench
//GLVersion is misleading on OSX, just default to class 3 if we can't bench
LL_WARNS
()
<<
"Unable to get an accurate benchmark; defaulting to class 3"
<<
LL_ENDL
;
mGPUClass
=
GPU_CLASS_3
;
mGPUClass
=
GPU_CLASS_3
;
#else
#else
if
(
gGLManager
.
mGLVersion
<
2.
f
)
if
(
gGLManager
.
mGLVersion
<
2.
f
)
...
@@ -489,190 +487,10 @@ bool LLFeatureManager::loadGPUClass()
...
@@ -489,190 +487,10 @@ bool LLFeatureManager::loadGPUClass()
mGPUString
=
gGLManager
.
getRawGLString
();
mGPUString
=
gGLManager
.
getRawGLString
();
mGPUSupported
=
TRUE
;
mGPUSupported
=
TRUE
;
#if 0
return
true
;
// indicates that a gpu value was established
// first table is in the app dir
std::string app_path = gDirUtilp->getAppRODataDir();
app_path += gDirUtilp->getDirDelimiter();
app_path += GPU_TABLE_FILENAME;
// second table is downloaded with HTTP
std::string http_filename = llformat(GPU_TABLE_VER_FILENAME, LLVersionInfo::getVersion().c_str());
std::string http_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, http_filename);
// use HTTP table if it exists
std::string path;
bool parse_ok = false;
if (gDirUtilp->fileExists(http_path))
{
parse_ok = parseGPUTable(http_path);
if (!parse_ok)
{
// the HTTP table failed to parse, so delete it
LLFile::remove(http_path);
LL_WARNS("RenderInit") << "Removed invalid gpu table '" << http_path << "'" << LL_ENDL;
}
}
if (!parse_ok)
{
parse_ok = parseGPUTable(app_path);
}
#endif
return
true
;
// indicates that the file parsed correctly, not that the gpu was recognized
}
}
bool
LLFeatureManager
::
parseGPUTable
(
std
::
string
filename
)
{
llifstream
file
;
LL_INFOS
(
"RenderInit"
)
<<
"Attempting to parse GPU table from "
<<
filename
<<
LL_ENDL
;
file
.
open
(
filename
);
if
(
file
)
{
const
char
recognizer
[]
=
"//GPU_TABLE"
;
char
first_line
[
MAX_STRING
];
file
.
getline
(
first_line
,
MAX_STRING
);
if
(
0
!=
strncmp
(
first_line
,
recognizer
,
strlen
(
recognizer
)))
{
LL_WARNS
(
"RenderInit"
)
<<
"Invalid GPU table: "
<<
filename
<<
"!"
<<
LL_ENDL
;
return
false
;
}
}
else
{
LL_WARNS
(
"RenderInit"
)
<<
"Unable to open GPU table: "
<<
filename
<<
"!"
<<
LL_ENDL
;
return
false
;
}
std
::
string
rawRenderer
=
gGLManager
.
getRawGLString
();
std
::
string
renderer
=
rawRenderer
;
for
(
std
::
string
::
iterator
i
=
renderer
.
begin
();
i
!=
renderer
.
end
();
++
i
)
{
*
i
=
tolower
(
*
i
);
}
#if LL_EXPORT_GPU_TABLE
llofstream
json
;
json
.
open
(
"gpu_table.json"
);
json
<<
"var gpu_table = ["
<<
std
::
endl
;
#endif
bool
gpuFound
;
U32
lineNumber
;
for
(
gpuFound
=
false
,
lineNumber
=
0
;
!
gpuFound
&&
!
file
.
eof
();
lineNumber
++
)
{
char
buffer
[
MAX_STRING
];
/*Flawfinder: ignore*/
buffer
[
0
]
=
0
;
file
.
getline
(
buffer
,
MAX_STRING
);
if
(
strlen
(
buffer
)
>=
2
&&
/*Flawfinder: ignore*/
buffer
[
0
]
==
'/'
&&
buffer
[
1
]
==
'/'
)
{
// This is a comment.
continue
;
}
if
(
strlen
(
buffer
)
==
0
)
/*Flawfinder: ignore*/
{
// This is a blank line
continue
;
}
// setup the tokenizer
std
::
string
buf
(
buffer
);
std
::
string
cls
,
label
,
expr
,
supported
,
stats_based
,
expected_gl_version
;
boost_tokenizer
tokens
(
buf
,
boost
::
char_separator
<
char
>
(
"
\t\n
"
));
boost_tokenizer
::
iterator
token_iter
=
tokens
.
begin
();
// grab the label, pseudo regular expression, and class
if
(
token_iter
!=
tokens
.
end
())
{
label
=
*
token_iter
++
;
}
if
(
token_iter
!=
tokens
.
end
())
{
expr
=
*
token_iter
++
;
}
if
(
token_iter
!=
tokens
.
end
())
{
cls
=
*
token_iter
++
;
}
if
(
token_iter
!=
tokens
.
end
())
{
supported
=
*
token_iter
++
;
}
if
(
token_iter
!=
tokens
.
end
())
{
stats_based
=
*
token_iter
++
;
}
if
(
token_iter
!=
tokens
.
end
())
{
expected_gl_version
=
*
token_iter
++
;
}
if
(
label
.
empty
()
||
expr
.
empty
()
||
cls
.
empty
()
||
supported
.
empty
())
{
LL_WARNS
(
"RenderInit"
)
<<
"invald gpu_table.txt:"
<<
lineNumber
<<
": '"
<<
buffer
<<
"'"
<<
LL_ENDL
;
continue
;
}
#if LL_EXPORT_GPU_TABLE
json
<<
"{'label' : '"
<<
label
<<
"',
\n
"
<<
"'regexp' : '"
<<
expr
<<
"',
\n
"
<<
"'class' : '"
<<
cls
<<
"',
\n
"
<<
"'supported' : '"
<<
supported
<<
"',
\n
"
<<
"'stats_based' : "
<<
stats_based
<<
",
\n
"
<<
"'gl_version' : "
<<
expected_gl_version
<<
"
\n
},
\n
"
;
#endif
for
(
U32
i
=
0
;
i
<
expr
.
length
();
i
++
)
/*Flawfinder: ignore*/
{
expr
[
i
]
=
tolower
(
expr
[
i
]);
}
// run the regular expression against the renderer
boost
::
regex
re
(
expr
.
c_str
());
if
(
boost
::
regex_search
(
renderer
,
re
))
{
// if we found it, stop!
#if !LL_EXPORT_GPU_TABLE
gpuFound
=
true
;
#endif
mGPUString
=
label
;
mGPUClass
=
(
EGPUClass
)
strtol
(
cls
.
c_str
(),
NULL
,
10
);
mGPUSupported
=
(
BOOL
)
strtol
(
supported
.
c_str
(),
NULL
,
10
);
sscanf
(
expected_gl_version
.
c_str
(),
"%f"
,
&
mExpectedGLVersion
);
}
}
#if LL_EXPORT_GPU_TABLE
json
<<
"];
\n\n
"
;
json
.
close
();
#endif
file
.
close
();
if
(
gpuFound
)
{
LL_INFOS
(
"RenderInit"
)
<<
"GPU '"
<<
rawRenderer
<<
"' recognized as '"
<<
mGPUString
<<
"'"
<<
LL_ENDL
;
if
(
!
mGPUSupported
)
{
LL_INFOS
(
"RenderInit"
)
<<
"GPU '"
<<
mGPUString
<<
"' is not supported."
<<
LL_ENDL
;
}
}
else
{
LL_WARNS
(
"RenderInit"
)
<<
"GPU '"
<<
rawRenderer
<<
"' not recognized"
<<
LL_ENDL
;
}
#if LL_DARWIN // never go over "Mid" settings by default on OS X
mGPUClass
=
llmin
(
mGPUClass
,
GPU_CLASS_2
);
#endif
return
true
;
}
// responder saves table into file
// responder saves table into file
class
LLHTTPFeatureTableResponder
:
public
LLHTTPClient
::
Responder
class
LLHTTPFeatureTableResponder
:
public
LLHTTPClient
::
Responder
{
{
...
@@ -753,26 +571,11 @@ void fetch_feature_table(std::string table)
...
@@ -753,26 +571,11 @@ void fetch_feature_table(std::string table)
LLHTTPClient
::
get
(
url
,
new
LLHTTPFeatureTableResponder
(
path
));
LLHTTPClient
::
get
(
url
,
new
LLHTTPFeatureTableResponder
(
path
));
}
}
void
fetch_gpu_table
(
std
::
string
table
)
{
const
std
::
string
base
=
gSavedSettings
.
getString
(
"FeatureManagerHTTPTable"
);
const
std
::
string
filename
=
llformat
(
table
.
c_str
(),
LLVersionInfo
::
getVersion
().
c_str
());
const
std
::
string
url
=
base
+
"/"
+
filename
;
const
std
::
string
path
=
gDirUtilp
->
getExpandedFilename
(
LL_PATH_USER_SETTINGS
,
filename
);
LL_INFOS
()
<<
"LLFeatureManager fetching "
<<
url
<<
" into "
<<
path
<<
LL_ENDL
;
LLHTTPClient
::
get
(
url
,
new
LLHTTPFeatureTableResponder
(
path
));
}
// fetch table(s) from a website (S3)
// fetch table(s) from a website (S3)
void
LLFeatureManager
::
fetchHTTPTables
()
void
LLFeatureManager
::
fetchHTTPTables
()
{
{
fetch_feature_table
(
FEATURE_TABLE_VER_FILENAME
);
fetch_feature_table
(
FEATURE_TABLE_VER_FILENAME
);
fetch_gpu_table
(
GPU_TABLE_VER_FILENAME
);
}
}
...
...
This diff is collapsed.
Click to expand it.
indra/newview/llfeaturemanager.h
+
0
−
3
View file @
cd4babf9
...
@@ -162,9 +162,6 @@ class LLFeatureManager : public LLFeatureList, public LLSingleton<LLFeatureManag
...
@@ -162,9 +162,6 @@ class LLFeatureManager : public LLFeatureList, public LLSingleton<LLFeatureManag
bool
parseFeatureTable
(
std
::
string
filename
);
bool
parseFeatureTable
(
std
::
string
filename
);
///< @returns TRUE is file parsed correctly, FALSE if not
///< @returns TRUE is file parsed correctly, FALSE if not
bool
parseGPUTable
(
std
::
string
filename
);
///< @returns true if file parsed correctly, false if not - does not reflect whether or not the gpu was recognized
void
initBaseMask
();
void
initBaseMask
();
...
...
This diff is collapsed.
Click to expand it.
indra/newview/llglsandbox.cpp
+
2
−
2
View file @
cd4babf9
...
@@ -1017,7 +1017,7 @@ F32 gpu_benchmark()
...
@@ -1017,7 +1017,7 @@ F32 gpu_benchmark()
if
(
!
gGLManager
.
mHasTimerQuery
&&
!
busted_finish
&&
gbps
>
128.
f
)
if
(
!
gGLManager
.
mHasTimerQuery
&&
!
busted_finish
&&
gbps
>
128.
f
)
{
//unrealistically high bandwidth for a card without timer queries, glFinish is probably ignored
{
//unrealistically high bandwidth for a card without timer queries, glFinish is probably ignored
busted_finish
=
true
;
busted_finish
=
true
;
LL_
INFO
S
()
<<
"GPU Benchmark detected GL driver with broken glFinish implementation.
Neat.
"
<<
LL_ENDL
;
LL_
WARN
S
()
<<
"GPU Benchmark detected GL driver with broken glFinish implementation."
<<
LL_ENDL
;
}
}
else
else
{
{
...
@@ -1044,7 +1044,7 @@ F32 gpu_benchmark()
...
@@ -1044,7 +1044,7 @@ F32 gpu_benchmark()
#if LL_DARWIN
#if LL_DARWIN
if
(
gbps
>
512.
f
)
if
(
gbps
>
512.
f
)
{
{
LL_
INFO
S
()
<<
"Memory bandwidth is improbably high and likely incorrect."
<<
LL_ENDL
;
LL_
WARN
S
()
<<
"Memory bandwidth is improbably high and likely incorrect
; discarding result
."
<<
LL_ENDL
;
//OSX is probably lying, discard result
//OSX is probably lying, discard result
gbps
=
-
1.
f
;
gbps
=
-
1.
f
;
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment