Commit graph

157 commits

Author SHA1 Message Date
Pavel Krajcevski da010a465f Formatting fixes 2013-03-06 20:52:15 -05:00
Pavel Krajcevski 2a41e873fa Add function for compressing a texture using atomics... 2013-03-06 20:44:25 -05:00
Pavel Krajcevski 599ded49d1 Remove global scope min/max 2013-03-06 20:38:00 -05:00
Pavel Krajcevski bacf327246 Fix MSVC compiler errors with the atomics 2013-03-06 19:57:20 -05:00
Pavel Krajcevski 342614a6ec Fix the horribly wrong check for atomic support with MSVC 2013-03-06 19:56:38 -05:00
Pavel Krajcevski 2127c04987 Add flag to compression settings to use atomics. 2013-03-06 19:01:31 -05:00
Pavel Krajcevski c475ee1dec Use standard library min/max 2013-03-06 19:01:19 -05:00
Pavel Krajcevski 53fe825e49 Add first pass of atomic implementation.
This is a first pass of what I believe to be a not too terrible
implementation of a cooperative thread-based compressor. The idea is
simple... If a compressor is invoked with the same parameters on multiple
threads, then the threads cooperate via an atomic counter to compress the
texture. Each thread can take as long as possible until the texture is finished.

If a caller calls a compression routine that has different parameters, then
it will help the current compression finish before starting on its own compression. In this
way, we can split the textures up among the threads and guarantee that we maximize the
resource usage between them. I.e. this becomes more efficient:

Thread 1:    Thread 2:   Thread N:
  tex0         texN        tex(N-1)N
  tex1         texN+1      tex(N-1)(N+1)
  ..           ..          ..
  texN-1       tex2N       tex(N-1)N

I have not tested this for bugs, so I'm still not completely convinced that it is deadlock-free
although it should be...
2013-03-06 18:47:15 -05:00
Pavel Krajcevski 4d6e75ab97 Fix whitespace issues
Why do I do this so much?
2013-03-06 18:27:34 -05:00
Pavel Krajcevski 8ebdc30394 Add Yield function to global namespace
In order to develop a threadsafe texture compression function, we will need
to preempt threads in order to not kill performance while we initialzie everything...
2013-03-06 17:29:22 -05:00
Pavel Krajcevski 2deb71eec9 Generalize the ALIGN macro 2013-03-06 17:23:17 -05:00
Pavel Krajcevski ca85a663a1 Add detection for atomics
Atomic operations are both supported by the platform and the compiler. If we want
to provide a threadsafe implementation of our compression function, we need to make sure
that the proper settings are available.
2013-03-06 17:16:36 -05:00
Pavel Krajcevski 771b91b795 Fix a bunch of memory leaks. 2013-02-07 17:01:38 -05:00
Pavel Krajcevski aebeb38ad0 Reformat usage string. 2013-02-07 17:01:21 -05:00
Pavel Krajcevski 8cad373e8e Small refactoring changes. 2013-02-05 21:54:06 -05:00
Pavel Krajcevski 8ca5d7ac44 Add interface between buffers and parallel stages. 2013-01-30 23:37:18 -05:00
Pavel Krajcevski 5e970c3122 Make compiler happy. 2013-01-30 22:53:35 -05:00
Pavel Krajcevski f704fc55af Flesh out the first few functions for our parallel stages. 2013-01-30 22:43:19 -05:00
Pavel Krajcevski ea16d1af44 Add beginnings of our scaffolding for parallel compression. 2013-01-30 22:43:18 -05:00
Pavel Krajcevski af25b83356 Fix some more compiler warnings. 2013-01-29 17:37:20 -05:00
Pavel Krajcevski 0afff4188e Fix warnings on Windows and support the treat warnings as errors option. 2013-01-29 13:39:45 -05:00
Pavel Krajcevski fa5d5e865c Fix some more compiler warnings. This time some were actually very useful\! 2013-01-28 20:20:52 -05:00
Pavel Krajcevski ff1c3658fb Always set all of the compiler warnings on and make sure to include the MSFT extensions if we're on gcc. Furthermore, include an option to treat warnings as errors. I will probably always have this on, but other people who decide to use the library probably won't want it... 2013-01-28 18:11:29 -05:00
Pavel Krajcevski 42e4e8d4aa Amalgamate the different architecture problems with printf... 2013-01-28 17:49:57 -05:00
Pavel Krajcevski 8c666bcd3f Fix more compiler warnings 2013-01-28 17:37:43 -05:00
Pavel Krajcevski c7a2e24b07 Fix some more compiler errors 2013-01-28 17:16:36 -05:00
Pavel Krajcevski 08c919d965 Fix some linker errors... 2013-01-28 17:04:58 -05:00
Pavel Krajcevski 1b30efe488 Got rid of some more compiler warnings. 2013-01-28 16:57:15 -05:00
Pavel Krajcevski 08df6f6d65 Fix more compiler warnings. 2013-01-28 16:42:11 -05:00
Pavel Krajcevski aaf16eacc8 Remove SIMD path at the moment. It needs to be reworked. 2013-01-28 16:37:20 -05:00
Pavel Krajcevski 5dd1fbbd48 Fix a lot of compiler warnings. 2013-01-28 16:30:04 -05:00
Pavel Krajcevski 28a55cc268 Remove pedantic flag because some things are just obnoxious (like no anonymous structs in unions. 2013-01-28 16:29:52 -05:00
Pavel Krajcevski 3cd699ab58 Add compiler flags to GCC or G++ to treat warnings as errors. 2013-01-28 11:54:47 -05:00
Pavel Krajcevski f03d381092 Fix indentation in unix command-line tool and also make sure to not use strcat for our logfile since it messes up the compressed image output. 2013-01-28 11:51:36 -05:00
Pavel Krajcevski cdbf72b6c0 Merge MSVC support into master. 2013-01-28 11:49:03 -05:00
Pavel Krajcevski deac1e7fad Fix some compiler errors... 2013-01-28 11:44:14 -05:00
Pavel Krajcevski 45e926536a Move Thread.h out of the include directory, and update the BlockStatManager to compensate. 2013-01-27 14:36:19 -05:00
Pavel Krajcevski 40a0947649 Fix small bug where we enter an infinite loop after we finish reading a file. 2013-01-27 14:02:39 -05:00
Pavel Krajcevski 7049dc3077 Update windows module to contain all necessary libs... 2013-01-27 13:35:10 -05:00
Pavel Krajcevski 61a8d4e2c7 Add submodule to keep track of windows include files and libraries 2013-01-27 12:14:55 -05:00
Pavel Krajcevski f4629fa35a Add boost libraries for windows. 2013-01-27 11:49:06 -05:00
Pavel Krajcevski 6d85bc9467 Determine what architecture the compiler is for msvc by how large our void pointers are. 2013-01-27 11:49:05 -05:00
Pavel Krajcevski f1e502c8f5 Remove hack for adding a libpath flag in visual studio by requiring extra libraries from boost. 2013-01-27 11:49:05 -05:00
Pavel Krajcevski 37d8cc797c Add in a small hack to add the boost library directory to the linker command line in order to be able to compile. 2013-01-26 14:57:33 -05:00
Pavel Krajcevski 42c350878e Fix property variable. 2013-01-26 14:11:37 -05:00
Pavel Krajcevski 5eba3ba6f7 Add license 2012-11-15 11:51:55 -05:00
Pavel Krajcevski cb126c40ce Add the correct hooks to compile as a win32 console app. 2012-11-07 18:22:12 -05:00
Pavel Krajcevski 8761821220 More compiler fixes. 2012-11-07 18:01:02 -05:00
Pavel Krajcevski 680625d03e Fix a bunch of compiler warnings. 2012-11-07 17:10:26 -05:00
Pavel Krajcevski 05e6ca0bc9 Fix windows issues with blockstats... 2012-11-07 16:52:06 -05:00