Commit Graph

39 Commits

Author SHA1 Message Date
Justin Clark-Casey (justincc)
0109603cdc If reusing dynamic textures, do not reuse small data length textures that fall below current viewer discard level 2 thresholds.
Viewer LL 3.3.4 and before sometimes fail to properly redisplay dynamic textures that have a small data length compared to pixel size when pulled from cache.
This appears to happen when the data length is smaller than the estimate discard level 2 size the viewer uses when making this GetTexture request.
This commit works around this by always regenerating dynamic textures that fall below this threshold rather than reusing them if ReuseDynamicTextures = true
This can be controlled by the [Textures] ReuseDynamicLowDataTextures config setting which defaults to false.
2012-09-27 23:15:43 +01:00
Justin Clark-Casey (justincc)
eb40d3b6fc If the GetTexture capability receives a request for a range of data beyond that of an otherwise valid asset, return HTTP PartialContent rather than RequestedRangeNotSatisfiable.
This is because recent viewers (3.2.1, 3.3.4) and probably earlier ones using the http GetTexture capability will sometimes make such invalid range requests.
This appears to happen if the viewer's estimate of texture sizes at discard levels > 0 (chiefly 2) exceeds the total texture size.
I believe this does not normally happen but can occur for dynamic textures with are large but mainly blank.
If this happens, returning a RequestedRangeNotSatisfiable will cause the viewer to not render the texture at the final resolution.
However, returning a PartialContent (or OK) even with 0 data will allow the viewer to render the final texture.
2012-09-27 23:14:39 +01:00
Justin Clark-Casey (justincc)
ba2792bd1f Make ReuseDynamicTextures an experimental config setting in [Textures]. Default is false, as before.
If true, this setting reuses dynamically generated textures (i.e. created through osSetDynamicTextureData() and similar OSSL functions) where possible rather than always regenerating them.
This results in much quicker updates viewer-side but may bloat the asset cache (though this is fixable).
Also, sometimes issue have been seen where dynamic textures do not transfer to the viewer properly (permanently blurry).
If this happens and that flag is set then they are not regenerated, the viewer has to clear cache or wait for 24 hours before all cached uuids are invalidated.
CUrrently experimental.  Default is false, as before.
2012-09-27 23:12:39 +01:00
Justin Clark-Casey (justincc)
3f8c09e006 If the compile-time DynamicTextureModule.ReuseTextures flag is set, check metadata still exists for any reused asset in case some other process has removed it from the cache. 2012-09-27 23:12:32 +01:00
Justin Clark-Casey (justincc)
9a92d8d57e Add experimental DynamicTextureModule.ReuseTextures flag, currently only configurable on compile.
Disabled (status quo) by default.
This flag makes the dynamic texture module reuse cache previously dynamically generated textures given the same input commands and extra params for 24 hours.
This occurs as long as those commands would always generate the same texture (e.g. they do not contain commands to fetch data from the web).
This makes texture changing faster as a viewer-cached texture uuid is sent and may reduce simulator load in regions with generation of lots of dynamic textures.
A downside is that this stops expiry of old temporary dynamic textures from the cache,
Another downside is that a jpeg2000 generation that partially failed is currently not regenerated until restart or after 24 hours.
2012-09-27 23:11:10 +01:00
Melanie
66f4ce354f Fix CHANGED_TEXTURE and CHANGED_COLOR. 2011-12-05 19:01:14 +00:00
Justin Clark-Casey (justincc)
72923134e9 Get some hopefully more useful exception information when OpenJPEG.EncodeFromImage() fails in VectorRender and DynamicTexture modules 2011-11-02 18:40:49 +00:00
Justin Clark-Casey (justincc)
f138a2056e meaningless change to goose panda 2011-10-11 00:29:41 +01:00
Justin Clark-Casey (justincc)
013bf2775f remove unused LastAssetID from DynamicTextureUpdaer 2011-10-10 15:19:23 +01:00
John Hurliman
b4dcdffb50 Fixed several unhandled exceptions and performance issues with PrimitiveBaseShape.Textures. This really should be moved from a property to a method if it is going to decode a byte[] into a TextureEntry each time 2010-03-16 11:50:22 -07:00
John Hurliman
df76e95aa2 Changed asset CreatorID to a string 2010-02-22 14:18:59 -08:00
John Hurliman
7665aad002 * Adds CreatorID to asset metadata. This is just the plumbing to support CreatorID, it doesn't modify database backends or OAR files to support storing/loading it 2010-02-22 13:27:17 -08:00
Teravus Ovares (Dan Olivares)
59f6606ecf Endline fix 2010-02-06 00:37:07 -05:00
Melanie
a87a247f05 Revert "Updates all IRegionModules to the new style region modules."
This reverts commit ec3c31e61e.
2010-01-29 07:21:06 +00:00
Revolution
ec3c31e61e Updates all IRegionModules to the new style region modules.
Signed-off-by: Melanie <melanie@t-data.com>
2010-01-23 15:18:52 +00:00
CasperW
3ff28e7a8f Fix a major security problem with osSetDynamicTexture which allowed the deletion of /any/ asset. 2010-01-18 16:52:06 +00:00
Justin Clark-Casey (justincc)
2606bf4a53 minor: very minor formatting change 2009-11-16 19:16:24 +00:00
John Hurliman
afef1ac191 Changing the AssetBase constructors to avoid initializing assets with an unknown asset type, and log an error if it ever does happen 2009-11-05 13:10:58 -08:00
John Hurliman
f56dc5fcda Attempting to improve the robustness of texture decoding by always ignoring LayerInfo.End values and creating guessed default layer boundaries on failed decodes Changed a noisy J2K decode log message from Info to Debug Replacing openjpeg-dotnet decoding with managed CSJ2K decoding. Should be much more reliable, faster, and use less memory
* Re-added openjpeg-dotnet files since they are used elsewhere in OpenSim * Updated prebuild.xml with a reference to CSJ2K

* Renamed IJ2KDecoder and J2KDecoder member names to follow standard naming conventions * Removed j2kDecodeCache cruft and replaced it with the OpenSim cache system * Rewrote the default layer boundary algorithm to use percentages instead of an exponent * Switched from an infinite in-memory cache to an expiring cache (10 minute timeout) * Slightly quieted logging errors for failed texture decodes
2009-09-30 19:26:53 +01:00
Justin Clarke Casey
cb6baacc31 * minor: remove one mono warning 2009-06-12 14:29:42 +00:00
Jeff Ames
a7fcacf8f3 Formatting cleanup. Ignore some generated files. 2009-06-09 18:07:35 +00:00
Dr Scofield
759636f37e From: Alan Webb <alan_webb@us.ibm.com>
This change addresses two issues:

  [1] It adds a flag field to the blendface call which allows the
      caller to indicate whether or not the generated asset is
      temporary, and whether or not the asset being replaced should
      be explicitly retired fromt the memory cache. The decimal
      values correspond to:
      0 - Permanent asset, do not expire old asset
      1 - Permanent asset, expire old asset
      2 - Temporary asset, do not expire old asset
      3 - Temporary asset, expire old asset
      '3' corresponds to the default behavior seen today, and is
          the continued behavior of the non-blendface calls.
  [2] The dynamic texture routines are highly-asynchronous and can
      be scheduled simultaneously on a multi-core machine. The nature
      of the texture management interfaece is such that updates may
      be lost, and the nature of asynchornous operation means that
      they may be processed out of order. A lock has been added to
      ensure that updates are at least atomic. No attempt has been
      made to enforce ordering. The lock applies to the SceneObjectPart
      being updated and is held for the lifetime of the TextureEntry
      used to carry texture updates (the one instance carries all
      faces supported by the prim).

   Users of these services should remember that the dynamic texture
   call is asynchronous and control will be returned *before* the
   texture update has actually occurred. As a result, a isubsequent
   GetTexture call may not return the expected asset id. A script
   must wait for the corresponding TEXTURE_CHANGED event before
   retrieving any texture information.
2009-06-09 06:39:27 +00:00
Jeff Ames
c6cef4bad5 Comment out unused variables / private fields to avoid compiler warnings. 2009-06-04 03:58:04 +00:00
Dr Scofield
25a0a56570 From: Alan Webb <alan_webb@us.ibm.com>
Modify dynamic texture handling so that an explicitly targetted
  face is not scheduled for immediate expiration. The requirement
  for precaching explicitly requires these assets to persist. They
  do however remain temporary.

  This approach leaves the legacy mode of operation (ALL_SIDES)
  unchanged in this respect.
2009-06-03 12:21:14 +00:00
Jeff Ames
840de6c036 Minor: Change OpenSim to OpenSimulator in older copyright headers and LICENSE.txt. 2009-06-01 06:37:14 +00:00
Dr Scofield
3b689e506f From: Alan Webb <alan_webb@us.ibm.com>
Changes to support client-side image pre-caching in the region. This
  commit adds an additional calling sequence to the DynamicTexture data
  and URL calls. The new interface allows a dynamic image to be loaded
  into a specific object face (rather than the mandatory ALL_SIDES
  supported today.
  This is in part fulfilment of ticket #458.
2009-05-22 16:22:49 +00:00
Dr Scofield
1d02636c27 cleaning out warnings.
NOTE: we currently have a gazillion warnings caused stuff flagged as
"obsolete" (OGS1 stuff) --- what's up with that?
2009-05-22 14:57:00 +00:00
diva
5e4fc6e91e Heart surgery on asset service code bits. Affects OpenSim.ini configuration -- please see the example. Affects region servers only.
This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing.
Known problems: 
* HG asset transfers are borked for now
* missing texture is missing
* 3 unit tests commented out for now
2009-05-15 05:00:25 +00:00
Dr Scofield
3312938f6b From: Alan Webb <alan_webb@us.ibm.com>
logs error message on empty data in DynamicTextureModule
2009-05-07 11:58:45 +00:00
Charles Krinke
e957a29ab0 Thank you kindly, Thomax, for a patch that:
Does not set prims to fullbright when an
ossl dynamic texture function is called.
2009-05-03 17:53:43 +00:00
Jeff Ames
54ccca1e2c Update svn properties, add copyright header, formatting cleanup. 2009-03-31 02:00:33 +00:00
Dr Scofield
b5f6aa6ff2 From: Alan Webb <alan_webb@us.ibm.com>
Changes to AssetCache and DynamicTextureModule to eliminate
  opportunities for lost texture updates.
2009-03-24 08:21:50 +00:00
Charles Krinke
8f55b9d735 Mantis#3218. Thank you kindly, TLaukkan (Tommil) for a patch that:
* Added log4net dependency to physxplugin in prebuild.xml.
* Added missing m_log fields to classes.
* Replaced Console.WriteLine with appropriate m_log.Xxxx
* Tested that nant test target runs succesfully.
* Tested that local opensim sandbox starts up without errors.
2009-02-22 20:52:55 +00:00
Sean Dague
383f8b3ac6 From: Christopher Yeoh <yeohc@au1.ibm.com>
The attached patch implements osGetDrawStringSize that looks like:

vector osGetDrawStringSize(string contentType, string text, string
fontName, int fontSize)

in LSL. It is meant to be used in conjunction with the osDraw*
functions. It returns accurate information on the size that a given
string will be rendered given the specified font and font size.
This allows for nicely formatted and positioned text on the generated
image.
2009-02-18 12:56:36 +00:00
Mike Mazur
76c0935ec7 - remove the Metadata property from AssetBase and return all previous
properties as before
- prefix private variables with m_ in AssetBase.cs
- related to Mantis #3122, as mentioned in
  https://lists.berlios.de/pipermail/opensim-dev/2009-February/005088.html
- all services will likely need to be upgraded after this commit
2009-02-17 01:36:44 +00:00
Justin Clarke Casey
93837807ff * refactor: remove AssetCache field hanging off Scene
* This is always available at Scene.CommsManager.AssetCache
2009-02-16 19:15:16 +00:00
Sean Dague
5959e42683 large scale fix for svn props after "the great refactor" 2009-02-12 18:59:45 +00:00
lbsa71
801da4346a * optimized usings. 2009-02-12 09:53:12 +00:00
Dr Scofield
180be7de07 this is step 2 of 2 of the OpenSim.Region.Environment refactor.
NOTHING has been deleted or moved off to forge at this point.  what
has happened is that OpenSim.Region.Environment.Modules has been split
in two:

- OpenSim.Region.CoreModules: all those modules that are either
  directly or indirectly referenced from  other  OpenSim packages, or
  that provide functionality that the OpenSim developer community
  considers core functionality:

      CoreModules/Agent/AssetTransaction
      CoreModules/Agent/Capabilities
      CoreModules/Agent/TextureDownload
      CoreModules/Agent/TextureSender
      CoreModules/Agent/TextureSender/Tests
      CoreModules/Agent/Xfer
      CoreModules/Avatar/AvatarFactory
      CoreModules/Avatar/Chat/ChatModule
      CoreModules/Avatar/Combat
      CoreModules/Avatar/Currency/SampleMoney
      CoreModules/Avatar/Dialog
      CoreModules/Avatar/Friends
      CoreModules/Avatar/Gestures
      CoreModules/Avatar/Groups
      CoreModules/Avatar/InstantMessage
      CoreModules/Avatar/Inventory
      CoreModules/Avatar/Inventory/Archiver
      CoreModules/Avatar/Inventory/Transfer
      CoreModules/Avatar/Lure
      CoreModules/Avatar/ObjectCaps
      CoreModules/Avatar/Profiles
      CoreModules/Communications/Local
      CoreModules/Communications/REST
      CoreModules/Framework/EventQueue
      CoreModules/Framework/InterfaceCommander
      CoreModules/Hypergrid
      CoreModules/InterGrid
      CoreModules/Scripting/DynamicTexture
      CoreModules/Scripting/EMailModules
      CoreModules/Scripting/HttpRequest
      CoreModules/Scripting/LoadImageURL
      CoreModules/Scripting/VectorRender
      CoreModules/Scripting/WorldComm
      CoreModules/Scripting/XMLRPC
      CoreModules/World/Archiver
      CoreModules/World/Archiver/Tests
      CoreModules/World/Estate
      CoreModules/World/Land
      CoreModules/World/Permissions
      CoreModules/World/Serialiser
      CoreModules/World/Sound
      CoreModules/World/Sun
      CoreModules/World/Terrain
      CoreModules/World/Terrain/DefaultEffects
      CoreModules/World/Terrain/DefaultEffects/bin
      CoreModules/World/Terrain/DefaultEffects/bin/Debug
      CoreModules/World/Terrain/Effects
      CoreModules/World/Terrain/FileLoaders
      CoreModules/World/Terrain/FloodBrushes
      CoreModules/World/Terrain/PaintBrushes
      CoreModules/World/Terrain/Tests
      CoreModules/World/Vegetation
      CoreModules/World/Wind
      CoreModules/World/WorldMap

- OpenSim.Region.OptionalModules: all those modules that are not core
  modules:

      OptionalModules/Avatar/Chat/IRC-stuff
      OptionalModules/Avatar/Concierge
      OptionalModules/Avatar/Voice/AsterixVoice
      OptionalModules/Avatar/Voice/SIPVoice
      OptionalModules/ContentManagementSystem
      OptionalModules/Grid/Interregion
      OptionalModules/Python
      OptionalModules/SvnSerialiser
      OptionalModules/World/NPC
      OptionalModules/World/TreePopulator
2009-02-10 13:10:57 +00:00