21 Commits

Author SHA1 Message Date
Boris I. Bendovsky
d21ff67554
[EAX] Add separate source state for each version (#720) 2022-06-18 13:36:42 -07:00
Boris I. Bendovsky
074dbef2e3
[EAX] Add separate effect state for each version (#705)
* [EAX] Add separate effect state for each version

* [EAX] Don't use EAX call as data member
2022-05-24 02:19:14 -07:00
Chris Robinson
65e4c20c27 Move EAX files to their own sub-directory 2022-05-16 02:08:18 -07:00
Chris Robinson
2492d76896 Ensure deferred EAX effect properties are committed 2022-03-04 13:19:00 -08:00
Chris Robinson
1f9390f6f6 Use a simpler loop to enumerate sources 2022-02-21 21:46:38 -08:00
Chris Robinson
39708f9831 Avoid a variable limit on EAX filters
I'll assume for now that the limits for the EAX properties will keep the filter
gain from getting out of hand. The filter's gainhf is relative to the gain and
is limited to 0dB max.
2022-02-18 07:02:38 -08:00
Chris Robinson
3e6d210767 Avoid more unnecessary atomics 2022-02-13 21:00:57 -08:00
Chris Robinson
66f6cf121e Commit source EAX properties when not deferring
And make sure they get committed when resuming processing.
2022-02-13 17:22:41 -08:00
Chris Robinson
7896f6bae9 Inline some more simple getters 2022-02-08 22:50:06 -08:00
Chris Robinson
3c9a705210 Handle AirAbsorptionGainHF as a native context property 2022-02-08 22:41:44 -08:00
Chris Robinson
de87cc98d5 Apply updates for EAX context properties 2022-02-08 20:27:40 -08:00
Chris Robinson
7864895ab6 Ensure sources update together from EAX commits
... when a listener property change forces a commit.
2022-02-08 16:36:40 -08:00
Chris Robinson
843cff0537 Hold mPropLock when deferring updates 2022-02-08 09:39:02 -08:00
Chris Robinson
370f862392 Inline ALCcontext::has_eax 2022-02-08 09:29:00 -08:00
Chris Robinson
be80e49f1b DisabledEffects won't change so EAX can just check it once 2022-02-08 08:21:06 -08:00
Boris I. Bendovsky
d420776808
EAX various fixes (#657)
* [EAX] Fix effect GUID validation

Only NULL and REVERB was valid.

* [EAX] Fix default FX slot flags

EAX4 and EAX5 both sets to ENVIRONMENT.

* [EAX] Set default values for legacy FX slots in the initialization

* [EAX] Fix FX slot locking policy

Fail on attempt to load an effect or change a lock for EAX4 "set" call.
Unlock legacy FX slots on any EAX5 call.

* [EAX] Allow DEFER flag for "get" calls.

* [EAX] Make speaker configuration read-only

* [EAX] Initialize speaker configuration

* [EAX] Commit EAX source on a 3D source parameter call

Reference: EAX 4.0 Programmer's Guide

* [EAX] Commit EAX source on a 3D listener parameter call

Reference: EAX 4.0 Programmer's Guide

* [EAX] Commit source when it begins to play

Reference: EAX 4.0 Programmer's Guide
2022-02-08 08:20:46 -08:00
Chris Robinson
f23c7fe8ba Avoid a proxy ALfilter object for EAX source properties 2022-02-07 13:53:57 -08:00
Chris Robinson
816bd8ab30 Move ALSOFT_EAX definition to config.h
And disable it by default for non-Windows targets
2022-01-30 05:42:44 -08:00
Boris I. Bendovsky
19ed994dc3
Add EAX extensions (EAX 2.0-5.0, X-RAM) (#632)
* Add EAX extensions (EAX 2.0-5.0, X-RAM)

* Comment out C++17 leftovers

* Remove everything related to patching

* Update alsoftrc.sample

* Rewrite integration

* Fix GCC compilation under Linux

* Always reset EAX effect properties when loading it into FX slot
2022-01-30 04:47:32 -08:00
Chris Robinson
633c332dee Work around a MinGW thread_local bug
MinGW-w64 generates bad code when accessing extern thread_local objects.
Wrapper functions are used to ensure it only accesses them from the same place
they're defined. This unfortunately adds a bit of overhead for what should be a
relatively simple thing.

These functions are inlined for non-MinGW targets, avoiding the overhead on
non-affected targets.
2021-12-20 10:27:39 -08:00
Chris Robinson
e3c0b60cc6 Rename alcontext.h and move some functions to context.cpp 2021-04-27 19:04:45 -07:00