Commit Graph

1049 Commits

Author SHA1 Message Date
4856af5f25 This was SVN commit r3753. 2006-04-12 01:18:38 +00:00
kevmo
589c03a502 # housekeeping
Fixed includes to header files that were renamed, added defines for
ia32_fminf and ia32_fmaxf in sysdep.h, and added declarations for the
same in ia32.h

This was SVN commit r3752.
2006-04-12 01:12:18 +00:00
836cd08d5e # add CppDoc file header to all files, along with their descriptions.
also:
- renamed wdll to delay_load, and wdll_ver to dll_ver
- removed empty wcpu

This was SVN commit r3751.
2006-04-11 23:59:08 +00:00
cde3c55eae # more SwEng improvements in snd_mgr / wdetect
snd_mgr: replace al_check("funcname") with AL_CHECK macro; allow
disabling WIN_LOADLIBRARY_HACK.
wcpu: move sys_on_each_cpu here from wsysdep
split up wdetect into wgfx, wsnd, wdll_ver

This was SVN commit r3748.
2006-04-11 01:45:07 +00:00
34637ba5dc # refactor sysdep API, split it into parts
- split up detect.cpp into snd, cpu, gfx (headers were already split)
- rename detect functions for more clarity (e.g. get_cur_vmode ->
gfx_get_video_mode)
- rename lib/res/sound/snd to snd_mgr to avoid conflict with
sysdep/snd.cpp
- waio: set errno in aio_rw (addresses bug #73)

This was SVN commit r3745.
2006-04-10 20:12:25 +00:00
674bbc3735 # archive builder now unmounts and deletes old archives after building a new one
vfs_optimizer: also refactor existing_archives. all existing root dir
entries are filtered and only archives remain.

This was SVN commit r3743.
2006-04-10 19:09:11 +00:00
3dec1bfb20 # bugfix for #78: definition of PATH_MAX was too small/mixed up with VFS_MAX_PATH
This was SVN commit r3741.
2006-04-10 16:59:21 +00:00
6eac18d9fe # housekeeping (improve unreachable code annotations and avoid compiler warnings)
adts: use SAFE_FREE
config: add CONFIG_FINAL; use it in
compression,vfs_optimizer,scriptablecomplex
lib: add discussion of unreachable code avoidance; revise UNREACHABLE
and add NODEFAULT
ogl_tex, tex_dds: remove some unnecessary UNREACHABLE
sysdep: move compiler-specific implementation of UNREACHABLE here.
use NODEFAULT in snd, wdbg, wposix, wsdl

This was SVN commit r3739.
2006-04-10 06:44:54 +00:00
f3aa2dd222 # housekeeping:
* mapreader: increases progress bar update interval (was calling back
10x for 1%, which is an excessive slowdown)
* lib_errors: add ERR_MEM_OVERWRITTEN
* mmgr: replace debug_assert(0) with more specific errors

This was SVN commit r3737.
2006-04-09 07:46:37 +00:00
b37d3f2095 # fix W4 warnings on VC
This was SVN commit r3726.
2006-04-03 22:06:09 +00:00
44901d38b9 # further documentation and improvements to lib/res/file code
FILE_CACHE_BLOCK flag used more safely (copied in afile_read)
add file_sector_size (set from sysdep code)
documented and organized FileFlags
moved publically visible file_buf* decls to file.h; add FileBufFlags
file_buf_get: moved to file_io and renamed because it is not a part of
the file_buf manager itself
FILE_BLOCK_SIZE no longer exposed to users - it's an implementation
detail. for alignment purposes, you should use file_sector_size (less
wasteful)
add page_aligned allocator (mmap)
write buffers now allocated via file_buf_alloc(FB_FROM_HEAP) (avoids
wasting cache space)
append trace runs into the trace file (-> better input data for archive
ordering)
document lib_errors.h
tex_load: add provision for file_flags, used by ogl_tex_load to prevent
caching file data

simulation, entitymanager: add perf measurements

This was SVN commit r3725.
2006-04-03 21:28:10 +00:00
5738bd4820 # overhauled error handling; made sure all low-level function failures are caught at the source.
* replace all "return ERR_*" with WARN_RETURN(ERR_*) - makes sure
function failures are noticed *at the cause*, not later
* LibError_from_* now take bool warn_if_failed param
* replace more debug_warns with dedicated error codes (allows localized
error reports and doesn't spam the EXE with strings)

This was SVN commit r3722.
2006-04-03 01:00:45 +00:00
b5ad9faf74 # fix STL complaint when running on VC8 and building archive
(STL implementation AFAICS incorrectly disallows taking &vector[0] if
empty but memory has been reserved)

This was SVN commit r3715.
2006-04-02 04:50:47 +00:00
0d648b2df8 #More accurate bounds calculations to improve shadow resolution
and a fix for the auto-build: #define enums from EXT_framebuffer_object

* clip shadow bounds to frustum
* add CBrush, a class representing a convex object

This was SVN commit r3695.
2006-03-26 21:58:48 +00:00
8fd256c458 #Use EXT_framebuffer_object when available
* noframebufferobject configuration in system.cfg can be used to
  disable EXT_fbo (in case drivers are flaky etc.)
* shadow texture size now honours the OpenGL maximum texture size as
reported
  by the implementation

This was SVN commit r3693.
2006-03-26 17:36:33 +00:00
0e09451cfb # bugfix
avoid warning due to imbalanced buffer count

This was SVN commit r3687.
2006-03-25 21:44:25 +00:00
d6abc57868 # add instrumentation to file_cache; bugfixes
adts: whip together inefficient LRU cache manager (mostly for comparing
vs. Landlord)
file_cache: fix self-test (now correctly deals with small cache sizes)
file_stats: more stats for file cache
trace, vfs: bugfix: ignore writes recorded by the trace

This was SVN commit r3684.
2006-03-25 07:08:29 +00:00
8371f42da9 # IO bugfixes and improvements; more support for cache/seek measurements
adts: slight improvements
allocators: change POOL_VARIABLE_ALLOCS to -1 for safety; fix invalid
assumptions of it being 0
lib: more expressive param names
file: add file_get_random_name for randomized trace generation; allow
file_cache.h to declare externally visible file_buf_alloc API

file_cache: zero-length file bugfix; also add several flags to the API
routines allowing statistics gathering to be disabled (avoids distorting
stats due to e.g. trace_entry_causes_io cache simulation)

file_stats: add archive builder info; separate IO timing and seek
accounting (-> correct results)

trace: add random generation capability
vfs: made responsible for cache hit/miss accounting (fixes cache miss
rate display)

This was SVN commit r3681.
2006-03-24 21:56:00 +00:00
f5f4670d7f tweaks for thesis and minor fixes.
file: change block size to 32kb (=> yields highest throughput)
archive, file_io: add additional block cache forwarding path when
reading uncompressed data from archive (avoids repetitive IOs)
file_io, file_stats: fix inaccurate and incorrect IO throughput
calculation
file_stats: refactor some calculations to avoid division by 0

This was SVN commit r3665.
2006-03-18 21:28:47 +00:00
afae448b11 fix: memory leak fix wasn't correctly resetting root node during tree_clear. this caused crash after creating archive.
This was SVN commit r3656.
2006-03-18 01:07:05 +00:00
6eda8c2209 file_cache: make infinite loop warning less likely
vfs_mount: only notify archive builder of files that are archivable
vfs_optimizer: fix should-rebuild logic; make 2 criteria optional and
disable in final release for convenience

This was SVN commit r3651.
2006-03-16 18:57:09 +00:00
7564827a8a adts: DynHashTbl: safely handle calling clear() right before dtor
vfs: remove second call to tree_init (now done by vfs_mount)
vfs_tree: fix memory leak due to not destroying root node. commented and
armor-plated things while at it.

This was SVN commit r3647.
2006-03-16 07:16:24 +00:00
37c99471c2 archive: bugfix: archive_build_cancel is now no-op if build not in progress.
This was SVN commit r3642.
2006-03-15 21:37:30 +00:00
26dc8cc4c8 - tex_dds: fix comment; enable warning on unsupported formats
- renderer: avoid particle-emitter memory leak warnings

This was SVN commit r3639.
2006-03-15 18:32:24 +00:00
f037b13fc6 use new archive_open return value to ignore invalid zip files (and not add them to VFS)
This was SVN commit r3635.
2006-03-15 05:56:01 +00:00
3d93740456 - allocators: SingleAllocator: renamed free method to release() to avoid need for nommgr
- lib, sysdep.h: move DIR_SEP to sysdep.h
- archive, compression: minor touchups
- zip: large refactor: all accesses to little-endian structs are now
done by helper functions (fixes bug: wasn't endian swapping ECDR). also
detect unfinished zip files (for VFS mount to ignore)
- tex_dds: fix comment

This was SVN commit r3634.
2006-03-15 05:18:32 +00:00
1d5308316e bugfixes for problems reported by philip: (thanks!)
file_cache: add warning to cache_allocator to catch incorrect usage /
bugs
vfs_optimizer.cpp: tweak miniarchive threshold (currently have config
files in there; don't want those to trigger rebuild every time)
zip: clarification
tex_dds: we now bother checking the DDPIXELFORMAT mask bits because
uncompressed DDS files may be stored in any pixel component order, but
we require RGB for efficiency.
wsdl: fix failure to update; was constantly queuing events if mouse was
out of window

This was SVN commit r3627.
2006-03-14 07:20:12 +00:00
d776024848 bugfix: was not propagating mount point flags to Mount structure created for archives. this could result in no "archivable" files being found during archive build, leading to ERR_DIR_END.
This was SVN commit r3624.
2006-03-11 03:30:36 +00:00
b605cc8a85 adts: fix brain-dead bug that was slowing down Divider_Recip
vfs_optimizer: add note on future improvements

This was SVN commit r3622.
2006-03-10 22:35:58 +00:00
201aae41d9 file: pp_set_dir fix: safely handle case where pp.path already contains data; add TFile* member to DirEnt
vfs: add VFS_MOUNT_ARCHIVABLE flag; allow archive builder to only
include files from mount points with this set.

VFSUtil: make EnumDirEnts more efficient while at it (uses PathPackage
and filename storage)

This was SVN commit r3618.
2006-03-09 21:37:23 +00:00
e0280949fd file_cache: fix: add buf/size combo to exact_buf_oracle if file_io rounded size up.
trace: split code out of vfs_optimizer (was getting too large)
vfs_mount: expose API to unmount all (needed to be able to delete
archives after building)
vfs_optimizer: safely handle empty connection/node lists;
refactored+documented
vfs_tree: eliminate 'file in root dir' warning (can happen easily
enough)

rest: fixes/minor tweaks

This was SVN commit r3610.
2006-03-07 05:44:34 +00:00
9925188b68 Whoopsie - missed some brackets in wsysdep
This was SVN commit r3609.
2006-03-06 08:16:29 +00:00
bd922cbe02 Unix cursor support, some gcc warnings, etc
This was SVN commit r3608.
2006-03-06 03:46:12 +00:00
6e15ed1e82 fix bug related to FileId use; now safer due to separate node_from_id function
This was SVN commit r3605.
2006-03-05 07:35:42 +00:00
16fe4eeda2 - adts: add TODO comments
- file_cache: add checker for allocations (catches bugs in debug mode);
fix bug that freed buffers even thought they were on extant list.
- vfs_mount: bugfix: was passing P_path to vfs_opt_notify when it should
be V_path
- vfs_optimizer: big refactor; fix bugs in TourBuilder causing some
files to be omitted from archive (thus forcing unnecessary archive
rebuild - because #files not in archive was too big)

This was SVN commit r3602.
2006-03-04 18:58:09 +00:00
c1ca8c978c Various Linux build fixes.
This was SVN commit r3601.
2006-03-04 18:41:22 +00:00
ca1ac3034e fix 2 gnarly bugs:
- adts: Cache.remove_least_valuable was returning false prematurely even
though there were still some items pending eviction; that meant they
remained in cache
- file_cache: wasn't clearing exact_buf_oracle on reset. also made
make_read_only pass correct exact_buf rather than just rounding down.

This was SVN commit r3589.
2006-03-03 20:49:19 +00:00
dda6268466 - cgui: now convert EventName to lowercase in SendEventToAll
- compression: now use "fastest" compression mode and more memory unless
in FINAL build. this greatly speeds up archive generation at expense of
1.5% size increase (fine during development). done because profiling
shows ZLib accounts for 78% of CPU; practically nothing else shows up,
which shows effectiveness of compressing in parallel with reading from
disk.

- file_cache: documented; fixed several potential issues with exact_buf
when invalidating files.

This was SVN commit r3586.
2006-03-03 06:03:16 +00:00
39a9eb19cf again raised "infinite loop" warning threshold because it was still being hit, apparently. value is still plausible.
This was SVN commit r3582.
2006-03-02 07:23:30 +00:00
04b72b29b4 archive: new rule for choosing whether to compress files or not: leans heavily toward the former because that uses less memory when loading (less loss due to internal fragmentation)
everything else: bugfix: buffers added to extant list via
file_buf_retrieve (i.e. moved from cache to extant list) didn't have
their long_lived flag carried over; this caused a "not freed
immediately" warning.

This was SVN commit r3580.
2006-03-02 02:21:55 +00:00
0fd85b76db automatic archive builder now functional and enabled.
- allocators.cpp: fix: make sure all pool fields are reset in
pool_free_all; correct matrix self-test
- lib: fix self-test
- lib_error: give "informational" return codes values > 100 (allows
multiplexing with percent indicator)
- archive: add clarification to afile_enum; use vfs_load when building
archive (fixes caching problem); add support for progressive archive
creation
- file: allow pp_set_dir's path to end in slash (simplifies other code);
add file_exists
- file_cache: add stats+sanity checks to allocator; improve ExtantBufMgr
find(); add ExactBufOracle to translate padded address returned by Cache
to what was actually allocated; relax infinite-loop check; fix
file_cache_reset
- file_io: refactor callback logic so it can be used by vfs (needed for
vfs_load)
- vfs: vfs_load now supports calling back (required for archive builder)
- vfs_mount: optimize path caching in afile_cb: due to atom_fn system,
string compare can be done via pointer compare
- vfs_optimizer: support auto-build of archive (progressive); improve
should-build-archive check (WIP)
- vfs_path: add util functions (also used in screenshot code)
- vfs_tree: simplify pathname storage
- wposix: mmap bugfix
- main: call progressive archive builder; skip reload when doing so
(documented)
- JSInterface_VFS+scriptglue: add archiveBuilderCancel
- ps/Util: use new vfs_path helper function for cleverer screenshot
naming (correctly handles some being deleted)

This was SVN commit r3578.
2006-03-01 22:31:11 +00:00
78a5202e49 vfs_mount: bugfix: choose newer version of a file if present in loose dir and archive
vfs_optimizer: add enable/disable logic for trace
vfs_tree: add code to determine most recent file

This was SVN commit r3562.
2006-02-25 19:26:00 +00:00
4a0baf529d rename free() to dealloc() to avoid need for #include "nommgr.h"
This was SVN commit r3557.
2006-02-23 18:58:16 +00:00
bc07b9ff0a file code v2 is now feature complete and works.
- adts: add basic benchmark to self-test; use fminf instead of MIN; fix
overly pessimistic invalidation in Landlord_Cached
- allocators: no longer complain if DynArray is full
- lib: warn if rand() min=max
- archive: bugfixes: plug leak, correctly handle 0-length files, carry
over flags when reading uncompressed file from archive
- file: expose file_get_sorted_dirents and implement file_enum in terms
of that
- file_cache: many bugfixes (especially related to CacheAllocator
freelist)
- vfs_optimizer: finish implementation of archive builder
- zip: correctly handle 0-length files
- tex: add tex_is_known_extension
- sysdep: add efficient fminf implementation (assumes P6+)

- config: update archive builder call site
- gamesetup: add call for delayed self tests
- entity: return JSVAL_VOID as per philip's suggestion

This was SVN commit r3553.
2006-02-23 07:55:32 +00:00
4eb33aa89d more dox
This was SVN commit r3541.
2006-02-19 21:06:22 +00:00
0a368a4fec massive update to adts: cache now implemented via templated policy classes.
Entity.h: fix minor warning

This was SVN commit r3539.
2006-02-19 18:51:00 +00:00
71dab351bd Changes to const void* hash function as suggested by Jan in
http://www.wildfiregames.com/forum/index.php?showtopic=9642&pid=167148&st=20&#entry167148

This was SVN commit r3532.
2006-02-18 23:21:05 +00:00
dbdbb84f41 fix for VC7, whose /GS check is apparently much less thorough and doesn't include __security_init_cookie
This was SVN commit r3521.
2006-02-16 20:45:38 +00:00
38a3dba3d2 avoid R6035 on VC8 when entry() has not-commented-out __try and compiled with /GS
This was SVN commit r3520.
2006-02-16 20:23:27 +00:00
9de2ec0c20 ObjectBase.cpp: replace incorrect RNG with rand(min,max)
lib: remove rand_up_to - superceded by rand(min,max)

This was SVN commit r3515.
2006-02-15 04:03:29 +00:00