Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
following promotion of DRTVWR-587
|
|
|
|
Moving everything manually doesn't seem like a right way, probably need
to make LLFolderView draw grids and then relace with LLInventoryPanel
|
|
|
|
|
|
This PR fixes the non-working material hashing for LLGLTFMaterial instances.
There are several issues in the current code, stemming to the fact that the hashing is performed on the block of the member variables:
1.- There are padding bytes between member variables, even after rearranging them to avoid most of the padding; in particular, the std::array's size is not a multiple of 4 bytes (64 bits), and most compilers will pad them to the next 4-byte aligment as a result. Note that C++ standards do not impose the zeroing of padding bytes on construction of a class instance, with only a couple exceptions (such as explicit zero-initialization). Those bytes MUST therefore be zeroed by us on construction.
2.- The TextureTransform strutcure getPacked() method did not touch some of the packed bytes, and as a result could *potentially* cause an issue for hashing when applied to a transform of another material instance.
3.- With the recent addition of the local textures tracking map, the said map cannot be hashed as a block of memory (map pairs will typically be allocated on the heap or on the stack, not in the memory block used by member variables).
This PR solves all these issues and offers proper hashing of LLGLTFMaterial instances.
|
|
|
|
|
|
# Conflicts:
# indra/llcommon/CMakeLists.txt
# indra/newview/llspatialpartition.cpp
# indra/newview/llviewergenericmessage.cpp
# indra/newview/llvoavatar.cpp
|
|
Likely happened because some textures had 0 height width initially, but
this is for UI/preview so request maximum either way.
|
|
|
|
scale thumbnail textures down to 256 when needed. As we do to chat icons.
# Conflicts:
# indra/newview/llviewertexture.cpp
|
|
* SL-20570 Fix for lossy (and square) normal maps when importing GLTF materials.
* SL-20582 Fix for overriding to alpha mode blend not working. Incidental decruft of dead code (thanks, Rye!)
|
|
failures during login
also added suggested continue statements, and removed obsolete
LLInventoryItem::fromLLSD deserialization codepath.
|
|
|
|
|
|
|
|
|
|
|
|
Update editor in which texture changed to local
|
|
'origin/DRTVWR-559' (#489)
|
|
using for DRTVWR-559
|
|
|
|
ensure inventory skeleton loading doesn't block the message system from processing packets.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
multihreaded GL not working on mac (thanks, Rye!)
|
|
SL-20397: Fix material set from script not updating when the GLTF material has non-default texture transforms
|
|
has non-default texture transforms
|
|
|
|
|
|
implicitly enable reflection probes or shadows.
|
|
|
|
This reverts commit 9d49edbc48d81f820870d43edb2c975beffa5485.
|
|
|
|
Material
|
|
We define a specialization of LLSDParam<const char*> to support passing an
LLSD object to a const char* function parameter. Needless to remark, passing
object.asString().c_str() would be Bad: destroying the temporary std::string
returned by asString() would immediately invalidate the pointer returned by
its c_str(). But when you pass LLSDParam<const char*>(object) as the
parameter, that specialization itself stores the std::string so the c_str()
pointer remains valid as long as the LLSDParam object does.
Then there's LLSDParam<LLSD>, used when we don't have the parameter type
available to select the LLSDParam specialization. LLSDParam<LLSD> defines a
templated conversion operator T() that constructs an LLSDParam<T> to provide
the actual parameter value. So far, so good.
The trouble was with the implementation of LLSDParam<LLSD>: it constructed a
_temporary_ LLSDParam<T>, implicitly called its operator T() and immediately
destroyed it. Destroying LLSDParam<const char*> destroyed its stored string,
thus invalidating the c_str() pointer before the target function was entered.
Instead, make LLSDParam<LLSD>::operator T() capture each LLSDParam<T> it
constructs, extending its lifespan to the lifespan of the LLSDParam<LLSD>
instance. For this, derive each LLSDParam specialization from LLSDParamBase, a
trivial base class that simply establishes the virtual destructor. We can then
capture any specialization as a pointer to LLSDParamBase.
Also restore LazyEventAPI tests on Mac.
|
|
They do work fine on clang... unblocking the rest of the team during diagnosis.
|
|
with /bigobj
|
|
|
|
|
|
|