Difference between revisions of "Texture Console"

From Second Life Wiki
Jump to navigation Jump to search
(Document 3.7.2 release with new mesh status line)
(14 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{OSWikiFeatureNav}}
==Definitions==
'''Decode''' - Uncompressing a downloaded texture, in SL's case a JPEG2000 texture, into memory. Once it is decoded it will be handed to OpenGL.
'''Discard Level''' - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)
== 3.7.2 ==
[[Image:Texture_console_v372.png|Texture Console]]
'''Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.'''
# Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
# Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
# FBO (Needs Details)
# Raw Tot.  (ND)
# Bias.  Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
# Cache.
# Net Tot Tex.  Total size of textures (MB) downloaded over network in this session.  Includes both UDP and HTTP transport.  Value is updated internally on a 10-second timer and so lags other activity in the console.
# Tot Obj.  (MB) (ND)
# Tot Htp.  Total number of HTTP requests issued for texture downloads.  Repeated downloads (say, for existing or different discard levels) are counted individually.  Retries on connection or HTTP failures were counted in the past.  They are not counted currently.
# Cread.  Count of on-disk texture cache reads requested by texture fetch code.
# Cwrite.  Count of on-disk texture cache writes requested by texture fetch code.
# Rwait.  Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.
# Textures.  Number of textures known to the texture management system.  These will be in various states of completeness.
# Fetch.  Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).
# Pkts.  Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.
# Cache R/W.  Count of outstanding cache read requests / Count of outstanding cache write requests
# LFS.  Count of async file operation requests outstanding on the LFS worker thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.
# RAW.  Count of instances of LLImageRaw objects currently in the system.
# HTP.  Count of active HTTP requests issued or queued for texture fetching.  Completion will contribute to ‘Tot Htp’ above.  These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).
# DEC.  Count of requests outstanding for decoding of texture data.
# CRE.  (ND)
# BW.  UDP + HTTP texture bandwidth as consumed / UDP bandwidth limit as configured.  Text will change color to yellow or red as configured value is approached and exceeded.
# Tex UUID.  Fragment of UUID identifying texture.  UUIDs will be rendered with varying colors:
#* White = Normal priority image
#* Yellow = Selected image, prioritized
#* Orange = Image under mouse ("hover"), prioritized
#* Magenta = Boosted (prioritized) image
#* Green = UI image
#* Grey = Image not in state machine (hopefully because current discard <= desired discard)
# Area.  Area on screen. Approximate # of pixels this texture covers on-screen.
# DDis(Req).  Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level.  This is the client's record of the last discard level requested to the server.  This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
# DecodePri(Fetch).  Priority for decode of image / Priority as requested for fetching.
# Progress Bar.  Fills up as the requested texture is downloaded.  This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).  Incremental progress is indicated for UDP requests, HTTP will jump to completion.
# pk/max.  For UDP, number of packets received (reflected in progress bar) / Max number of packets
# State.  The texture request's current state in the fetching/decoding state machine.  States include:
#* "---" - The texture is not being fetched (hopefully because current discard <= desired discard).  If red, invalid state.
#* "INI" - The texture is waiting to be processed by the state machine
#* "DSK" - Reading from local cache (cyan=header, blue=body)
#* "NET" - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers
#* "SIM" - Waiting for UDP packet data from simulator
#* "HTW" - Resource waiting for HTTP resources prior to "HTP" state
#* "REQ" - Preparing to send HTTP request to grid
#* "HTP" - Waiting for HTTP response data
#* "DEC" - Decoding Image
#* "WRT" - Writing image to local cache
#* "END" - Waiting for a request for more data or deletion (after timeout)
#* "CRE" - Texture needs to be created
#* "FUL/BAD/MIS" - Debug, shouldn't happen (needs create, fully loaded, bad, missing)
# Pkt.  Handling information for recently-received data (mostly UDP-oriented):
#* White = packet received from simulator
#* Green = data requested from simulator
#* Yellow = texture processed by state machine
# Bnd.  Binding of fetched data to OpenGL:
#* Purple = Texture is currently bound (i.e. being rendered)
# W x H.  Dimensions of image.
# (Dis).  Actual Discarded level.  This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).
# Mem.  Amount of memory consumed by the texture.
# Mesh Reqs(Tot/Htp/Big).  Mesh status line starting with counts of mesh requests issued:  total (pre-cache), 'normal' HTTP and 'Big' (over 2MB) HTTP.  A mesh request will typically be for a part of a full mesh:  a single level-of-detail or perhaps a header.  A request may be satisfied by the mesh cache.  If not in the cache, then an HTTP request is issued.  That request will be either a 'normal' or a 'big' request.
# Rtr/Err.  Retries issued and final errors received for HTTP mesh requests.
# Cread/Cwrite.  Mesh cache read and write operations.  'Cwrite' will approximately follow 'Htp' + 'Big'.  'Cread' gives an indication of the effectiveness of the local mesh cache.
# Low/At/High.  The mesh fetching code maintains a pool of requests.  This code attempts to keep the pool filled between the 'Low' and 'High' water levels shown here.  The current pool level is given by 'At' and the pool is refilled when it falls below 'Low'.
Some patterns to look for when searching for texture fetch bugs:
1.  If Cread is growing quickly while Cwrite and 'Tot Htp' are
static or growing slowly then the texture cache is populated
and being used.
2.  If Cwrite and 'Tot Htp' grow at about the same rate as
Cread, then either the texture cache is cold or it isn't working.
3.  If 'Tot Htp' is growing faster than 'Cwrite', then we're
doing unnecessary fetches for assets for some reason.
== 3.4.3 ==
[[Image:Texture_console_v343.png|Texture Console]]
'''Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.'''
# Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
# Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
# FBO (Needs Details)
# Raw Tot.  (ND)
# Bias.  Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
# Cache.
# Net Tot Tex.  Total size of textures (MB) downloaded over network in this session.  Includes both UDP and HTTP transport.  Value is updated internally on a 10-second timer and so lags other activity in the console.
# Tot Obj.  (MB) (ND)
# Tot Htp.  Total number of HTTP requests issued for texture downloads.  Repeated downloads (say, for existing or different discard levels) are counted individually.  Retries on connection or HTTP failures were counted in the past.  They are not counted currently.
# Cread.  Count of on-disk texture cache reads requested by texture fetch code.
# Cwrite.  Count of on-disk texture cache writes requested by texture fetch code.
# Rwait.  Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.
# Textures.  Number of textures known to the texture management system.  These will be in various states of completeness.
# Fetch.  Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).
# Pkts.  Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.
# Cache R/W.  Count of outstanding cache read requests / Count of outstanding cache write requests
# LFS.  Count of async file operation requests outstanding on the LFS worker thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.
# RAW.  Count of instances of LLImageRaw objects currently in the system.
# HTP.  Count of active HTTP requests issued or queued for texture fetching.  Completion will contribute to ‘Tot Htp’ above.  These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).
# DEC.  Count of requests outstanding for decoding of texture data.
# CRE.  (ND)
# BW.  UDP bandwidth limit as negotiated / UDP bandwidth limit as configured.  Text will change color to yellow or red as configured value is approached and exceeded.
# Tex UUID.  Fragment of UUID identifying texture.  UUIDs will be rendered with varying colors:
#* White = Normal priority image
#* Yellow = Selected image, prioritized
#* Orange = Image under mouse ("hover"), prioritized
#* Magenta = Boosted (prioritized) image
#* Green = UI image
#* Grey = Image not in state machine (hopefully because current discard <= desired discard)
# Area.  Area on screen. Approximate # of pixels this texture covers on-screen.
# DDis(Req).  Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level.  This is the client's record of the last discard level requested to the server.  This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
# DecodePri(Fetch).  Priority for decode of image / Priority as requested for fetching.
# Progress Bar.  Fills up as the requested texture is downloaded.  This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).  Incremental progress is indicated for UDP requests, HTTP will jump to completion.
# pk/max.  For UDP, number of packets received (reflected in progress bar) / Max number of packets
# State.  The texture request's current state in the fetching/decoding state machine.  States include:
#* "---" - The texture is not being fetched (hopefully because current discard <= desired discard).  If red, invalid state.
#* "INI" - The texture is waiting to be processed by the state machine
#* "DSK" - Reading from local cache (cyan=header, blue=body)
#* "NET" - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers
#* "SIM" - Waiting for UDP packet data from simulator
#* "HTW" - Resource waiting for HTTP resources prior to "HTP" state
#* "REQ" - Preparing to send HTTP request to grid
#* "HTP" - Waiting for HTTP response data
#* "DEC" - Decoding Image
#* "WRT" - Writing image to local cache
#* "END" - Waiting for a request for more data or deletion (after timeout)
#* "CRE" - Texture needs to be created
#* "FUL/BAD/MIS" - Debug, shouldn't happen (needs create, fully loaded, bad, missing)
# Pkt.  Handling information for recently-received data (mostly UDP-oriented):
#* White = packet received from simulator
#* Green = data requested from simulator
#* Yellow = texture processed by state machine
# Bnd.  Binding of fetched data to OpenGL:
#* Purple = Texture is currently bound (i.e. being rendered)
# W x H.  Dimensions of image.
# (Dis).  Actual Discarded level.  This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).
# Mem.  Amount of memory consumed by the texture.
Some patterns to look for when searching for bugs:
1.  If Cread is growing quickly while Cwrite and 'Tot Htp' are
static or growing slowly then the texture cache is populated
and being used.
2.  If Cwrite and 'Tot Htp' grow at about the same rate as
Cread, then either the texture cache is cold or it isn't working.
3.  If 'Tot Htp' is growing faster than 'Cwrite', then we're
doing unnecessary fetches for assets for some reason.
==1.14==
[[Image:Texture_console_1_14.png|Texture Console]]
* '''Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.'''
* 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
* 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
* 3: Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
* 4: Graphical representation of 1. Red indicates that (3) will be increased
* 5: Total number of textures currently referenced (i.e. nearby)
* 6: Number of textures with data being actively fetched (number pending deletion)
* 7: Number of textures waiting to be Read/Written to the local cache
* 8: Graphical representation of 2
* 9: First chunk of texture ID
* 10: Area on screen. Approximate # of pixels this texture covers on-screen.
* 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.
* 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
* 13: Priority.
* 14: Requested Priority.
* 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).
* 16: Number of Packets received (numerical representation of 15)
* 17: Max number of packets
* 18: "---" see 27-33
* 19: State: What state the texture fetcher is in for this texture
* 20: Pkt:
** White = packet received from simulator
** Green = data requested from simulator
** Yellow = texture processed by state machine
* 21: Bnd:
** Purple = Texture is currently bound (i.e. being rendered)
* 22: Width x Height
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.
* 24: Amount of memory consumed by the texture
* 25/26: Text Color
** White = Normal priority image
** Yellow = Selected image, prioritized
** Orange = Image under mouse ("hover"), prioritized
** Magenta = Boosted (prioritized) image
** Green = UI image
** Grey = Image not in state machine (hopefully because current discard <= desired discard)
* 27-33
** "---" - The texture is not being fetched (hopefully because current discard <= desired discard)
** "INI" - The texture is waiting to be processed by the state machine
** "DSK" - Reading from local cache (cyan=header, blue=body)
** "NET" - Indicates the texture is in the network request queue, but has not yet been requested from the servers
** "SIM" - Waiting for packet data from simulator
** "URL" - Waiting for URL for HTTP request
** "HTP" - Waiting for HTTP data
** "DEC" - Decoding Image
** "WRT" - Writing image to local cache
** "END" - Waiting for a request for more data or deletion (after timeout)
** "CRE/FUL/BAD/MIS" - Debug, shouldn't happen (needs create, fully loaded, bad, missing)
(*) These are functions of the 'Graphics Card Memory' setting under Preferences > Adv. Graphics
==1.13==
[[Image:Texture console.png|Texture Console]]
[[Image:Texture console.png|Texture Console]]


* 1:
* '''Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.'''
* 2:
 
* 3:
* 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
* 4:
* 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
* 5:
* 3: Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
* 4: Graphical representation of 1. Red indicates that (3) will be increased
* 5:  
* 6:
* 6:
* 7:
* 7:
* 8:
* 8: Graphical representation of 2
* 9:
* 9: First chunk of texture ID
* 10: Area on screen. Is this the approximate # of pixels this texture covers on-screen?
* 10: Area on screen. Approximate # of pixels this texture covers on-screen.
* 11: Desired Discard Level. (see Discard definition) What determines what level we desire?
* 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.
* 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This *should* be the same as Desired Discard Level. If it's not the same, this may indicate a logic error in the texture priority code.
* 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
* 13: Decode Priority.  
* 13: Priority.
* 14: Requested Decode Priority.  
* 14: Requested Priority.  
* 15: Decode. This bar fills up as the requested texture is downloaded and decoded. This is basically a download progress bar for the textures current Desired Discard Level.
* 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).
* 16:
* 16: Number of Packets received (numerical representation of 15)
* 17:
* 17: Max number of packets
* 18:
* 18: A pip shows up here when a packet arrives
* 19:
* 19: A pip shows up here while the texture is being decoded
* 20:
* 20: A pip shows up here if the texture is being displayed (bound)
* 21:
* 21:  
* 22:
* 22: Width x Height
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (12)Requested Discard Level and (11)Desired Discard Level.
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.
* 24:
* 24: Amount of memory consumbed by the texture
* 25: grey text.  
* 25: grey text.  
* 26: purple text.  
* 26: purple text.  
Line 31: Line 251:
* 29: *r.  
* 29: *r.  


==Definitions==
(*) These are functions of the 'Graphics Card Memory' setting under Preferences > Adv. Graphics
'''Decode''' - Uncompressing a downloaded texture, in SL's case a JPEG2000 texture, into memory (and pushing it onto the video card?)


'''Discard Level''' - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is roughly 1/2 the resolution and 1/4 the memory footprint on the video card.
==Notes==
* 'Texture Memory' or 'OpenGL Memory' refers to data passed to the OpenGL drivers. Depending upon the graphics card and driver, this memory may be on the graphics card, in system memory, or (likely) both.

Revision as of 17:20, 24 February 2014

Definitions

Decode - Uncompressing a downloaded texture, in SL's case a JPEG2000 texture, into memory. Once it is decoded it will be handed to OpenGL.

Discard Level - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)

3.7.2

Texture Console

Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.

  1. Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
  2. Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
  3. FBO (Needs Details)
  4. Raw Tot. (ND)
  5. Bias. Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
  6. Cache.
  7. Net Tot Tex. Total size of textures (MB) downloaded over network in this session. Includes both UDP and HTTP transport. Value is updated internally on a 10-second timer and so lags other activity in the console.
  8. Tot Obj. (MB) (ND)
  9. Tot Htp. Total number of HTTP requests issued for texture downloads. Repeated downloads (say, for existing or different discard levels) are counted individually. Retries on connection or HTTP failures were counted in the past. They are not counted currently.
  10. Cread. Count of on-disk texture cache reads requested by texture fetch code.
  11. Cwrite. Count of on-disk texture cache writes requested by texture fetch code.
  12. Rwait. Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.
  13. Textures. Number of textures known to the texture management system. These will be in various states of completeness.
  14. Fetch. Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).
  15. Pkts. Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.
  16. Cache R/W. Count of outstanding cache read requests / Count of outstanding cache write requests
  17. LFS. Count of async file operation requests outstanding on the LFS worker thread. LFS shouldn’t be involved in texture operations anymore so probably not interesting.
  18. RAW. Count of instances of LLImageRaw objects currently in the system.
  19. HTP. Count of active HTTP requests issued or queued for texture fetching. Completion will contribute to ‘Tot Htp’ above. These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).
  20. DEC. Count of requests outstanding for decoding of texture data.
  21. CRE. (ND)
  22. BW. UDP + HTTP texture bandwidth as consumed / UDP bandwidth limit as configured. Text will change color to yellow or red as configured value is approached and exceeded.
  23. Tex UUID. Fragment of UUID identifying texture. UUIDs will be rendered with varying colors:
    • White = Normal priority image
    • Yellow = Selected image, prioritized
    • Orange = Image under mouse ("hover"), prioritized
    • Magenta = Boosted (prioritized) image
    • Green = UI image
    • Grey = Image not in state machine (hopefully because current discard <= desired discard)
  24. Area. Area on screen. Approximate # of pixels this texture covers on-screen.
  25. DDis(Req). Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level. This is the client's record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
  26. DecodePri(Fetch). Priority for decode of image / Priority as requested for fetching.
  27. Progress Bar. Fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0). Incremental progress is indicated for UDP requests, HTTP will jump to completion.
  28. pk/max. For UDP, number of packets received (reflected in progress bar) / Max number of packets
  29. State. The texture request's current state in the fetching/decoding state machine. States include:
    • "---" - The texture is not being fetched (hopefully because current discard <= desired discard). If red, invalid state.
    • "INI" - The texture is waiting to be processed by the state machine
    • "DSK" - Reading from local cache (cyan=header, blue=body)
    • "NET" - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers
    • "SIM" - Waiting for UDP packet data from simulator
    • "HTW" - Resource waiting for HTTP resources prior to "HTP" state
    • "REQ" - Preparing to send HTTP request to grid
    • "HTP" - Waiting for HTTP response data
    • "DEC" - Decoding Image
    • "WRT" - Writing image to local cache
    • "END" - Waiting for a request for more data or deletion (after timeout)
    • "CRE" - Texture needs to be created
    • "FUL/BAD/MIS" - Debug, shouldn't happen (needs create, fully loaded, bad, missing)
  30. Pkt. Handling information for recently-received data (mostly UDP-oriented):
    • White = packet received from simulator
    • Green = data requested from simulator
    • Yellow = texture processed by state machine
  31. Bnd. Binding of fetched data to OpenGL:
    • Purple = Texture is currently bound (i.e. being rendered)
  32. W x H. Dimensions of image.
  33. (Dis). Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).
  34. Mem. Amount of memory consumed by the texture.
  35. Mesh Reqs(Tot/Htp/Big). Mesh status line starting with counts of mesh requests issued: total (pre-cache), 'normal' HTTP and 'Big' (over 2MB) HTTP. A mesh request will typically be for a part of a full mesh: a single level-of-detail or perhaps a header. A request may be satisfied by the mesh cache. If not in the cache, then an HTTP request is issued. That request will be either a 'normal' or a 'big' request.
  36. Rtr/Err. Retries issued and final errors received for HTTP mesh requests.
  37. Cread/Cwrite. Mesh cache read and write operations. 'Cwrite' will approximately follow 'Htp' + 'Big'. 'Cread' gives an indication of the effectiveness of the local mesh cache.
  38. Low/At/High. The mesh fetching code maintains a pool of requests. This code attempts to keep the pool filled between the 'Low' and 'High' water levels shown here. The current pool level is given by 'At' and the pool is refilled when it falls below 'Low'.

Some patterns to look for when searching for texture fetch bugs:

1. If Cread is growing quickly while Cwrite and 'Tot Htp' are static or growing slowly then the texture cache is populated and being used.

2. If Cwrite and 'Tot Htp' grow at about the same rate as Cread, then either the texture cache is cold or it isn't working.

3. If 'Tot Htp' is growing faster than 'Cwrite', then we're doing unnecessary fetches for assets for some reason.


3.4.3

Texture Console

Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.

  1. Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
  2. Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
  3. FBO (Needs Details)
  4. Raw Tot. (ND)
  5. Bias. Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
  6. Cache.
  7. Net Tot Tex. Total size of textures (MB) downloaded over network in this session. Includes both UDP and HTTP transport. Value is updated internally on a 10-second timer and so lags other activity in the console.
  8. Tot Obj. (MB) (ND)
  9. Tot Htp. Total number of HTTP requests issued for texture downloads. Repeated downloads (say, for existing or different discard levels) are counted individually. Retries on connection or HTTP failures were counted in the past. They are not counted currently.
  10. Cread. Count of on-disk texture cache reads requested by texture fetch code.
  11. Cwrite. Count of on-disk texture cache writes requested by texture fetch code.
  12. Rwait. Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.
  13. Textures. Number of textures known to the texture management system. These will be in various states of completeness.
  14. Fetch. Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).
  15. Pkts. Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.
  16. Cache R/W. Count of outstanding cache read requests / Count of outstanding cache write requests
  17. LFS. Count of async file operation requests outstanding on the LFS worker thread. LFS shouldn’t be involved in texture operations anymore so probably not interesting.
  18. RAW. Count of instances of LLImageRaw objects currently in the system.
  19. HTP. Count of active HTTP requests issued or queued for texture fetching. Completion will contribute to ‘Tot Htp’ above. These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).
  20. DEC. Count of requests outstanding for decoding of texture data.
  21. CRE. (ND)
  22. BW. UDP bandwidth limit as negotiated / UDP bandwidth limit as configured. Text will change color to yellow or red as configured value is approached and exceeded.
  23. Tex UUID. Fragment of UUID identifying texture. UUIDs will be rendered with varying colors:
    • White = Normal priority image
    • Yellow = Selected image, prioritized
    • Orange = Image under mouse ("hover"), prioritized
    • Magenta = Boosted (prioritized) image
    • Green = UI image
    • Grey = Image not in state machine (hopefully because current discard <= desired discard)
  24. Area. Area on screen. Approximate # of pixels this texture covers on-screen.
  25. DDis(Req). Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level. This is the client's record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
  26. DecodePri(Fetch). Priority for decode of image / Priority as requested for fetching.
  27. Progress Bar. Fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0). Incremental progress is indicated for UDP requests, HTTP will jump to completion.
  28. pk/max. For UDP, number of packets received (reflected in progress bar) / Max number of packets
  29. State. The texture request's current state in the fetching/decoding state machine. States include:
    • "---" - The texture is not being fetched (hopefully because current discard <= desired discard). If red, invalid state.
    • "INI" - The texture is waiting to be processed by the state machine
    • "DSK" - Reading from local cache (cyan=header, blue=body)
    • "NET" - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers
    • "SIM" - Waiting for UDP packet data from simulator
    • "HTW" - Resource waiting for HTTP resources prior to "HTP" state
    • "REQ" - Preparing to send HTTP request to grid
    • "HTP" - Waiting for HTTP response data
    • "DEC" - Decoding Image
    • "WRT" - Writing image to local cache
    • "END" - Waiting for a request for more data or deletion (after timeout)
    • "CRE" - Texture needs to be created
    • "FUL/BAD/MIS" - Debug, shouldn't happen (needs create, fully loaded, bad, missing)
  30. Pkt. Handling information for recently-received data (mostly UDP-oriented):
    • White = packet received from simulator
    • Green = data requested from simulator
    • Yellow = texture processed by state machine
  31. Bnd. Binding of fetched data to OpenGL:
    • Purple = Texture is currently bound (i.e. being rendered)
  32. W x H. Dimensions of image.
  33. (Dis). Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).
  34. Mem. Amount of memory consumed by the texture.

Some patterns to look for when searching for bugs:

1. If Cread is growing quickly while Cwrite and 'Tot Htp' are static or growing slowly then the texture cache is populated and being used.

2. If Cwrite and 'Tot Htp' grow at about the same rate as Cread, then either the texture cache is cold or it isn't working.

3. If 'Tot Htp' is growing faster than 'Cwrite', then we're doing unnecessary fetches for assets for some reason.

1.14

Texture Console

  • Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.
  • 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
  • 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
  • 3: Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
  • 4: Graphical representation of 1. Red indicates that (3) will be increased
  • 5: Total number of textures currently referenced (i.e. nearby)
  • 6: Number of textures with data being actively fetched (number pending deletion)
  • 7: Number of textures waiting to be Read/Written to the local cache
  • 8: Graphical representation of 2
  • 9: First chunk of texture ID
  • 10: Area on screen. Approximate # of pixels this texture covers on-screen.
  • 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.
  • 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
  • 13: Priority.
  • 14: Requested Priority.
  • 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).
  • 16: Number of Packets received (numerical representation of 15)
  • 17: Max number of packets
  • 18: "---" see 27-33
  • 19: State: What state the texture fetcher is in for this texture
  • 20: Pkt:
    • White = packet received from simulator
    • Green = data requested from simulator
    • Yellow = texture processed by state machine
  • 21: Bnd:
    • Purple = Texture is currently bound (i.e. being rendered)
  • 22: Width x Height
  • 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.
  • 24: Amount of memory consumed by the texture
  • 25/26: Text Color
    • White = Normal priority image
    • Yellow = Selected image, prioritized
    • Orange = Image under mouse ("hover"), prioritized
    • Magenta = Boosted (prioritized) image
    • Green = UI image
    • Grey = Image not in state machine (hopefully because current discard <= desired discard)
  • 27-33
    • "---" - The texture is not being fetched (hopefully because current discard <= desired discard)
    • "INI" - The texture is waiting to be processed by the state machine
    • "DSK" - Reading from local cache (cyan=header, blue=body)
    • "NET" - Indicates the texture is in the network request queue, but has not yet been requested from the servers
    • "SIM" - Waiting for packet data from simulator
    • "URL" - Waiting for URL for HTTP request
    • "HTP" - Waiting for HTTP data
    • "DEC" - Decoding Image
    • "WRT" - Writing image to local cache
    • "END" - Waiting for a request for more data or deletion (after timeout)
    • "CRE/FUL/BAD/MIS" - Debug, shouldn't happen (needs create, fully loaded, bad, missing)

(*) These are functions of the 'Graphics Card Memory' setting under Preferences > Adv. Graphics

1.13

Texture Console

  • Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.
  • 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
  • 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
  • 3: Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
  • 4: Graphical representation of 1. Red indicates that (3) will be increased
  • 5:
  • 6:
  • 7:
  • 8: Graphical representation of 2
  • 9: First chunk of texture ID
  • 10: Area on screen. Approximate # of pixels this texture covers on-screen.
  • 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.
  • 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.
  • 13: Priority.
  • 14: Requested Priority.
  • 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).
  • 16: Number of Packets received (numerical representation of 15)
  • 17: Max number of packets
  • 18: A pip shows up here when a packet arrives
  • 19: A pip shows up here while the texture is being decoded
  • 20: A pip shows up here if the texture is being displayed (bound)
  • 21:
  • 22: Width x Height
  • 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.
  • 24: Amount of memory consumbed by the texture
  • 25: grey text.
  • 26: purple text.
  • 27: green text.
  • 28: *.
  • 29: *r.

(*) These are functions of the 'Graphics Card Memory' setting under Preferences > Adv. Graphics

Notes

  • 'Texture Memory' or 'OpenGL Memory' refers to data passed to the OpenGL drivers. Depending upon the graphics card and driver, this memory may be on the graphics card, in system memory, or (likely) both.