Difference between revisions of "Texture Console"

From Second Life Wiki
Jump to navigation Jump to search
(Delete 3.4.3 and earlier console descriptions.)
 
(3 intermediate revisions by 2 users not shown)
Line 6: Line 6:
'''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)
'''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)


==1.14==
== 3.7.2 ==
[[Image:Texture_console_1_14.png|Texture Console]]
[[Image:Texture_console_v372.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.'''
'''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*
# 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*
# 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
# FBO (Needs Details)
* 4: Graphical representation of 1. Red indicates that (3) will be increased
# Raw Tot.  (ND)
* 5: Total number of textures currently referenced (i.e. nearby)
# Bias.  Texture detail multiplier. > 1 indicates that texture detail is being decreased to fit into memory
* 6: Number of textures with data being actively fetched (number pending deletion)
# Cache.
* 7: Number of textures waiting to be Read/Written to the local 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.
* 8: Graphical representation of 2
# Tot Obj. (MB) (ND)
* 9: First chunk of texture ID
# 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: Area on screen. Approximate # of pixels this texture covers on-screen.
# Cread.  Count of on-disk texture cache reads requested by texture fetch code.
* 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.
# Cwrite.  Count of on-disk texture cache writes requested by texture fetch 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.
# Rwait. Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.
* 13: Priority.
# Textures.  Number of textures known to the texture management system.  These will be in various states of completeness.
* 14: Requested Priority.  
# Fetch.  Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).
* 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).
# 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: Number of Packets received (numerical representation of 15)
# Cache R/W.  Count of outstanding cache read requests / Count of outstanding cache write requests
* 17: Max number of packets
# 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: "---" see 27-33
# RAW.  Count of instances of LLImageRaw objects currently in the system.
* 19: State: What state the texture fetcher is in for this texture
# 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: Pkt:
# DEC.  Count of requests outstanding for decoding of texture data.
** White = packet received from simulator
# CRE.  (ND)
** Green = data requested from simulator
# 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.
** Yellow = texture processed by state machine
# Tex UUID.  Fragment of UUID identifying texture.  UUIDs will be rendered with varying colors:
* 21: Bnd:
#* White = Normal priority image
** Purple = Texture is currently bound (i.e. being rendered)
#* Yellow = Selected image, prioritized
* 22: Width x Height
#* Orange = Image under mouse ("hover"), prioritized
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.
#* Magenta = Boosted (prioritized) image
* 24: Amount of memory consumed by the texture
#* Green = UI image
* 25/26: Text Color
#* Grey = Image not in state machine (hopefully because current discard <= desired discard)
** White = Normal priority image
# Area.  Area on screen. Approximate # of pixels this texture covers on-screen.
** Yellow = Selected image, prioritized
# 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.
** Orange = Image under mouse ("hover"), prioritized
# DecodePri(Fetch).  Priority for decode of image / Priority as requested for fetching.
** Magenta = Boosted (prioritized) image
# 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.
** Green = UI image
# pk/max.  For UDP, number of packets received (reflected in progress bar) / Max number of packets
** Grey = Image not in state machine (hopefully because current discard <= desired discard)
# State.  The texture request's current state in the fetching/decoding state machine. States include:
* 27-33
#* "---" - The texture is not being fetched (hopefully because current discard <= desired discard).  If red, invalid state.
** "---" - The texture is not being fetched (hopefully because current discard <= desired discard)
#* "INI" - The texture is waiting to be processed by the state machine
** "INI" - The texture is waiting to be processed by the state machine
#* "DSK" - Reading from local cache (cyan=header, blue=body)  
** "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
** "NET" - Indicates the texture is in the network request queue, but has not yet been requested from the servers
#* "SIM" - Waiting for UDP packet data from simulator
** "SIM" - Waiting for packet data from simulator
#* "HTW" - Resource waiting for HTTP resources prior to "HTP" state
** "URL" - Waiting for URL for HTTP request
#* "REQ" - Preparing to send HTTP request to grid
** "HTP" - Waiting for HTTP data
#* "HTP" - Waiting for HTTP response data
** "DEC" - Decoding Image
#* "DEC" - Decoding Image
** "WRT" - Writing image to local cache
#* "WRT" - Writing image to local cache
** "END" - Waiting for a request for more data or deletion (after timeout)
#* "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)
#* "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'.


(*) These are functions of the 'Graphics Card Memory' setting under Preferences > Adv. Graphics
Some patterns to look for when searching for texture fetch bugs:


==1.13==
1. If Cread is growing quickly while Cwrite and 'Tot Htp' are
[[Image:Texture console.png|Texture Console]]
static or growing slowly then the texture cache is populated
and being used.


* '''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.  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.


* 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*
3. If 'Tot Htp' is growing faster than 'Cwrite', then we're
* 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*
doing unnecessary fetches for assets for some reason.
* 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==
==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.
* '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.

Latest revision as of 09:50, 22 September 2022

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.

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.