Commit Graph

84 Commits (ac5d59b9392dbd107ff6e8ac05ab8a3cd48fd694)

Author SHA1 Message Date
TommyTheTerrible ac5d59b939
calcDataSizeJ2C Adjust curve for more than 6 layers (#4018, #4020)
KDU is uploading 2k files with 7 and 8 layers which is shifting the location of discard 1 and 2.

To accommodate, this commit adds a max_layer check based on max_dimension and the MAX_BLOCK_SIZE to allow the extra layers for 2k.

Also shifted the starting size to the MIN_LAYER_SIZE instead of MAX_BLOCK_SIZE's area to allow smaller files to be decoded at discard 5 completely.

Finally able to walk around Fantasy Faire without any gray blobs!
2025-05-05 10:00:36 +03:00
TommyTheTerrible 2f692fbac3
Update calcDataSizeJ2C to stop undersized blocks (#2525)
The initial block area for the pyramid walk should not be smaller than the max_block_size area so need an llmax to not allow multiplication below 1.

This was causing decode errors for complex small images (128x128 or smaller) on discard 1 and 2.
2024-09-09 12:31:00 +03:00
TommyTheTerrible 17f515cd3e
Update LLImageJ2C::calcDataSizeJ2C for better 2k image support (#2406)
Adjusted calculations based on dimensions and assumed maximum block size so that higher discards (4-5) of 2048x2048 images can be decoded with aux/alpha.

(It should also work for dimensions larger than 2048.)

This function will now return a reliable discard 5 data size for unknown dimensions (w and/or h equals 0), which could be used in LLTextureFetch::createRequest to skip the header fetch and go right to a discard 5 decode.

Tested on OpenJPEG 2.5 with partial decode support (opj_decoder_set_strict_mode set to false).

Should work on KDU fine but might be a good idea to test.
2024-08-24 07:21:03 +03:00
Ansariel Hiller 9f7dd01772
Clean up boost includes and remove compiler warning pragma for unreachable code in PCH (#2361) 2024-08-20 18:41:48 +03:00
TommyTheTerrible bffd4a12b8
calcDataSizeJ2C adjusted to use maximum possible components (#2073)
Previous pyramid walking calculation (#2032) assumed the incoming components variable can be accurate but unfortunately the needs_aux is only set to true if the face has an alpha mask setting.

Without this information we must assume the J2C files have the maximum component size of four so that alpha channels are found when decoding both the color and aux textures.
2024-07-20 13:37:23 +03:00
Ansariel Hiller 6535ce51fd
Remove unnecessary code and (re-)add some more compile time constants (#2057) 2024-07-18 10:48:24 +03:00
TommyTheTerrible 2f83b0aed2
Fix: Update calcDataSizeJ2C to pyramid-base file size estimation (#2032)
* Fix: Update calcDataSizeJ2C to pyramid-base file size estimation

Used the loop from the previous LayerFactored method to create a more accurate file size estimation by walking up the pyramid tiles.

Sizes are much larger in many cases and eliminate partial decoder issues with OpenJPEG.

KDU not tested but expected to produce better files as well.

Should also stop decode failures on tiny or very rectangular dimensions.



---------

Co-authored-by: Andrey Lihatskiy <alihatskiy@productengine.com>
2024-07-17 04:02:57 +03:00
Ansariel e2e37cced8 Fix line endlings 2024-05-22 22:40:26 +03:00
Ansariel 1b67dd855c Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-A
# Conflicts:
#	autobuild.xml
#	indra/cmake/CMakeLists.txt
#	indra/cmake/GoogleMock.cmake
#	indra/llaudio/llaudioengine_fmodstudio.cpp
#	indra/llaudio/llaudioengine_fmodstudio.h
#	indra/llaudio/lllistener_fmodstudio.cpp
#	indra/llaudio/lllistener_fmodstudio.h
#	indra/llaudio/llstreamingaudio_fmodstudio.cpp
#	indra/llaudio/llstreamingaudio_fmodstudio.h
#	indra/llcharacter/llmultigesture.cpp
#	indra/llcharacter/llmultigesture.h
#	indra/llimage/llimage.cpp
#	indra/llimage/llimagepng.cpp
#	indra/llimage/llimageworker.cpp
#	indra/llimage/tests/llimageworker_test.cpp
#	indra/llmessage/tests/llmockhttpclient.h
#	indra/llprimitive/llgltfmaterial.h
#	indra/llrender/llfontfreetype.cpp
#	indra/llui/llcombobox.cpp
#	indra/llui/llfolderview.cpp
#	indra/llui/llfolderviewmodel.h
#	indra/llui/lllineeditor.cpp
#	indra/llui/lllineeditor.h
#	indra/llui/lltextbase.cpp
#	indra/llui/lltextbase.h
#	indra/llui/lltexteditor.cpp
#	indra/llui/lltextvalidate.cpp
#	indra/llui/lltextvalidate.h
#	indra/llui/lluictrl.h
#	indra/llui/llview.cpp
#	indra/llwindow/llwindowmacosx.cpp
#	indra/newview/app_settings/settings.xml
#	indra/newview/llappearancemgr.cpp
#	indra/newview/llappearancemgr.h
#	indra/newview/llavatarpropertiesprocessor.cpp
#	indra/newview/llavatarpropertiesprocessor.h
#	indra/newview/llbreadcrumbview.cpp
#	indra/newview/llbreadcrumbview.h
#	indra/newview/llbreastmotion.cpp
#	indra/newview/llbreastmotion.h
#	indra/newview/llconversationmodel.h
#	indra/newview/lldensityctrl.cpp
#	indra/newview/lldensityctrl.h
#	indra/newview/llface.inl
#	indra/newview/llfloatereditsky.cpp
#	indra/newview/llfloatereditwater.cpp
#	indra/newview/llfloateremojipicker.h
#	indra/newview/llfloaterimsessiontab.cpp
#	indra/newview/llfloaterprofiletexture.cpp
#	indra/newview/llfloaterprofiletexture.h
#	indra/newview/llgesturemgr.cpp
#	indra/newview/llgesturemgr.h
#	indra/newview/llimpanel.cpp
#	indra/newview/llimpanel.h
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llinventorybridge.h
#	indra/newview/llinventoryclipboard.cpp
#	indra/newview/llinventoryclipboard.h
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/llinventoryfunctions.h
#	indra/newview/llinventorygallery.cpp
#	indra/newview/lllistbrowser.cpp
#	indra/newview/lllistbrowser.h
#	indra/newview/llpanelobjectinventory.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llpanelprofile.h
#	indra/newview/llpreviewgesture.cpp
#	indra/newview/llsavedsettingsglue.cpp
#	indra/newview/llsavedsettingsglue.h
#	indra/newview/lltooldraganddrop.cpp
#	indra/newview/llurllineeditorctrl.cpp
#	indra/newview/llvectorperfoptions.cpp
#	indra/newview/llvectorperfoptions.h
#	indra/newview/llviewerparceloverlay.cpp
#	indra/newview/llviewertexlayer.cpp
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/macmain.h
#	indra/test/test.cpp
2024-05-22 19:04:52 +02:00
Andrey Lihatskiy 1b68f71348 #824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed 2024-04-29 07:56:09 +03:00
Andrey Lihatskiy 85f2447b3d Merge branch 'main' into marchcat/a-merge
# Conflicts:
#	autobuild.xml
#	indra/llimage/llimage.cpp
#	indra/llui/llsearcheditor.cpp
#	indra/llui/llview.cpp
#	indra/newview/llagent.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llfloatercamera.cpp
#	indra/newview/llfloatereditsky.cpp
#	indra/newview/llfloatereditwater.cpp
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/lloutfitgallery.cpp
#	indra/newview/lloutfitslist.cpp
#	indra/newview/llpanelgroupbulkban.cpp
#	indra/newview/llsidepanelappearance.cpp
#	indra/newview/llvovolume.cpp
2024-04-24 19:28:15 +03:00
Ansariel d0102af56d Merge branch 'main' of https://github.com/secondlife/viewer into DRTVWR-600-maint-A
# Conflicts:
#	indra/llcommon/llapp.cpp
#	indra/llcommon/llapp.h
#	indra/llimage/llimageworker.cpp
#	indra/llui/llcontainerview.cpp
#	indra/llui/llcontainerview.h
#	indra/llui/llkeywords.cpp
#	indra/llui/lltabcontainer.cpp
#	indra/llui/lltextbase.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llfavoritesbar.cpp
#	indra/newview/llfavoritesbar.h
#	indra/newview/llfloaterimnearbychathandler.cpp
#	indra/newview/llfloaterpreference.cpp
#	indra/newview/llhudnametag.h
#	indra/newview/llinventorypanel.cpp
#	indra/newview/llinventorypanel.h
#	indra/newview/llmeshrepository.cpp
#	indra/newview/lloutfitgallery.cpp
#	indra/newview/lloutfitslist.cpp
#	indra/newview/llpaneleditwearable.cpp
#	indra/newview/llpanelprofilepicks.cpp
#	indra/newview/llpanelvoicedevicesettings.h
#	indra/newview/llpreviewscript.cpp
#	indra/newview/llpreviewscript.h
#	indra/newview/llselectmgr.cpp
#	indra/newview/lltranslate.cpp
#	indra/newview/llviewerassetupload.cpp
#	indra/newview/llviewermessage.cpp
2024-04-11 21:59:38 +02:00
AiraYumi 7c8907522f replace boost library to standard 2024-01-08 23:29:21 +02:00
Alexander Gavriliuk 74c8b028d4 SL-20743 Use LLMutex in LLImageBase for internal data thread-safety 2023-12-21 19:12:52 +01:00
Alexander Gavriliuk 7f9438ed2b SL-3508 Crash in LLKDUDecodeState::processTileDecode 2023-12-15 07:45:05 +01:00
Dave Parks b6841d75c2 SL-17219 WIP - Texture pipeline overhaul 2022-04-15 19:02:07 -05:00
Dave Parks 8d20480c5f SL-16148 SL-16244 SL-16270 SL-16253 Remove most BlockTimers, remove LLMemTracked, introduce alignas, hook most/all reamining allocs, disable synchronous occlusion, and convert frequently accessed LLSingletons to LLSimpleton 2021-10-28 18:06:21 +00:00
Andrey Kleshchev 372ed555ed SL-13348 Thread crashing singleton #2
Reverted LLImage to singleton conversion
2020-05-29 21:53:43 +03:00
andreykproductengine 17fae30f72 DRTVWR-493 LLImage to LLParamSingleton 2019-07-25 15:17:11 +03:00
Andrey Kleshchev 6e445e82e2 MAINT-8091 Removed deprecated and unused private memory pooling 2018-01-30 14:03:26 +00:00
andreykproductengine 34d3b49d1f MAINT-2124 Texture allocation issues 2017-12-05 17:54:17 +02:00
Nat Goodspeed acdb050ce5 MAINT-6584: Convert LLImage class hierarchy to standard 'bool'
instead of legacy BOOL.
2016-07-22 11:35:23 -04:00
Nat Goodspeed 71b593e88b MAINT-6584: Streamline static LLImageJ2C implementation API.
Specifically, remove unused function pointer types CreateLLImageJ2CFunction,
DestroyLLImageJ2CFunction and EngineInfoLLImageJ2CFunction.

Also eliminate static fallbackDestroyLLImageJ2CImpl() and
fallbackEngineInfoLLImageJ2CImpl(), leaving only static
fallbackCreateLLImageJ2CImpl().

We do need a factory function to instantiate the appropriate LLImageJ2CImpl
subclass, so leave the fallbackCreateLLImageJ2CImpl() link seam in place.

However, given that every known LLImageJ2CImpl subclass is cheap to
instantiate, make getEngineInfo() a pure virtual method on that subclass: the
static LLImageJ2C::getEngineInfo() method can temporarily construct an
instance to query. While we're at it, make getEngineInfo() return std::string
like LLImageJ2C::getEngineInfo(). It's ridiculous that
fallbackEngineInfoLLImageJ2CImpl() implementations constructed a static
std::string and returned its c_str(), only to have LLImageJ2C::getEngineInfo()
construct ANOTHER std::string from the returned const char*.

fallbackDestroyLLImageJ2CImpl() never did anything useful: it merely deleted
the passed LLImageJ2CImpl subclass pointer as the specific subclass type. But
since LLImageJ2CImpl's destructor is virtual, LLImageJ2C's destructor could
simply delete the stored LLImageJ2CImpl*. In fact, make mImpl a
boost::scoped_ptr<LLImageJ2CImpl> so we don't even have to delete it manually.
2016-07-21 16:49:02 -04:00
Oz Linden c8726aba30 remove execute permission from many files that should not have it 2015-11-10 09:48:56 -05:00
Richard Linden 12f0f8cb72 changed over to manual naming of MemTrackable stats
changed claimMem and disclaimMem behavior to not pass through argument
added more mem tracking stats to floater_stats
2013-10-01 13:46:43 -07:00
Richard Linden e40065f82c BUILDFIX: #include and dependency cleanup 2013-07-19 15:03:05 -07:00
Richard Linden 075a7bcc98 SH-4297 WIP interesting: viewer-interesting starts loading cached scene late
dependency cleanup - removed a lot of unecessary includes
2013-07-18 15:09:45 -07:00
Graham Madarasz bf6182daa8 Update Mac and Windows breakpad builds to latest 2013-03-29 07:50:08 -07:00
Dave Parks 4a5ad35793 MAINT-570 Remove unused memory tracking system LLMemType 2012-07-20 11:42:15 -05:00
simon@Simon-PC.lindenlab.com 1777fa5187 Merge pull from lindenlab/viewer-development as requested by Oz for DRTVWR-148 2012-05-25 15:07:22 -07:00
Merov Linden 5c11b6b2e5 SH-3047 : Tweak of the performance compression data gathering code 2012-05-08 10:16:14 -07:00
Brad Payne (Vir Linden) 678864e4ed merge viewer-release to drano 2012-05-02 13:00:59 -04:00
Merov Linden adf5b5c1ef Final pull from viewer-thx1138 2012-04-13 17:20:53 -07:00
Merov Linden 8b3703bd03 SH-3060 : Always use old byte range on low res (faster), reserve new byte range for high res. 2012-04-13 15:42:54 -07:00
Brad Payne (Vir Linden) 8778010fee fix for linux build failure 2012-04-13 17:03:29 -04:00
Merov Linden c410a4e332 SH-3080 : Implement the TextureReverseByteRange setting so we can play with that parameter 2012-04-12 20:19:56 -07:00
Merov Linden 172b45d5a2 SH-3060 : Complete new byte range computation, clean up and back pedal on some changes that didn't pay of. 2012-04-06 18:28:47 -07:00
Merov Linden 91094d92a7 SH-3060 : Implement new byte range computation, cleaned up use of compression rate as well. 2012-04-05 22:05:00 -07:00
Merov Linden 782981866a SH-3060 : New byte range implementation. Intermediate (not working) state. 2012-04-04 18:58:34 -07:00
Merov Linden df09fd8e8b SH-3060 : Preliminary implementation of the new byte range computation, implement setting to turn it on or off 2012-04-02 19:05:32 -07:00
Merov Linden bc6f669ff4 SH-3047 : Read the number of levels from the j2c image header instead of relying on hacked computation based on width / height. 2012-03-15 13:01:14 -07:00
Richard Linden 5a14a67e06 converted a bunch of narrowing implicit conversions to explicit 2012-02-01 13:03:46 -08:00
Dave Parks 4924f0c99b b782a75c99e6 backout cleanup 2011-10-14 12:38:48 -05:00
Dave Parks c0ca8e5e2e Merge backout of b782a75c99e6 2011-10-14 11:58:35 -05:00
Dave Parks 4331c112ab Backed out changeset b782a75c99e6 2011-10-14 11:52:40 -05:00
Xiaohong Bao d951267467 Merge from viewer-development 2011-07-15 12:14:34 -06:00
Xiaohong Bao b594d3b04d add debug mode to track the memory allocation/deallocation. 2011-05-10 21:02:20 -06:00
Merov Linden c6c1419faa EXP-664 : Make encoding parameters more resilient to bad entries, add levels as encoding parameters, update test applet to support this 2011-05-04 22:43:51 -07:00
Merov Linden e752e91828 STORM-746 : add precincts and blocks arguments taken into account in j2c output 2011-04-04 23:49:40 -07:00
Merov Linden 83ec0cd62f STORM-746 : add new arguments for precincts and blocks on output, region and level on input, add code for input loading restriction 2011-04-04 18:37:32 -07:00