Compare commits

..

4118 Commits

Author SHA1 Message Date
Zangetsu38 bd8edee77f Some Change in Gui. 2016-02-15 14:39:52 +01:00
Raul Tambre 787619cdba Merge pull request #1496 from kd-11/rsx_textureinfo_fix
Correctly fetch correct pitch and depth for textures from RSX
2016-02-15 11:03:48 +02:00
kd-11 7d70be42af Correctly fetch correct pitch and depth for textures from RSX
Include vertex textures too

Set correct stride for vertex texture params

Change references to gl_Position in D3D12FragmentProgramDecompiler

Revert bad commit
2016-02-15 11:15:51 +03:00
Ivan 9671a654b7 Merge pull request #1499 from tambry/master
Fix CMake libpng linking
2016-02-15 00:06:37 +03:00
Raul Tambre 6963157e63 Fix rpcs3-tests to use default properties
Cut down some stuff in the file also.
2016-02-14 20:08:56 +02:00
Raul Tambre 9452c6b08c Fix CMake libpng linking 2016-02-14 19:50:36 +02:00
vlj 035875825e Merge pull request #1497 from vlj/rsx
rsx/common/d3d12: Support non default alpha function
2016-02-13 17:22:57 +01:00
Vincent Lejeune 837e06e85b rsx/common/d3d12: Support non default alpha function
Fix After burner climax cloud effects.
2016-02-13 17:07:12 +01:00
vlj 9e3132c3fc Merge pull request #1491 from kd-11/fs_input_fix
Fragment position is given as gl_FragCoord not gl_Position
2016-02-13 16:51:56 +01:00
kd-11 843d0ed298 Fragment position is given as gl_FragCoord not gl_Position
Fix references to gl_Position in Dx12
2016-02-12 18:34:41 +03:00
Raul Tambre f7f4c049fc Merge pull request #1359 from tambry/ostrich
cellPngDec rewrite
2016-02-12 15:08:10 +02:00
Raul Tambre 1072540e3e Fix compiling 2016-02-08 19:12:30 +02:00
Raul Tambre 0c8c13b8b7 Rewrite cellPngDec to use libpng
Improvements made:
* Supports tEXt chunks
* Supports chunk information
* Supports 16-bit depth image packing (fixes #1127)
* Supports fixed alpha values
* And more.
2016-02-08 19:12:29 +02:00
vlj 303a109286 Merge pull request #1477 from vlj/rsx
Rsx: HLSL/GLSL fixes and support two side color.
2016-02-08 18:04:29 +01:00
Vincent Lejeune f0dc38cadd rsx/common/d3d12: Support back spec/diffuse color.
Fix green car in Outrun.
2016-02-08 17:35:52 +01:00
Vincent Lejeune 4efa2266e6 rsx/common/d3d12: Use m_texture_dirty[i] to signal texture state change and avoid unecessary bind operation. 2016-02-08 17:35:50 +01:00
Vincent Lejeune 1f7a1e4078 rsx/common/d3d12/gl: Fix lit and rsq behavior near 0 in vertex shaders. 2016-02-08 17:35:49 +01:00
vlj 2ead9b1f21 Merge pull request #1467 from kd-11/gl_shader_fixes
gl: Support rectangle textures
2016-02-07 18:09:47 +01:00
kd-11 ddf5b52360 Implement rectangle textures natively on OpenGL 2016-02-07 08:57:04 +03:00
vlj f66468ffcd Merge pull request #1476 from kd-11/llvm_fix
Fix LLVM build by changing variable to appropriate type
2016-02-06 19:18:52 +01:00
kd-11 d3405da5c4 Fix LLVM build by changing variable to appropriate type 2016-02-05 18:57:57 +03:00
vlj 020d282868 Merge pull request #1474 from kd-11/gl_shader_validate
gl: Move program validation from link-time to draw-time to comply with spec
2016-02-04 22:31:15 +01:00
kd-11 137821c866 Move program validation from link-time to draw-time to compy with spec 2016-02-04 11:19:13 +03:00
vlj e6d2e05b6e Merge pull request #1461 from kd-11/gl_vertex_textures
Add vertex texture buffers for VS input and support attribute instancing using VertexID
2016-02-04 01:24:31 +01:00
kd-11 7b889a10cc Add vertex texture buffers for VS input
Support vertex instancing in vertex shader using VertexID

Relax OpenGL requirements by removing 4.5 features

Use EXT version of TexBufferRange; Implement buffer copy using TexBuffer

Apply travis workaround by danilaml

Fix vertex upload in in case of inlined array
2016-02-03 13:38:23 +03:00
vlj 1e1c2007a3 Merge pull request #1443 from kd-11/gl_swizzle_mem_vector
Rework OGL texture swizzles
2016-02-02 23:43:24 +01:00
kd-11 660f491310 Rework OGL texture swizzles;
Decode textures using TextureUtils

Shut compiler up about missing return value (unsure)

Revert "Shut compiler up about missing return value (unsure)"

This reverts commit db43ba448776e6c0d6c90909b4037b6f698a545c.

Change some functions in rsx::gl::texture to static.

Replace large switch block in gl::textures::mandates_expansion with simple if tests
2016-02-01 20:11:33 +03:00
vlj 670660c244 Merge pull request #1469 from vlj/d3d12
D3d12: Fix and improvement
2016-01-31 21:36:16 +01:00
Vincent Lejeune 3d960064ef d3d12: Use unnormalized_coords info in RSXFragment 2016-01-30 22:04:36 +01:00
Vincent Lejeune f6d2409b20 rsx/common/d3d12: Support for shader window setting. 2016-01-30 21:58:12 +01:00
vlj 39bc897b93 Merge pull request #1464 from vlj/rsx
rsx/common/d3d12: Support for texture 1d too.
2016-01-30 21:00:50 +01:00
Vincent Lejeune 5f35f2ac7d rsx/common/d3d12: Support for texture 1d too.
They are used in after burner climax
2016-01-30 01:13:15 +01:00
vlj e1eb075604 Merge pull request #1462 from vlj/d3d12
d3d12: Fix for #1459
2016-01-30 00:27:08 +01:00
Vincent Lejeune d19d9ccd0b d3d12: Fix for #1459 2016-01-29 20:18:52 +01:00
Raul Tambre b4b4ae7a78 Merge pull request #1458 from vlj/rsx
rsx/common: Make RSXFragmentProgram key and not just pointer.
2016-01-28 07:42:08 +02:00
Vincent Lejeune 149fa9d750 rsx/common: Make RSXFragmentProgram key and not just pointer. 2016-01-27 23:16:06 +01:00
vlj 791070c158 Merge pull request #1456 from vlj/rsx-debug
rsx-debug: Dump windows origin/pixel center.
2016-01-27 23:11:40 +01:00
Vincent Lejeune 3bd2114815 rsx-debug: Dump windows origin/pixel center. 2016-01-27 22:41:19 +01:00
vlj 46de48593c Merge pull request #1457 from vlj/rsx
rsx/common: Base offset is actually correctly supported.
2016-01-27 22:28:23 +01:00
Vincent Lejeune acd384ae2d rsx/common: Base offset is actually correctly supported.
Outrun uses it and cars are correctly displayed.
2016-01-27 22:05:43 +01:00
Nekotekina b77666cbba cellGame fix 2016-01-27 19:39:31 +03:00
Nekotekina 128ee67bba PSF Loader simplified 2016-01-27 19:17:01 +03:00
Nekotekina 7417033d7f GLGSRender fix 2016-01-27 18:14:39 +03:00
DHrpcs3 e8a940172c fixed GameViewer crash if entry not exists
fixed psf::entry::as_string & psf::entry::value(string)
2016-01-27 18:14:38 +03:00
DHrpcs3 290bdc4566 added psf::object::get 2016-01-27 18:14:36 +03:00
DHrpcs3 220aab1fd0 Reimplemented psf loader 2016-01-27 18:14:35 +03:00
vlj 8e9f456029 Merge pull request #1455 from vlj/d3d12
D3d12: Drop IAInputLayout and use SV_VertexID + SRV instead
2016-01-27 16:10:38 +01:00
Vincent Lejeune aa450b56f1 d3d12: Make some memory helper structure uncopyable/unmovable. 2016-01-26 23:20:23 +01:00
Vincent Lejeune 6d70f3c237 d3d12: Compare mipmap/depth count when checking texture compatibility.
d3d12: Check for depth in texture cache.

Fix Resogun crash when loading a level.
2016-01-26 23:13:30 +01:00
Vincent Lejeune 6384541345 d3d12: Store vertex attributes as SRV and disable Input_layout. 2016-01-26 23:13:29 +01:00
vlj ffb014ca3d Merge pull request #1453 from vlj/rsx
RSX: Start implementing texture3d support
2016-01-26 18:22:45 +01:00
Vincent Lejeune 3c3f92f29b rsx/common/d3d12: Support 3d textures 2016-01-26 17:56:02 +01:00
Vincent Lejeune 24255f7883 rsx/common/d3d12/gl: Add some texture info to RSXFragmentProgram 2016-01-26 17:56:01 +01:00
vlj 40fa836b81 Merge pull request #1452 from vlj/rsx-debug
rsx-debug: Print number of vertex draw again.
2016-01-26 17:45:48 +01:00
Vincent Lejeune b71caa94ac rsx-debug: Print number of vertex draw again. 2016-01-25 18:48:53 +01:00
vlj 39658c0c52 Merge pull request #1450 from vlj/rsx
rsx/common: Div is vector over scalar division
2016-01-24 21:30:09 +01:00
Vincent Lejeune 9b8522e734 rsx/common: Div is vector over scalar division
According to investigation on Resogun.
2016-01-24 00:13:17 +01:00
vlj 9875bf9c7b Merge pull request #1448 from vlj/rsx
rsx: Add vertex input and output in RSXVertexProgram.
2016-01-23 23:59:56 +01:00
Vincent Lejeune 4ce4cf5242 rsx: Add vertex input and output in RSXVertexProgram. 2016-01-22 01:24:54 +01:00
DHrpcs3 52110e0647 Merge pull request #1447 from RPCS3/rsx_cache
RSX vertex/OpenGL texture cache preparation
2016-01-20 21:44:48 +03:00
DHrpcs3 19ce0cdc09 rsx methods constants moved to rsx namespace
minor fix
2016-01-20 20:12:48 +03:00
DHrpcs3 2e58f312d5 rsx: implemented internal tasks queue (WIP) 2016-01-20 17:12:49 +03:00
DHrpcs3 7523d01e0f Code style fixes #2 2016-01-20 16:39:06 +03:00
DHrpcs3 7972cb5bdc Code style fixes #1 2016-01-20 16:23:25 +03:00
DHrpcs3 685d5d3ea3 Access violation handled by rsx::thread
gfxHandler -> rsx::g_access_violation_handler
2016-01-20 15:46:58 +03:00
vlj 9f7caf90e3 Merge pull request #1446 from vlj/rsx
rsx/common/d3d12: Move surface_store in common
2016-01-19 23:51:54 +01:00
Vincent Lejeune f453194e32 rsx: Fix int type not big enough
Fix glitch in After Burner Climax
2016-01-19 23:24:39 +01:00
Vincent Lejeune 440c637b1f rsx/common/d3d12: Move surface_store in common 2016-01-19 22:49:10 +01:00
vlj d95809a069 Merge pull request #1445 from vlj/rsx
d3d12/gl: Use r1 as depth output.
2016-01-19 01:16:57 +01:00
Vincent Lejeune 6aac972bda d3d12/gl: Use r1 as depth output.
The "Output_from_h0" flag seems to concern color output.
There might be another flag for depth from half float value.
2016-01-19 00:45:26 +01:00
vlj df3fddc026 Merge pull request #1442 from vlj/rsx-debug
rsx-debug/d3d12: Support all rtt formats.
2016-01-18 16:11:55 +01:00
Vincent Lejeune 1ce49b60d9 rsx-debug/d3d12: Support all rtt formats. 2016-01-17 20:02:30 +01:00
B1ackDaemon 8b5b23e6c0 Merge pull request #1439 from vlj/d3d12
D3d12: Fixes
2016-01-17 10:17:03 +02:00
Vincent Lejeune 26f329d186 d3d12: Fix dsv increment size
Typo.
2016-01-16 18:25:20 +01:00
Vincent Lejeune 5ace4438e2 d3d12: Fix texture proj
I misinterpreted "last component" from glsl doc... it's w, not z.
2016-01-16 18:25:19 +01:00
Vincent Lejeune b8e10225f9 d3d12: Use first color output for alpha discard instead of 0.
Fix Naruto 2 shader miscompilation.
2016-01-16 18:25:18 +01:00
Vincent Lejeune 224facf3ba d3d12: Never pass nullptr as render target descriptor, even if unused.
Function interface doesn't allow this.
2016-01-16 18:25:16 +01:00
B1ackDaemon 9c12d8ff22 Merge pull request #1433 from vlj/rsx
rsx: Use enum class for surface related regs
2016-01-16 01:23:53 +02:00
Vincent Lejeune 3b4339c8e0 rsx: Use enum class for surface related regs 2016-01-15 23:44:27 +01:00
Ivan 8e12c4cb00 Merge pull request #1355 from bentley/malloc-stdlib
Already implemented. Test.
2016-01-14 21:42:38 +03:00
Nekotekina efe1678088 "Build Solution" fix 2016-01-14 20:41:36 +03:00
Nekotekina 2f5be3559e Hotfix 2016-01-14 20:13:41 +03:00
Nekotekina 960668ecf1 For #1355
offsetof() eliminated
OFFSET_32, SIZE_32, ALIGN_32 used
2016-01-14 19:07:27 +03:00
Nekotekina 83084467c6 For #1356 2016-01-14 19:07:26 +03:00
Nekotekina 8464ab6a23 Fixes (#1432)
/dev_bdvd/, rap file loading fix
2016-01-14 19:07:24 +03:00
raven02 74ec128e62 Use CELL_GCM_TEXTURE_CONVOLUTION_MAG for Mag 4 2016-01-14 19:00:16 +03:00
vlj 194c6b8bee Merge pull request #1431 from vlj/gl
gl: Fix warnings and enable treat warning as error.
2016-01-14 00:28:19 +01:00
Vincent Lejeune 69272edba6 gl: Fix warnings and enable trat warning as error. 2016-01-13 23:53:11 +01:00
Nekotekina 38531459df Logging system rewritten
GUI doesn't freeze anymore
Some things simplified
2016-01-13 18:54:57 +03:00
Nekotekina b3e3c68f15 File utility improved
+ minor fixes
2016-01-13 14:12:04 +03:00
B1ackDaemon 5029dff73a Merge pull request #1428 from vlj/rsx
rsx/common/d3d12: Consider separate index range as a whole.
2016-01-13 02:08:23 +02:00
Vincent Lejeune 689dee9944 rsx/common/d3d12: Consider separate index range as a whole.
Fix Wolf of the Battlefield 3
2016-01-13 00:28:48 +01:00
B1ackDaemon 68f9898171 Merge pull request #1415 from vlj/d3d12
D3d12: Factoring
2016-01-12 00:52:45 +02:00
Vincent Lejeune 08622a41b4 d3d12: Use CHECK_HRESULT in D3D12Utils.cpp 2016-01-11 21:17:33 +01:00
Vincent Lejeune 669a3277ff d3d12: Support mag filter 4 2016-01-11 21:17:32 +01:00
Vincent Lejeune e6bd681227 d3d12: factorize render_target code in a template class to be shared with others backends. 2016-01-11 20:47:01 +01:00
Vincent Lejeune 0c5cfdddba d3d12: Gather constant and vtx/idx heap and turn readback heap to buffer 2016-01-11 20:46:58 +01:00
vlj d08ce79d04 Merge pull request #1417 from vlj/rsx
rsx/common/d3d12/gl: Clean ProgramStateCache
2016-01-11 19:45:19 +01:00
Vincent Lejeune bab52c132d rsx/common/d3d12/gl: Clean ProgramStateCache
Use a_b_c format.
Use using =
Use tuple as output
Use RAII to delete program safely
Ensure const correctness.
2016-01-11 19:21:57 +01:00
DHrpcs3 cc1efd2a46 Merge pull request #1419 from RPCS3/minor_fixes
Minor fixes
2016-01-11 00:20:30 +02:00
DHrpcs3 8297d963bf d3d12 texture cache: align to bottom texture address 2016-01-10 23:28:30 +02:00
DHrpcs3 a17c41b4e1 nv4097::get_report: use DMA 2016-01-10 23:22:55 +02:00
B1ackDaemon b055747d4f Merge pull request #1414 from vlj/rsx
Rsx: Fix for vertex buffer filling and for some non IEEE compliant fragment instructions.
2016-01-10 02:44:29 +02:00
Vincent Lejeune 4ef76866a5 rsx/common/d3d12/gl: Support texture lod sampling. 2016-01-10 00:16:26 +01:00
Vincent Lejeune 675ccd4510 rsx/common/d3d12/gl: Mimic divsq and rsq fragment instruction behaviour with 0.
Fix Super Puzzle Turbo HD 2 and SH3 HD
2016-01-09 23:18:05 +01:00
Vincent Lejeune 31a925b4f0 rsx: reenable frame capture
Likely commented out by accident.
2016-01-09 23:18:04 +01:00
Vincent Lejeune d153575e59 rsx/common/d3d12/gl: Support for CMP/non pow of 2 size vertex formats.
Also use class enum for base_vertex_type everywhere.
Fix Bomberman Ultra color and Cubixx HD geometry.
2016-01-09 23:18:03 +01:00
Raul Tambre 3afc62e525 Fix #1368 2016-01-08 08:39:34 +02:00
Raul Tambre f8446b227b Implement inet_ntop and CELL_NET_CTL_INFO_LINK
Also fixed the default address not being set for all cases. Also tried
to fix the Win32 version of CELL_NET_CTL_INFO_IP_ADDRESS failing the
first time around.
2016-01-08 08:39:34 +02:00
Raul Tambre 8f937bda0f Various minor logging improvements
Also changed the default connection state, because chances are, that
you're connected to Internet.
2016-01-08 08:39:33 +02:00
vlj 9d1208bf95 Merge pull request #1394 from vlj/build
Add Guidelines Support Library
2016-01-08 02:09:05 +01:00
Vincent Lejeune e7591439f4 Add Guidelines Support Library 2016-01-08 00:59:08 +01:00
vlj fef0b1dd46 Merge pull request #1409 from vlj/fix-mention-bot
Hopefully fix mention bot's ignore list
2016-01-08 00:51:29 +01:00
Raul Tambre 3281a1982e Hopefully fix mention bot's ignore list 2016-01-07 23:46:32 +01:00
DHrpcs3 b8486a489d Merge pull request #1406 from RPCS3/minor_fixes
Minor fixes
2016-01-07 22:02:35 +02:00
DHrpcs3 f97d791fe8 PSF loader: implemented 0x0004 entry format 2016-01-07 21:22:36 +02:00
DHrpcs3 657a6c9511 elf64 loader: fixed too small primary stack size usage 2016-01-07 18:14:15 +02:00
vlj 38514c291d Merge pull request #1404 from vlj/fix-tests
Add shlwapi.lib to rpcs3-tests link dependencies.
2016-01-07 02:08:03 +01:00
Vincent Lejeune f138be2e6c Add shlwapi.lib to rpcs3-tests link dependencies. 2016-01-07 01:47:52 +01:00
DHrpcs3 ecda02c099 Merge pull request #1402 from RPCS3/rsx
RSX emulation improvements
2016-01-06 15:25:28 +02:00
DHrpcs3 e9560da4e2 nv3089::image_in: use in_x/in_y & out_x/out_y 2016-01-06 13:47:05 +02:00
DHrpcs3 6406cece57 nv3089::image_in: fixed reading from tiled regions 2016-01-06 13:30:26 +02:00
DHrpcs3 f7e787958e fixed nv3089::image_in scale value 2016-01-06 13:30:25 +02:00
DHrpcs3 8912b9880e rsx: initialize vertex textures on reset 2016-01-06 13:30:25 +02:00
DHrpcs3 3ac9e0933f gl: fixed nv4097_clear_surface & front face selection
added window shader and clip plane constants to GCM.h
2016-01-06 13:30:25 +02:00
DHrpcs3 c1be0cf3bf Added missed files 2016-01-06 13:30:24 +02:00
DHrpcs3 48919330d7 rsx methods moved from rsx thread 2016-01-06 13:30:24 +02:00
DHrpcs3 ba12c489ec gl: using tiled region for read/write color buffers and flip
gl: fixed flip buffer row length
compilation fixes
2016-01-06 13:30:23 +02:00
DHrpcs3 dbccf5fbad gl: fixed multiple textures binding 2016-01-06 13:30:23 +02:00
DHrpcs3 509bbddac1 OpenGL renderer: use pitch as image row length
Fixed rsx_utils code style
2016-01-06 13:30:23 +02:00
DHrpcs3 11ccc498fd Reimplemented nv3089::image_in 2016-01-06 13:30:22 +02:00
DHrpcs3 836d14c8af rsx::pad_texture & rsx::convert_linear_swizzle moved to rsx_utils
Added rsx::convert_scale_image & rsx::clip_image to rsx_utils
2016-01-06 13:30:22 +02:00
DHrpcs3 5a4babb0fd Implemented basic tiled regions support 2016-01-06 13:30:22 +02:00
B1ackDaemon 4e08d35661 Merge pull request #1371 from chaoren/path
Fix configuration path creation.
2016-01-06 08:14:53 +02:00
Chaoren Lin 7186b72a56 Fix configuration path creation.
* Simplify create_path
* More sane permissions
* Create entire path of configuration directory
2016-01-05 22:01:46 -05:00
DHrpcs3 2b40ebdbc0 Merge pull request #1395 from vlj/rsx
rsx/common/d3d12/gl: Implement draw inline array support
2016-01-05 21:36:44 +02:00
Vincent Lejeune cae2d929ab rsx/common/d3d12/gl: Implement draw inline array support 2016-01-05 00:31:47 +01:00
DHrpcs3 34336ebfce Merge pull request #1393 from vlj/d3d12
D3d12: Fixes
2016-01-04 18:25:51 +02:00
Vincent Lejeune f38d0e92e7 d3d12: Avoid implicit cast from int to bool in CHECK_HRESULT macro 2016-01-03 21:51:39 +01:00
Vincent Lejeune 854365e6ce d3d12: Reenable missing case for CELL_GCM_PRIMITIVE_LINE_LOOP 2016-01-03 21:51:38 +01:00
Zangetsu38 3529554c88 d3d12: Fix Super Dub 'a' Dub 2016-01-03 21:51:37 +01:00
Zangetsu38 2a1f19b776 d3d12: Fix for BIT.TRIP Runner2 2016-01-03 21:51:35 +01:00
Vincent Lejeune 324b2da3ec d3d12: Recreate RTTs if size doesn't match.
Fix Bomberman Ultra
2016-01-03 21:51:34 +01:00
Vincent Lejeune 07f6896622 d3d12: Throw if program failed to build. 2016-01-03 21:51:33 +01:00
Vincent Lejeune 8417e21e8d d3d12: Set command heap only when necessary. 2016-01-03 21:51:31 +01:00
DHrpcs3 404b15b3c3 Merge pull request #1385 from vlj/build
Put XAudio and OpenAL files in separate projects.
2016-01-03 22:36:47 +02:00
Vincent Lejeune 02473324f4 Put XAudio and OpenAL files in separate projects. 2016-01-03 21:01:11 +01:00
DHrpcs3 ed68e864c2 Merge pull request #1377 from vlj/rsx-debug
rsx-debug: Dump some more opcodes.
2016-01-03 20:47:40 +02:00
Vincent Lejeune bc3065939f rsx-debug: dump anti aliasing control 2016-01-03 19:16:50 +01:00
Vincent Lejeune d1e91433ad rsx-debug: Dump anti aliasing mode. 2016-01-03 19:16:49 +01:00
Vincent Lejeune 4e7e895822 rsx-debug: Dump some more opcodes. 2016-01-03 19:16:48 +01:00
Ivan 2bccf3f2af Merge pull request #1390 from vlj/rsx
rsx/common: Fix program state cache Shader program comparaison.
2016-01-03 18:19:37 +03:00
Vincent Lejeune 3586c7613a rsx/common: Fix program state cache Shader program comparaison.
Comparaison was not taking the last instruction of shader into account.
Also remove "constant masking" since it wasn't actually usefull.

Fix DBZ: Burst Limits, SH3 and likely much more games.
2016-01-02 00:47:51 +01:00
Ivan b1c8c0a448 Merge pull request #1362 from achurch/cellL10n-sjis
cellL10n: Implement SJIS<->Unicode conversions.
2016-01-02 02:26:25 +03:00
Andrew Church 5a18c3f8ea Allow a null destination pointer for cellL10n functions. 2015-12-31 19:12:32 +09:00
Andrew Church 3055de0444 cellL10n: Implement SJIS<->Unicode conversions. 2015-12-31 19:12:32 +09:00
Ivan 6811195345 Merge pull request #1383 from vlj/rsx
rsx/common/d3d12/gl: Use separate vertex array/vertex register states.
2015-12-31 11:33:55 +03:00
Vincent Lejeune 5f12a4f7b5 rsx/common/d3d12/gl: Use separate vertex array/vertex register states. 2015-12-30 17:04:34 +01:00
Ivan e748fc294b Merge pull request #1382 from vlj/llvm
Llvm: Increase test runs and implement TWI/TW/TDI/TD
2015-12-30 17:46:42 +03:00
Vincent Lejeune 082815f93e llvm: Implement trap instructions 2015-12-29 22:25:19 +01:00
Vincent Lejeune 2da52d0309 llvm: Increase test runs. 2015-12-29 22:25:13 +01:00
Ivan 702423158c Merge pull request #1379 from vlj/rsx
rsx/common: Support RSX_FP_OPCODE_DIV for scb
2015-12-29 19:37:34 +03:00
Vincent Lejeune 969e2d8c57 rsx/common: Support RSX_FP_OPCODE_DIV for scb
Fix glitches in dbz
2015-12-29 17:08:01 +01:00
Ivan 5a60a5bebd Merge pull request #1378 from vlj/d3d12
D3d12: Fixes
2015-12-29 15:17:15 +03:00
Vincent Lejeune 44840dbbcf d3d12: Support early return in fragment shaders. 2015-12-28 00:19:37 +01:00
Vincent Lejeune d6b2230b92 d3d12: Revert some value in get_blend_factor_alpha
fix crash in SH3
2015-12-28 00:19:35 +01:00
Raul Tambre 0e0345824e Merge pull request #1366 from chaoren/master
Create config file if it doesn't exist.
2015-12-24 21:39:50 +02:00
Chaoren Lin d917cfa43f Create config file if it doesn't exist. 2015-12-24 10:58:28 -05:00
Ivan 813e753e3d Merge pull request #1365 from vlj/d3d12
D3d12: Some fixes
2015-12-24 13:39:44 +03:00
Vincent Lejeune c4b3b967d9 d3d12: Fix warnings andnable warnings as errors. 2015-12-23 22:26:23 +01:00
Vincent Lejeune b41fcf3734 d3d12: name rtts/ds/texture for debugging purpose 2015-12-23 22:26:22 +01:00
Vincent Lejeune ecad586739 d3d12: Names PSO for debug purpose. 2015-12-23 22:26:20 +01:00
Zangetsu38 64036e0478 d3d12: fix return correct value in d3d12format 2015-12-23 22:26:19 +01:00
Vincent Lejeune 9c6539ea2d rsx/common/d3d12: Force depth to be at least 1. 2015-12-23 22:26:18 +01:00
Vincent Lejeune a97dc349b7 rsx/common: If swizzle bit is not set then there is no padding, even for dxtc textures.
Fixes some textures in dbz and after burner climax.
2015-12-23 22:26:16 +01:00
Vincent Lejeune 243bc0d06e PPU/LLVM: Use interp version of some instruction for debugging purpose. 2015-12-23 17:03:01 +01:00
Vincent Lejeune e7df81ade0 PPU/LLVM: Call fast_stop when function returns and PC corresponds 2015-12-23 17:02:56 +01:00
Vincent Lejeune 743f5f07cb llvm: Reenable debug info dump 2015-12-23 17:02:51 +01:00
Nekotekina 3ed603074c Changes done by [DH] rewritten
Added rsx_program_decompiler submodule
Added fs::dir iterator
Added fmt::match
2015-12-22 23:11:20 +03:00
DHrpcs3 e8310e6c50 Merge pull request #1360 from DHrpcs3/master
Minor fixes
2015-12-21 12:11:17 +02:00
DHrpcs3 3ca634138d Fixed conflict with X11
Added tmp folder to gitignore
2015-12-21 08:48:33 +02:00
DHrpcs3 d8bef46c2a Do not use global static variables in headers 2015-12-21 05:35:56 +02:00
DHrpcs3 ae83ab5436 GLTexture excluded from GLGSRender and renamed to rsx::gl::texture 2015-12-21 04:14:56 +02:00
DHrpcs3 a00111a863 Do not mix projects temporaries 2015-12-21 03:55:55 +02:00
DHrpcs3 7416fe91fc Fixed crash on start if config does not exists
Cleanup OpenGL renerer
2015-12-21 03:28:07 +02:00
Ivan e4631f93bd Merge pull request #1347 from Nekotekina/master
Fixes
2015-12-20 16:27:51 +03:00
Nekotekina f2df9b469a ThrowIfFailed replaced with CHECK_HRESULT macro 2015-12-20 15:41:11 +03:00
Nekotekina 4b7f9c38a6 rMsgBox eliminated 2015-12-20 15:41:10 +03:00
Nekotekina a666318b95 Error messages improved 2015-12-20 15:41:09 +03:00
Nekotekina aa811b6eef Cleanup (noexcept, unreachable)
%x formatting fixes
2015-12-20 15:41:07 +03:00
Nekotekina 321e6d3a86 fs::get_config_dir, fs::get_executable_dir 2015-12-20 15:41:06 +03:00
Nekotekina 56ba5a765b Exception handling fix 2015-12-20 15:41:05 +03:00
Anthony J. Bentley aa4fb80465 By definition, malloc() is available in stdlib.h. malloc.h is deprecated. 2015-12-20 03:20:48 -07:00
DHrpcs3 d68c748976 Merge pull request #1350 from DHrpcs3/master
Minor improvements
2015-12-20 11:10:28 +02:00
DHrpcs3 8a21e0fcb8 Implemented some cellSaveData functions
Implemented cellSaveDataListSave, cellSaveDataListLoad,
cellSaveDataFixedSave, cellSaveDataFixedLoad, cellSaveDataAutoSave,
cellSaveDataAutoLoad
2015-12-20 10:39:07 +02:00
DHrpcs3 408581b7bc sys_mmapper improvements
sys_mmapper_allocate_address: always set default value if aligment is 0
sys_mmapper_map_memory: don't fire exception if memory already mapped
2015-12-20 10:28:25 +02:00
DHrpcs3 416d66a438 Ignore SPU sync channels 2015-12-20 10:16:31 +02:00
Raul Tambre 5672ba887b Fix #1343 2015-12-17 13:41:36 +02:00
Ivan 14123d67e1 Merge pull request #1344 from vlj/d3d12
D3d12: Refactoring and fix
2015-12-16 22:59:43 +03:00
Vincent Lejeune 69b3828086 rsx/common: Vertex program condition swizzle should apply to cc0, not float4(0.) 2015-12-16 20:36:50 +01:00
Zangetsu38 a44c54b428 d3d12: Fix error Last commit 2015-12-16 20:36:48 +01:00
Zangetsu38 dc5a439ec9 d3d12: Code style fix for function return 2015-12-16 20:36:46 +01:00
Zangetsu38 81f05daff2 d3d12: Add more log callback for support dev 2015-12-16 20:36:45 +01:00
Vincent Lejeune 456f83671a d3d12: Add formatting abilities to unreachable macro 2015-12-16 20:36:43 +01:00
Vincent Lejeune d7b4b2fd49 d3d12: Support surface format R5G6B5 2015-12-16 20:36:41 +01:00
Vincent Lejeune 27807f3a61 d3d12: D8R8G8B8 and A8R8G8B8 are essentially the same. 2015-12-16 20:36:39 +01:00
Vincent Lejeune fcf7751008 d3d12: Fix handling of disabled texture
Fix After Burner Climax textures.
2015-12-16 20:36:38 +01:00
Vincent Lejeune 1cda2977bb common/d3d12: emulate polygon mode 2015-12-16 20:36:36 +01:00
Vincent Lejeune 6221fecf3b common/d3d12/gl: Start implementing cubemap sampling 2015-12-16 20:36:34 +01:00
Vincent Lejeune 80dc122742 common/d3d12: Clean texture upload code.
Some typos are fixed in the process
2015-12-16 20:36:32 +01:00
Vincent Lejeune 929f518ef3 rsx/d3d12/gl: Make output write backend dependent. 2015-12-16 20:36:31 +01:00
Vincent Lejeune 6fae5863cf common/d3d12/gl: Add support for textureProj 2015-12-16 20:36:29 +01:00
B1ackDaemon 56704888b5 Merge pull request #1336 from jarveson/miscFixes4
NV3089 and misc fixes
2015-12-15 06:04:16 +02:00
Jake 266504a0ac CellUser: Fix cellUserInfoGetStat for 'userid_current' 2015-12-14 19:16:15 -06:00
Jake 08d05e245d sys_mmapper: Allow 0 alignment to mapping to fix Psl1ght homebrew booting 2015-12-14 19:16:14 -06:00
Jake 6f584049a2 rsx: NV3089_image_in: Fix braid and Jet Set Radio 2015-12-14 19:16:12 -06:00
Ivan 52129a3d71 Merge pull request #1341 from Zangetsu38/patch-1
Fix for Shovel Knight
2015-12-14 02:34:59 +03:00
Zangetsu38 27ad98ee98 Fix for Shovel Knight 2015-12-12 23:21:24 +01:00
Nekotekina d90850e697 GLGSRender.vcxproj added 2015-12-08 20:02:33 +03:00
Nekotekina 717d99795c Memory leak fixed 2015-12-08 20:02:32 +03:00
Nekotekina 8e4ad3dfcb Property sheets, configuration simplified
MemLeak build fixed
2015-12-08 20:02:30 +03:00
Ivan be1c9100cc Merge pull request #1332 from vlj/llvm-tests
Move llvm tests to VS unit testing framework
2015-12-07 10:44:19 +03:00
Vincent Lejeune 65750aea12 llvm: Add ps3-ppu-llvm.cpp file that contains llvm tests 2015-12-06 23:51:55 +01:00
Vincent Lejeune 0e27b68ba7 System: Add a test mode that fakes running emulator. 2015-12-06 23:51:52 +01:00
Vincent Lejeune 6c01658d37 system: Do not send dbg command if dbg hook is not present. 2015-12-06 23:51:51 +01:00
Vincent Lejeune 8e451126ac llvm: Make Compiler class a module builder only class. 2015-12-06 23:51:50 +01:00
Vincent Lejeune 7ae1b51753 llvm: Remove PPULLVMRecompilerTests.cpp 2015-12-05 22:17:28 +01:00
Danila Malyutin 0d6297fef0 GUI: Fix wx assert on first right-click in game list
Don't know why it was working before.
Anyway, it seems ugly and it probably should be handled differently (the
whole function, or whole GUI ;P).
2015-12-05 19:54:23 +03:00
Danila Malyutin d01235ce2d GUI: Fix removing game from game list
Fixes #1326
2015-12-05 19:45:58 +03:00
Raul Tambre 38709058a3 Add AlexAltea to mention bot blacklist. 2015-12-05 14:22:52 +02:00
Raul Tambre efe430733b Fix cellGcmSetTile(Info)
I didn't specifically write a test for it, but I did at some point
modify a couple samples to try and use 2048 and 2047. Anything above
2047 didn't work.
2015-12-05 14:22:51 +02:00
Nekotekina 3465106456 Shared PCH (experimental)
"Rebuild" is broken though.
2015-12-04 23:37:44 +03:00
Nekotekina 24128ba450 Optimization 2015-12-04 23:37:42 +03:00
Nekotekina 298eb46a31 AutoPauseManager, SaveDataUtility fix
Redundant stringstream removed
2015-12-04 23:37:41 +03:00
Nekotekina f245799479 Custom hashers for ID manager 2015-12-04 23:37:40 +03:00
Nekotekina 82cb8fe5bd SharedMutex improved 2015-12-04 23:37:39 +03:00
Nekotekina b18e337781 GUI fixes 2015-12-04 23:37:37 +03:00
Nekotekina f3311bb5e5 GL render crash fix 2015-12-04 23:37:36 +03:00
Nekotekina 8a1ce6ba64 MINGW64 fix 2015-12-04 23:37:35 +03:00
Nekotekina ca6783ba9a Threads improved, ID manager improved 2015-12-04 23:37:34 +03:00
Ivan 78bfd54ad4 Merge pull request #1327 from jarveson/rsxSwizzleFixes
RSX improvements and gl fix
2015-12-03 18:17:00 +03:00
Jake 52be47ca89 rsx: Style changes 2015-12-02 07:06:40 -06:00
Jake 19cf749944 rsx: fix convert_linear_swizzle converting backwards 2015-12-02 04:22:19 -06:00
Jake 178bcfc8df rsx: Improve NV3089_IMAGE_IN_SIZE and use faster loop for swizzle conversions 2015-12-02 04:22:18 -06:00
Jake 83cb137721 rsx: add missing transfer enums 2015-12-02 04:22:17 -06:00
Jake 8edf35a9e3 gl: remove incorrect/unneeded glenable enum 2015-12-02 04:22:16 -06:00
Ivan 6930cbc064 Merge pull request #1324 from vlj/d3d12
D3d12: Fixes
2015-12-02 12:43:02 +03:00
Zangetsu38 450c8245ed Fix Jet Set Radio 2015-12-01 23:18:29 +01:00
Vincent Lejeune 88d7feda5c d3d12: Support unormalized texture coordinates 2015-12-01 23:18:27 +01:00
Vincent Lejeune c9c436e6fc d3d12: In case of non supported rtt fallback to R8G8B8A8 format. 2015-12-01 22:42:36 +01:00
Vincent Lejeune f4091b1027 d3d12: Fix fragment shader accessing to gl_Position 2015-12-01 22:42:34 +01:00
Vincent Lejeune 174fb97172 d3d12: Fix for case where fragment shaders samples textures starting from non first unit. 2015-12-01 22:42:33 +01:00
Ivan ed3ac91263 Merge pull request #1322 from vlj/rsx-debug
Rsx debug: UI improvement and more opcode disasm supported
2015-12-01 11:28:37 +03:00
Vincent Lejeune 377bdae6a9 rsx-debug: Move pretty_printing code to GCM.cpp and support transform constants and some texture opcodes 2015-11-30 19:09:45 +01:00
Vincent Lejeune 3d2386f903 rsx-debug: Display color buffer content in separate frame. 2015-11-30 19:09:44 +01:00
Vincent Lejeune a21c9f9861 rsx: Avoid mixing float4 and int4 in declaration of AddrReg. 2015-11-30 17:35:51 +01:00
Ivan cdcef4c8ee Merge pull request #1318 from vlj/gl
Gl: Use common code for fragment constants.
2015-11-30 18:13:06 +03:00
Vincent Lejeune 1e9d1c1dd9 gl: Uncomment viewport setting code 2015-11-29 18:22:53 +01:00
Vincent Lejeune 399478c2cd gl: Use const and ref for loops in GLFragmentProgram.cpp 2015-11-29 18:20:43 +01:00
Vincent Lejeune c86cfef58e rsx/common: Remove getFragmentConstantOffsetsCache 2015-11-28 20:58:00 +01:00
Vincent Lejeune 7a996648bb gl: Use fill_gragment_constans_buffer 2015-11-28 20:41:30 +01:00
Ivan f438554fc1 Merge pull request #1313 from danilaml/dep-upd
Some dependency info updated
2015-11-28 08:38:17 +03:00
Danila Malyutin 8d5d545f3f Some dependency info updated 2015-11-28 00:08:38 +03:00
Ivan d511fd6529 Merge pull request #1316 from vlj/d3d12
D3d12: some fixes
2015-11-28 00:02:05 +03:00
Vincent Lejeune a19a9b5585 d3d12: fallback to linear filter when mag filter is not known. 2015-11-26 20:21:26 +01:00
Vincent Lejeune f3dd9596cf d3d12: Use address instead of context_dma value to determine whether to write buffers
Fixed depth read test when write color buffer is enabled
2015-11-26 18:10:21 +01:00
Vincent Lejeune 115255c162 d3d12: Fallback to bilinear filtering if convolution min one is used. 2015-11-26 18:05:27 +01:00
Vincent Lejeune 984f5c6914 d3d12: Fix depth readback format 2015-11-26 18:05:26 +01:00
Vincent Lejeune fa845fa5c0 d3d12: Add support for F_X32 surface format 2015-11-26 18:05:25 +01:00
Vincent Lejeune 579096c6a8 d3d12: Discard rtt if format has changed. 2015-11-26 18:05:23 +01:00
Vincent Lejeune 7e938b2363 d3d12: Use INCR for stencil op when an unknow op is used.
Fixes shadows in Jet Set Radio.
2015-11-26 18:04:53 +01:00
Vincent Lejeune 0d2c4c24b4 d3d12: Use a single big buffer to store readback data 2015-11-25 17:54:58 +01:00
B1ackDaemon d0338cddf7 Merge pull request #1291 from vlj/rsx-debug
Rsx debug: Add some features
2015-11-25 02:24:52 +02:00
Vincent Lejeune d15300a549 rsx: Display programs associated with selected draw calls in debugger 2015-11-24 23:34:04 +01:00
Vincent Lejeune b9d8d9383a rsx/d3d12: dump program content when capturing frame 2015-11-24 23:34:03 +01:00
Vincent Lejeune 85cf918aeb rsx: Add none target to gcm pretty printing 2015-11-24 23:14:07 +01:00
Vincent Lejeune b5add0f027 rsx: better naming for draw calls 2015-11-24 23:14:05 +01:00
Vincent Lejeune b238107a99 rsx: Dump captured commands to file 2015-11-24 23:14:04 +01:00
Ivan 68608ef894 Merge pull request #1310 from vlj/gl
gl: Use uniform buffer for transform constants.
2015-11-20 00:16:39 +03:00
Vincent Lejeune 5447521ce5 gl: Use uniform buffer for transform constants. 2015-11-19 20:26:14 +01:00
Ivan 247af0ebbf Merge pull request #1305 from vlj/rsx
Rsx: Fix fragment decompiler
2015-11-19 22:22:43 +03:00
Vincent Lejeune 3e5f0e5c37 rsx: Add missing SCB DIVSQ opcode support
Fix a lot of gfx glitches in SH3 HD
2015-11-19 19:24:58 +01:00
Vincent Lejeune 9fdc458d69 rsx: Make SCT/SCB/TEX SRB function complete member of FragmentProgram 2015-11-19 19:24:57 +01:00
Nekotekina 4a669fd86e DX12 dependencies fix 2015-11-17 21:00:59 +03:00
Ivan 8edef32c76 Merge pull request #1308 from vlj/d3d12
D3d12: fixes
2015-11-17 19:57:25 +03:00
Vincent Lejeune 307015382d d3d12: Support default value for stencil op
Requested by Jet Set Radio.
2015-11-16 23:32:38 +01:00
Vincent Lejeune 471e807ea2 d3d12: Fix some typo in render target code
Should bring performances back
2015-11-16 23:32:37 +01:00
Vincent Lejeune bb4b12f253 d3d12: Texcoord9 is actually stored in register 6.
Fix shadow mapping in SH3 HD.
2015-11-16 23:32:35 +01:00
Vincent Lejeune 432bca26ae d3d12: Add support for reading depth texture 2015-11-16 23:32:34 +01:00
Nekotekina 5f6caf33f0 MINGW64: Compilation fix 2015-11-16 19:12:51 +03:00
Ivan 60dc4abc2b Merge pull request #1292 from vlj/gl
gl: Use factored scale offset function call
2015-11-16 01:44:25 +03:00
Vincent Lejeune e2d0a63b98 gl: Use factored scale offset function call 2015-11-15 22:52:39 +01:00
Ivan 0fc55de769 Merge pull request #1303 from vlj/d3d12
d3d12: Use a_b_c style for D3D12GSRender.h members
2015-11-15 23:29:43 +03:00
Vincent Lejeune 570ca1c87f d3d12: Use a_b_c style for D3D12GSRender.h members 2015-11-15 20:21:44 +01:00
Ivan 6e666b63fa Merge pull request #1290 from vlj/rsx
Rsx: Fixes
2015-11-15 21:29:25 +03:00
Vincent Lejeune 2ac47548b0 rsx: Set registers individually
Not all games set registers up to the third subcomponent. Fixes SH 3 HD
textures.
2015-11-15 17:20:43 +01:00
Vincent Lejeune a79ffdb485 rsx/common: Fix ARL register type and write function in vtx shader 2015-11-15 17:20:41 +01:00
Vincent Lejeune daf2d3a02e rsx: Suppress cellResc function that modifies method_registers 2015-11-15 17:20:21 +01:00
Vincent Lejeune e9d9bad643 rsx: reset register after each flip
Some overlay operation are executed when a flip is requested, it may
change register states. Fix depth buffer in SH3
2015-11-15 17:20:20 +01:00
O1L f34bd724e3 SimpleIni removed 2015-11-15 13:05:25 +04:00
O1L fd13a495de Replace remained old ini-manager calls 2015-11-14 23:59:46 +04:00
Nekotekina 7dfe9415c4 PKG Installer fix 2015-11-14 20:26:42 +03:00
Nekotekina 080e503954 Compilation fix 2015-11-14 20:26:41 +03:00
Nekotekina a4db58f5f2 Added fs::file_ptr, fom::rewrite, cleanup 2015-11-14 20:26:40 +03:00
Danila Malyutin 009aa3dcb9 Fix crash on exit in some tests
It started occurring recently though the problem seems to be old.
Only KeyboardHandlerBase is the fix, the MouseHandler one is to be safe.
2015-11-14 19:34:20 +03:00
Ivan b46c66b4c7 Merge pull request #1289 from vlj/d3d12
D3d12: Fixes
2015-11-14 14:01:26 +03:00
Vincent Lejeune 039e729881 d3d12: Fix scissor 2015-11-12 18:29:04 +01:00
Vincent Lejeune c152c20d70 d3d12: Fix wrong front_face_ccw value for Disgaea 3 2015-11-12 18:29:03 +01:00
Vincent Lejeune 917f08c534 d3d12: Fix depth range 2015-11-12 18:29:02 +01:00
Vincent Lejeune ae5d95d462 rsx/common: Take primitive restart index in account and turns it into -1. 2015-11-12 18:29:01 +01:00
Vincent Lejeune 925d6889a6 d3d12: Use ring buffer like rtv/dsv descriptor heap 2015-11-12 18:29:00 +01:00
Ivan 231f322b60 Merge pull request #1262 from tambry/frog
Lots of defect fixes
2015-11-11 23:18:36 +03:00
Raul Tambre 2a5f5c0dc2 Add new VS Update 1 database format to .gitignore
It can be enabled in options, under C/C++ -> Editor. It's experimental,
but should be faster. It will be introduced in Update 1.
2015-11-09 07:42:16 +02:00
Raul Tambre 5d5a4f804b Replace most returns with CHECK_ASSERTION
Also fix some Seek methods return types being unsigned, while returning
negative errors.

Added the CHECK_ASSERTION macro checks in a couple more places.

Simplified CHECK_ASSERTION macro usage.
2015-11-09 07:42:04 +02:00
Raul Tambre 9c2f48cd1d More defect fixes, added some error codes 2015-11-09 07:39:50 +02:00
Raul Tambre fac9d74344 Lots of defect fixes 2015-11-09 07:39:50 +02:00
Ivan 5dfc22a604 Merge pull request #1285 from vlj/rsx-debug
Rsx debug: Record per frame draw calls.
2015-11-09 01:35:05 +03:00
Vincent Lejeune 660bc34157 rsx: Add gui element to enable capture frame 2015-11-08 19:34:20 +01:00
Vincent Lejeune 70b9271cd8 rsx/d3d12: Record frame buffer content per draw call. 2015-11-08 19:34:18 +01:00
Vincent Lejeune 8da7361794 rsx: Expand some rsx register disasm. 2015-11-08 19:12:27 +01:00
Ivan 896562238c Merge pull request #1286 from vlj/d3d12
d3d12: Clean rtt related code
2015-11-08 14:26:13 +03:00
Vincent Lejeune 0cc4b555d1 d3d12: Comment out LLVM_BUILTIN_UNREACHABLE and display error msg in log 2015-11-07 22:52:13 +01:00
Vincent Lejeune e76abf875f d3d12: Clean rtt related code 2015-11-07 22:52:12 +01:00
Ivan adcb9864df Merge pull request #1281 from vlj/rsx
Rsx: Factorise d3d12 constant loading code
2015-11-07 18:43:19 +03:00
Vincent Lejeune 2a9895b7f0 rsx/d3d12: Move fragment constants filling code to ProgramStateCache 2015-11-06 20:08:45 +01:00
Vincent Lejeune 2ad7051746 rsx/d3d12: Move vertex constants filling code to RSXThread 2015-11-06 20:08:41 +01:00
Vincent Lejeune 02ce78482c rsx/d3d12: Move scale offset buffer setting to RSXThread 2015-11-06 20:08:17 +01:00
Zangetsu38 61755ed017 Fix Full screen in DX12 2015-11-04 15:32:44 +01:00
Danila Malyutin ae38ae9aff Install cmake from packages
It should be at least 2.8.12
2015-11-04 16:52:06 +03:00
B1ackDaemon b5cf7fba2e Merge pull request #1276 from vlj/d3d12
D3d12: Code cleaning
2015-10-30 22:12:52 +02:00
Vincent Lejeune 449c41aca2 d3d12: Support size changing depth buffer 2015-10-30 18:28:27 +01:00
Vincent Lejeune 2043181501 d3d12: Suppress a warning if no rtt is bound
Rendering depth only is legal.
2015-10-30 18:10:41 +01:00
Vincent Lejeune a2f7f371dc d3d12: Add an extra varying.
This fixes shader compilation for SH3 HD.
2015-10-30 00:04:10 +01:00
Vincent Lejeune 29cde1a618 d3d12: Clean Overlay code 2015-10-30 00:04:09 +01:00
Vincent Lejeune c570d60f45 d3d12: Add newline at the end of every file 2015-10-29 19:12:46 +01:00
Vincent Lejeune 893175f511 d3d12: Include some headers in stdafx_d3d12.h to speed up compilation 2015-10-29 19:11:25 +01:00
Vincent Lejeune c197b54774 d3d12: Rename D3D12GSRender function
Match a_b_c coding style.
2015-10-29 18:48:53 +01:00
Vincent Lejeune 124d0de325 d3d12: Move storage helpers to their dedicated files. 2015-10-29 18:48:52 +01:00
Vincent Lejeune fdae12c52e d3d12: Move empty texture slot filling code to D3D12Texture. 2015-10-29 18:48:52 +01:00
Vincent Lejeune 59c549ac86 d3d12: Clean D3D12GSRender
* Use anonymous namespace
* Use a_b_c code style
* Fix static analysis warning.
2015-10-29 18:48:51 +01:00
Vincent Lejeune 1ec18bdf64 RSX/common: Clean BufferUtils code
* Add noexcept
* Use a_b_c code style
* Use anonymous namespace
2015-10-29 18:48:50 +01:00
Vincent Lejeune 42467ba40f RSX/common: Clean TextureUtils code.
* Use a_b_c code style
* Add noexcept
* Use anonymous namespace
2015-10-29 18:48:50 +01:00
Vincent Lejeune 9f51bce2aa StrFmt: Fix unknow pragma on MSVC 2015-10-29 18:48:49 +01:00
Vincent Lejeune 8f84fca0f2 d3d12: Fix some unintialised value warning. 2015-10-29 18:48:49 +01:00
Vincent Lejeune 0e3ab35e32 d3d12: Fix sampler border color 2015-10-29 18:48:48 +01:00
Vincent Lejeune 119126c60c d3d12: Move enum conversion to a separate files.
* Add noexcept
* Use unreachable
* Use a_b_c style
2015-10-29 18:48:48 +01:00
Vincent Lejeune 5c42a3cbc4 d3d12: Add a unreachable function used as debug/optimisation hint 2015-10-29 18:48:47 +01:00
Vincent Lejeune 6133590903 d3d12: Rename d3d12.h to avoid conflicts 2015-10-29 18:48:46 +01:00
B1ackDaemon eec64ef1c0 Merge pull request #1271 from vlj/d3d12
D3d12: Perf and compat improvements
2015-10-27 04:08:56 +02:00
Vincent Lejeune 8afa6e59b2 RSX: Returns texture bias as a float, considering the stored value is a half float. 2015-10-27 01:24:04 +01:00
Vincent Lejeune 9f49232cac d3d12: Avoid copying index data and use correct index range.
This fixes Braid.
2015-10-27 01:24:04 +01:00
Vincent Lejeune bc7e30517b d3d12: Add support for primitive restart. 2015-10-27 01:24:03 +01:00
Vincent Lejeune fe902cbb13 d3d12: Use provided constants to set alignments 2015-10-27 01:24:03 +01:00
Vincent Lejeune 42f3296791 d3d12: Try to support undef vertex input 2015-10-27 01:24:02 +01:00
DHrpcs3 08b03db5fa Merge pull request #1274 from O1L/master
Next stage of removing of the old ini-manager.
2015-10-27 01:34:48 +02:00
O1L f842c206f3 Removed unneeded config saves and misprints 2015-10-27 01:41:12 +04:00
O1L c0255208cc Old ini-manager only partially used in VFS. Global configuration used as defualt. 2015-10-27 01:09:31 +04:00
DHrpcs3 77c2ca6862 Merge pull request #1272 from O1L/master
Support of custom configurations
2015-10-25 19:42:58 +02:00
O1L e8ebb005fd Again 2015-10-25 19:06:01 +04:00
O1L c64bbcf87a Oops 2015-10-25 18:55:56 +04:00
O1L 89f14ec5ac Ported more options in new ini-manager. Use later. 2015-10-25 18:44:49 +04:00
O1L 1673ba217c Do not try to change default config, use state configs. 2015-10-24 22:48:07 +04:00
O1L a273768c4d Compilation fix 2 2015-10-24 16:18:40 +04:00
O1L bc8b71cbc1 Compilation fix 2015-10-24 15:46:31 +04:00
O1L 9d6df238d5 Use custom configurations 2015-10-24 14:38:24 +04:00
Nekotekina fd628d8345 Minor changes 2015-10-22 22:38:34 +03:00
Nekotekina d4e0da3f80 DX12 fix + rpcs3-tests project 2015-10-21 13:31:29 +03:00
Nekotekina 8cfabf0ead Fixes 2015-10-20 18:55:34 +03:00
Hykem b3b07c8248 Merge pull request #1265 from tambry/savedatafix
Fix a save data access violation
2015-10-20 15:56:35 +01:00
Raul Tambre 6f8544281a Fix a savedata access violation 2015-10-20 12:34:54 +03:00
B1ackDaemon d1b5dcfdad Merge pull request #1261 from vlj/module
d3d12: Move d3d12 files to separate solution.
2015-10-18 04:14:19 +03:00
Vincent Lejeune a462b4518c d3d12: Move d3d12 files to separate solution.
It simplify solution configurations.
2015-10-17 04:15:58 +02:00
Nekotekina 77bf86eaa5 Bugfix 2015-10-16 03:25:39 +03:00
Raul Tambre b3db9255e4 Merge pull request #1257 from vlj/d3d12
D3d12: Fixes and speed improvements.
2015-10-15 18:38:01 +03:00
Vincent Lejeune f5bd044096 d3d12: Lower alignement constraint for vertex index 2015-10-15 17:13:43 +02:00
Vincent Lejeune a2997a1109 d3d12: Avoid an extra vertex copy 2015-10-15 17:13:43 +02:00
Vincent Lejeune b0f8611f49 Common/GL/D3D12: Fix int vector ctor in vertex shader and a compare opcode. 2015-10-15 17:13:42 +02:00
Vincent Lejeune de97d3a7aa d3d12: Zero vertex shader output. 2015-10-15 17:13:42 +02:00
Vincent Lejeune 0e98da2306 d3d12: Make descriptor heap a little more compact. 2015-10-15 17:13:40 +02:00
Vincent Lejeune 5a064be490 Fix d3d12 build. 2015-10-15 17:05:56 +02:00
Nekotekina ec0005195d RSX fix 2015-10-14 22:51:27 +03:00
Nekotekina a974ee009e vm::var improved, cleanup
Mostly vm::var initialization introduced.
Added vm::make_var function.
2015-10-14 18:17:37 +03:00
Raul Tambre cc02a147d3 Merge pull request #1240 from tambry/RealCoverityFix
Try to really fix Coverity and progress on moving to container builds
2015-10-14 17:40:17 +03:00
Raul Tambre 9ee9efeb76 Change branch_pattern back to coverity_scan
Doesn't seem to play nicely with forks.
2015-10-14 15:38:46 +03:00
Raul Tambre decd2b4f5a Progress on moving to container builds 2015-10-14 15:38:45 +03:00
Raul Tambre 9f3b42bd71 Hopefully fix Coverity 2015-10-14 15:38:45 +03:00
DHrpcs3 4dcb63436c Merge pull request #1255 from DHrpcs3/master
OpenGL renderer improvements
2015-10-14 15:13:06 +03:00
DH a443682aaf OpenGL renderer fixes
Fixed attributes loading
Fixed scale-offset matrix
Fixed attribute debug option
2015-10-14 14:34:55 +03:00
DH 4a55ba3067 OpenGL renderer improvements
Flush program cache at thread exit
Use cached locations
2015-10-14 03:16:39 +03:00
DHrpcs3 3f6b826ab0 Merge pull request #1254 from DHrpcs3/master
rsx thread & OpenGL renderer fixes
2015-10-14 02:10:03 +03:00
DH 37a3800597 rsx:🧵 disable all vertex data at end command
Fixed OpenGL program attributes cache flush
2015-10-14 01:49:47 +03:00
DHrpcs3 6d99516489 Merge pull request #1253 from danilaml/patch-1
Fix clang compiling
2015-10-14 00:19:47 +03:00
Danila Malyutin 74daf9145a Add missing override 2015-10-13 23:42:43 +03:00
Danila Malyutin 92e90101e2 Fix clang compiling 2015-10-13 23:32:25 +03:00
DHrpcs3 d8d09b5472 Merge pull request #1252 from DHrpcs3/master
Implemented new config system. Minor improvements
2015-10-13 23:09:22 +03:00
DH 5de1ea3fd4 Fixed bind rsx method to range implementation 2015-10-13 22:59:25 +03:00
DH 9136cbfcf2 Fixed compilation errors 2015-10-13 22:47:17 +03:00
DH 07b3897499 Trying do not use macro for methods binding to range 2015-10-13 20:44:58 +03:00
DH 737080274a Improved NV4097_BACK_END_WRITE_SEMAPHORE_RELEASE and NV4097_TEXTURE_READ_SEMAPHORE_RELEASE commands handling 2015-10-13 20:39:36 +03:00
DH e4f6eb04e8 Added new config system
Added emulator state class
Added emulator events
Minor improvements
2015-10-13 20:32:08 +03:00
DHrpcs3 bbfca3fc0d Merge pull request #1249 from vlj/d3d12-fix
Fix d3d12 build.
2015-10-13 15:52:25 +03:00
Vincent Lejeune ff01e26c5c RSX: Fix immediate vertex values 2015-10-13 14:29:38 +02:00
Vincent Lejeune 2b60de32f9 fix dbg 2015-10-13 14:29:28 +02:00
Vincent Lejeune 3449bd3842 RSX: Fix debugger disasm. 2015-10-13 14:29:12 +02:00
Vincent Lejeune fc40b0ed6b RSX: Let backend customize semaphore_*_release 2015-10-13 14:28:58 +02:00
Vincent Lejeune 426c69710c Merge branch 'master' of https://github.com/RPCS3/rpcs3 into d3d12-fix 2015-10-13 14:28:11 +02:00
Vincent Lejeune a63fdf6c45 Use files from master
- Drop smart vertex storage and use OpenGL's one instead.
2015-10-13 14:27:17 +02:00
Vincent Lejeune 4154a1026f Rename RSXThread 2015-10-13 00:04:19 +02:00
Vincent Lejeune b5127e68de Remove m_ prefix 2015-10-13 00:04:18 +02:00
Vincent Lejeune dd000caad7 Remove context_dma* 2015-10-13 00:04:18 +02:00
Vincent Lejeune 86fff9800f Remove base offset 2015-10-13 00:04:16 +02:00
Vincent Lejeune 2679e4f526 remove rsxtransformconstant 2015-10-13 00:04:16 +02:00
Vincent Lejeune 1e431edf09 Remove fragment program 2015-10-13 00:04:15 +02:00
Vincent Lejeune 67f1f0fea3 Remove fragment constants 2015-10-13 00:04:15 +02:00
Vincent Lejeune beabc88f79 Remove transform constants 2015-10-13 00:04:14 +02:00
Vincent Lejeune e086b7a522 Remove cull/front face 2015-10-13 00:04:13 +02:00
Vincent Lejeune dd1afe85ae Remove alpha func 2015-10-13 00:04:13 +02:00
Vincent Lejeune 60bccf0f10 Remove RSXVertexArray 2015-10-13 00:04:12 +02:00
Vincent Lejeune 73535e0c04 remove m_surface* 2015-10-13 00:04:12 +02:00
Vincent Lejeune 16311b36b0 Remove viewport clip 2015-10-13 00:04:11 +02:00
Vincent Lejeune 537187687d Remove blend 2015-10-13 00:04:10 +02:00
Vincent Lejeune 403f585a19 Remove color mask 2015-10-13 00:04:10 +02:00
Vincent Lejeune 8dd19d1446 Remove color target 2015-10-13 00:04:09 +02:00
Vincent Lejeune 71552f7ffe Remove logic Op 2015-10-13 00:04:09 +02:00
Vincent Lejeune b2a7f0fd11 Remove stencil 2015-10-13 00:04:08 +02:00
Vincent Lejeune 529efd6ac8 Remove depth 2015-10-13 00:04:07 +02:00
Vincent Lejeune ed61023dd3 Remove clear_surface_color 2015-10-13 00:04:07 +02:00
Vincent Lejeune 28cdfa9feb Rename some methods. 2015-10-13 00:04:06 +02:00
Vincent Lejeune bf474f0cdb remove m_ for textures 2015-10-13 00:04:06 +02:00
Vincent Lejeune d27f6c8fa7 Use rsx::limits values 2015-10-13 00:04:05 +02:00
Vincent Lejeune 6f71d04aa4 move linear to swizzle and get_size_type
symbol undef though
2015-10-13 00:04:04 +02:00
Vincent Lejeune 3de47c201c RSX: Create a rsx namespace.
Put get_address inside.
2015-10-13 00:04:04 +02:00
Vincent Lejeune e3e5b46cbf Remove m_ prefix on some members of RSXThread 2015-10-13 00:04:03 +02:00
Vincent Lejeune 4cd9e5754e d3d12: Fix build in debug 2015-10-13 00:04:03 +02:00
Vincent Lejeune ceab44b9ab d3d12: Remove D3DGSFrame 2015-10-13 00:04:02 +02:00
Vincent Lejeune 0138a95567 RSX: Remove using namespace ps3 in header 2015-10-13 00:04:02 +02:00
Vincent Lejeune d86469c2f5 Add Utilities/types.h 2015-10-13 00:04:01 +02:00
Zangetsu38 97a67746f1 Fix Compilation error with Release/Debug on LLVM 2015-10-12 12:10:22 +02:00
DH fd6295c2f5 Added glm library 2015-10-09 20:06:28 +02:00
Vincent Lejeune f483c3b9ca Revert "Merge pull request #1245 from DHrpcs3/master"
This reverts commit 5feba39ff7, reversing
changes made to ebf28f8da0.
2015-10-09 20:04:20 +02:00
DH 98943fc9e8 Added @vlj to developers list (AboutDialog) 2015-10-09 12:29:24 +03:00
DH 2bd6265a17 Merge branch 'master' of https://github.com/RPCS3/rpcs3 2015-10-08 12:28:15 +03:00
DHrpcs3 5feba39ff7 Merge pull request #1245 from DHrpcs3/master
Rewritten RSXThread, broken DX12 Renderer and another improvements
2015-10-08 02:11:32 +03:00
DH e11e67df28 Try to avoid internal gcc error 2015-10-08 01:30:03 +03:00
DH c15027b95e Merge branch 'DHrpcs3-master' 2015-10-08 01:18:59 +03:00
DH 6cb036d35f Fix for gcc/clang build 2015-10-08 00:05:04 +03:00
DH cc0c3fc98d Implemented fragment constants loading (OpenGL renderer)
Fixed nv308a::color
Minor improvements
2015-10-07 17:36:26 +03:00
DH 86720f90cd rsx:🧵 initialize flip_status
Fixed clear_surface (OpenGL)
Enabled some RSXDebugger features (disasm and textures/buffers view)
Minor improvements
2015-10-06 01:22:21 +03:00
DH 3721941ffb Fixed OpenGL renderer crash
Temporary downgraded OpenGL requirements to OpenGL 3.1 (GLSL 1.40)
Fixed some D3D12 Renderer compilation errors
2015-10-05 18:40:22 +03:00
DH 4fdeeace66 D3D12Renderer: fixed some compilation errors
Removed GSFrameBase2 and D3DGSFrame.
Added frame for NullRender.
Minor improvements and fixes
2015-10-05 13:03:23 +03:00
DH 1c890f85c5 OpenGL: do not align buffers 2015-10-05 12:56:05 +03:00
DH 6cd62a9fd0 OpenGL: fixed nv4097_clear_surface implementation
minor improvements
2015-10-05 12:56:05 +03:00
DH 1e7ded2163 rsx::thread moved from rsx2 branch
TODO: cellResc module & RsxDebugger disabled, DX12 renderer not compilable
2015-10-05 12:56:05 +03:00
DH a7262d34f0 Added glm library 2015-10-05 12:56:05 +03:00
Raul Tambre ebf28f8da0 Merge pull request #1243 from vlj/d3d12
D3d12: Small code and performance improvements.
2015-10-05 07:53:01 +03:00
Vincent Lejeune d511153836 Common: Fix element count computation if addr is null (RSXVertexData) 2015-10-05 01:57:57 +02:00
Vincent Lejeune 2f211e4e5a d3d12: Move adapter's description to settings. 2015-10-05 00:24:56 +02:00
Vincent Lejeune a5ecbd0b2b d3d12: Do not regenerate RTTs if they didn't change between draw call. 2015-10-05 00:24:56 +02:00
Vincent Lejeune 8d986e77d1 d3d12: Reuse texture resources 2015-10-05 00:24:55 +02:00
Vincent Lejeune 3d643fbc0b d3d12: Factorise texture cache management. 2015-10-05 00:24:55 +02:00
Nekotekina cd71125277 Git version fixed 2015-10-04 23:05:46 +03:00
Raul Tambre 55ca625371 Merge pull request #1239 from vlj/d3d12
D3d12: Various factorisations and fixes
2015-10-03 20:04:53 +03:00
Vincent Lejeune 81546d357c d3d12: Do not use atomic for heaps 2015-10-03 18:25:28 +02:00
Vincent Lejeune 3acc900363 d3d12: Clean dirty texture when releasing resource storage
When an app is exiting, remaining dirty texture could be left uncleant.
2015-10-03 18:25:27 +02:00
Vincent Lejeune 6b0d29a72d d3d12: Measure flip duration 2015-10-03 18:25:27 +02:00
Vincent Lejeune 442abcc6f1 d3d12: Wrap D3D11On12CreateDevice to avoid linking against D3D12 dll 2015-10-03 18:25:19 +02:00
Vincent Lejeune c7b7d1f71f Common: Move generic vertex buffer code from d3d12 backend 2015-10-03 18:25:19 +02:00
Vincent Lejeune 62d7bf2159 Common: Move generic upload texture code from d3d12 2015-10-03 18:25:18 +02:00
Vincent Lejeune 07e13b8613 d3d12: Suballocate from big buffer for texture upload too 2015-10-03 18:25:17 +02:00
Vincent Lejeune f1f31e22f9 d3d12: Use d3dx12 structs for Root signature declarations 2015-10-03 18:25:17 +02:00
Vincent Lejeune 9a0232bc87 d3d12: Use d3dx12.h defined structs for constant buffers code 2015-10-03 18:25:16 +02:00
Vincent Lejeune 8e83ad7b65 d3d12: Fix sampler descriptor stride in UploadTextures. 2015-10-03 18:25:16 +02:00
Vincent Lejeune 703b1636c8 d3d12: Do not use array size to get vertex buffer element count. 2015-10-03 18:25:15 +02:00
Raul Tambre f898ebff3f Merge pull request #1238 from tambry/CoverityFix
Fix Coverity and bump the version.
2015-10-03 08:46:43 +03:00
Raul Tambre 455d07e05b Bump version to 0.0.0.6 2015-10-02 21:43:13 +03:00
Raul Tambre fd9977d3bd Fix Coverity and make Coverity branch master 2015-10-02 19:55:18 +03:00
Raul Tambre f6777825d5 Merge pull request #1235 from Zangetsu38/patch-1
Little fix correct path for Game Data
2015-09-28 20:34:31 +03:00
Zangetsu38 893a4e34a1 Little fix correct path for Game Data 2015-09-28 19:11:17 +02:00
Raul Tambre 4ac6c23ced Merge pull request #1233 from Zangetsu38/Zangetsu
Adding the icon on window GL and DX12
2015-09-28 19:20:17 +03:00
Zangetsu38 f27e77c7e0 Adding the icon on window GL and DX12 2015-09-27 00:36:44 +02:00
B1ackDaemon 286d2962c6 Merge pull request #1231 from vlj/d3d12
D3d12: Code cleaning and minor fixes
2015-09-26 05:50:02 +03:00
Vincent Lejeune 37721d6b8a d3d12: Use big buffer instead of placed resource for vertex index storage
Increase perf in Disgaea 3
2015-09-25 22:35:22 +02:00
Vincent Lejeune 8ba74a7f7d d3d12: Add some more counter to debug overlay 2015-09-25 22:35:21 +02:00
Vincent Lejeune 506fdec6df d3d12: Copy vertexbuffer in vram for output scaling pass. 2015-09-25 22:35:21 +02:00
Vincent Lejeune de5a3451cd d3d12: Force command queue completion 2015-09-25 22:35:20 +02:00
Vincent Lejeune 23bd197bd4 d3d12: clean code 2015-09-25 22:35:19 +02:00
Vincent Lejeune f10c812301 d3d12: Use d3dx12.h defined struct. 2015-09-25 22:34:34 +02:00
Vincent Lejeune ae51ce2349 d3d12: Fix a comment 2015-09-25 16:24:45 +02:00
Vincent Lejeune fa6e2bfe02 d3d12: Add d3dx12.h from DX sample on github 2015-09-25 16:23:03 +02:00
Hykem faf0a0d851 Merge pull request #1219 from Nekotekina/master
Terrifying PKG installer fix
2015-09-22 15:18:13 +01:00
Nekotekina 8ae3401ffa Some things improved
shared_mutex_t implemented
GUI Emu Callbacks rewritten
fxm::import, fxm::import_always implemented
cellMsgDialog rewritten
Emu.CallAfter improved (returns std::future)
2015-09-22 16:48:21 +03:00
Nekotekina 9d68c16c62 be_t (se_t) optimizations 2015-09-22 13:28:35 +03:00
Nekotekina 59f1077a36 Cleanup, be_t fixed
Some functions renamed:
get_ps3_function_name
execute_syscall_by_index
2015-09-22 13:28:34 +03:00
Nekotekina 4e62ec7458 PKG Installer fixed, u128 improved 2015-09-22 13:28:32 +03:00
Nekotekina 12f36cf31f Experimental class template Module<T>
Allocates ps3 memory for specific instance T
2015-09-22 13:28:31 +03:00
Nekotekina 093ecc0a02 CALL_FUNC macro fixed
Now it can call any HLE function, possibly using LLE if available.
2015-09-22 13:28:29 +03:00
Zangetsu38 da4bf43fb2 Update submodule ffmpeg and wxWidgets. 2015-09-20 23:08:24 +02:00
Danila Malyutin 11eeab0a1a PPU/LLVM: Added noexcept and some fixes 2015-09-19 17:09:50 +03:00
Danila Malyutin 3208a7713f PPU/LLVM: Fix for crashes on exit with jit 2015-09-19 17:09:49 +03:00
Vincent Lejeune 97f62571ff d3d12: Properly clean protected page in dtor 2015-09-18 22:36:22 +02:00
Vincent Lejeune c31c0c40a4 d3d12: Fix ARGB8 swizzle and support swizzling of rtts
Fix harem tengoku colors.
2015-09-18 22:36:21 +02:00
Vincent Lejeune 12f00a5e16 d3d12: Fix indexed triangle fan emulation. 2015-09-18 22:36:21 +02:00
Vincent Lejeune 0da893695e d3d12: Fix buffer upload with a base vertex. 2015-09-18 22:36:20 +02:00
Vincent Lejeune 5f08cca849 d3d12: Do not init D2DStruct if uneeded 2015-09-18 22:36:19 +02:00
Vincent Lejeune 72e5578595 d3d12: Get rid of extra garbage collection off 2015-09-18 22:36:19 +02:00
Vincent Lejeune bf04758285 d3d12: Submit command list every draw call in debug mode 2015-09-18 22:36:18 +02:00
Vincent Lejeune 7d15cc0dfd d3d12: Build shader in debug mode if debug output is enabled. 2015-09-18 22:36:18 +02:00
Vincent Lejeune 05c5058dfd PPU/LLVM: Remove useless call to NotifyBlockStart
Likely a rebase error, with this Metal Slug can run at 60 fps again.
2015-09-16 22:39:49 +02:00
Nekotekina 91c98a9533 Fix issue #1223 2015-09-16 21:31:41 +03:00
Hykem e86e72804b Merge pull request #1218 from Aaahh/patch-1
Update README.md
2015-09-16 17:18:40 +01:00
Aaahh Ahh 34622933f3 Merge branch 'master' into patch-1 2015-09-15 23:50:32 -04:00
Vincent Lejeune c407c786cc PPU/LLVM: Do not notify already compiled block.
Also flush m_pending_address_start to avoid memory consumption
explosion.
2015-09-15 19:21:40 +02:00
Vincent Lejeune ecb3d93918 PPU/LLVM: Remove lock in GetCompiledExecutableIfAvailable
This should increase performance a lot in some case.
2015-09-15 19:21:40 +02:00
Vincent Lejeune 667cb64c29 PPU/LLVM: Rename ProcessExecutionTrace to better reflect what it does. 2015-09-15 19:21:40 +02:00
Vincent Lejeune 359258c3d3 PPU/LLVM: Increase recompiler thread responsiveness. 2015-09-15 19:21:39 +02:00
Vincent Lejeune 9d18bba1df PPU/LLVM: Propagate exceptions
It fixes a crash in Retro City Rampage with low (ie 10) llvm threshold.
2015-09-15 19:21:39 +02:00
Raul Tambre 8204737efa Implement GetLicenseArea, category improvements
Also fixed newlines, CellSailEvent, fixed CellMusic changes, fixed
console_write, fixed L10n changes and removed the login dialog for now,
until a more proper implementation.
2015-09-13 10:26:01 +03:00
Aaahh Ahh 4622914610 Update README.md 2015-09-12 19:35:10 -04:00
Raul Tambre ea376e7751 Implement console_write and GetHomeDataExportPath 2015-09-12 14:11:26 +03:00
Raul Tambre cd7fbae583 Implement NetStartDialogLoadAsync, L10N additions
Also improved cellPadPeriphGetInfo
2015-09-10 17:13:31 +03:00
Raul Tambre f9731de777 HddGameCheck fix and Music/Avc2 improvements 2015-09-10 16:09:31 +03:00
Nekotekina cbe83ad8dd Various fixes 2015-09-08 13:47:00 +03:00
Raul Tambre 4666f190db Fix BRI instruction, fixes #1165 2015-09-07 20:14:00 +03:00
Raul Tambre de97c8e20f Add RPCS3 version to logging
Also fixed the link pointing to the RPCS3 forum.
2015-09-07 20:13:42 +03:00
Raul Tambre 09673c928c cellVideoOut accuracy improved, logging additions
Now basic settings are logged in the start of every log, to help devs in
determining  possible problems, when users test or try to run certain
games.
2015-09-07 20:00:58 +03:00
Raul Tambre c923cb54d3 cellGem and cellGameExec improvements 2015-09-07 20:00:33 +03:00
Raul Tambre 218e823fdc More cellSailFuture/Player improvements 2015-09-07 19:54:03 +03:00
Raul Tambre 5a7327492a Various cellSailPlayer improvements
Added default attributes, fixed a Travis error and added currently
broken player booting that I can't figure out.
2015-09-07 19:51:38 +03:00
Raul Tambre c9f3871c68 cellSail improvements 2015-09-07 19:47:54 +03:00
Raul Tambre ff3bfa1ca2 Implement cellVideoOutGetGamma/SetGamma
Also fixed settings window being too small and some minor formatting.
2015-09-07 16:33:25 +03:00
Nekotekina 7e01c81154 SPU Recompiler fixed 2015-09-07 00:36:32 +03:00
Hykem ab1c05aa71 Merge pull request #1199 from Nekotekina/master
SPU Cleanup
2015-09-02 19:04:10 +01:00
Nekotekina 817fec9684 SPU Cleanup
SPURecompiler improved
Old SPU decoder removed
SPU Interpreters merged
2015-09-02 00:38:44 +03:00
Vincent Lejeune 58181c5c17 PPU/LLVM: Remove indirect call completly 2015-09-01 18:58:14 +03:00
Vincent Lejeune 60d5dd40f7 PPU/LLVM: Fix unsigned/signed type comparaison warning 2015-09-01 18:58:12 +03:00
Vincent Lejeune 02a1bffc12 PPU/LLVM: Simplify trace management 2015-09-01 18:58:11 +03:00
Vincent Lejeune f2c8db75bf PPU/LLVM: Do not recompile blocks 2015-09-01 18:58:10 +03:00
potmdehex 665f316a3b Replace sprintf with fmt::format 2015-08-30 20:26:16 -07:00
Raul Tambre de7bbb5661 Merge pull request #1202 from danilaml/patch-1
Small appveyor fix
2015-08-29 11:54:45 +03:00
Danila Malyutin 4456d9fcf1 Small appveyor fix
clone depth isn't very reliable for submodules. Still waiting for appveyor to update to 2.5.0 git.
2015-08-29 01:20:19 +03:00
Nekotekina d1f31d6fda fmt::format fixed 2015-08-27 02:57:00 +03:00
Vincent Lejeune 5fe3ea6440 PPU/LLVM: Use a big table instead of an unordered_map to get compilation result.
The hashmap overhead may be really big in some case.
2015-08-26 22:22:01 +02:00
Vincent Lejeune 942f26509b Memory: Factorize virtual memory reservation/allocation code in function 2015-08-26 21:54:40 +02:00
Vincent Lejeune 241dedef4e PPU/LLVM: Properly print verification string 2015-08-26 21:54:40 +02:00
Vincent Lejeune eb90e509f9 PPU/LLVM: Avoid using an indirect call for function call 2015-08-26 21:54:39 +02:00
Vincent Lejeune b2ca9edde2 PPU/LLVM: Use ExecuteFunction in ExecuteTillReturn 2015-08-26 21:54:39 +02:00
Vincent Lejeune f81192373f PPU/LLVM: Replace magic number with opcode enum in GetBranchTypeFromInstruction. 2015-08-26 21:54:39 +02:00
Raul Tambre 99a9fd8505 Merge pull request #1196 from vlj/d3d12
D3d12/RSX: Some light improvement to program management.
2015-08-26 20:21:29 +03:00
Vincent Lejeune e0aa74d380 D3D12: Add CELL_GCM_ZERO case to comparaison function. 2015-08-26 18:45:57 +02:00
Vincent Lejeune 095c8fa19b RSX/D3D12: Improve shader lookup performance 2015-08-26 18:45:57 +02:00
Vincent Lejeune 9c24bb9d75 RSX/D3D12/GL/Null: Notify backend of program/state change 2015-08-26 18:45:57 +02:00
Danila Malyutin 3468a7ebcf PPU/LLVM: Add regression tests for SUBFIC 2015-08-26 14:39:50 +03:00
Danila Malyutin 8ea7da56ec PPU/LLVM: Fix SUBFIC instruction
Fixes sprites in Disgaea 3
2015-08-26 14:39:48 +03:00
Danila Malyutin 4bf0deecb6 Fix zlib lib linking order.
It should be AFTER lib that requires it.
2015-08-26 14:32:09 +03:00
Nekotekina e551e2bc5d Bugfix 2015-08-24 21:22:49 +03:00
Nekotekina 5e14310071 noexcept usage fixed
thread_t renamed to named_thread_t
2015-08-24 21:22:48 +03:00
Nekotekina 168cd9bb7a TLS for sys_net implemented
Method ptr for vm::ptr (renamed "of")
Method ref for vm::ptr (returns vm::ref)
Operator & for vm::ref (returns vm::ptr)
2015-08-24 21:22:46 +03:00
Nekotekina 6b6cd11fbe cellSaveData fix 2015-08-24 21:22:45 +03:00
Nekotekina fcd6b64f8f vm::var rewritten 2015-08-24 21:22:44 +03:00
Nekotekina 9c8773252a Minor style changes (sys_net) 2015-08-24 21:22:43 +03:00
Nekotekina ce494f8847 fmt::by_value, fmt::Format removed 2015-08-24 21:22:42 +03:00
Nekotekina 15057ffc5e wtf? 2015-08-24 21:22:40 +03:00
Nekotekina 73b108765e fs:: const renaming, fs::g_tls_error stub 2015-08-24 21:22:39 +03:00
Nekotekina c2897cddd6 id_traits, idm::get_last_id() added
id_traits for file/dir descriptors
idm::get_current_id() removed, thread-local last ID
2015-08-24 21:22:38 +03:00
Nekotekina d9403c2ed2 thread_t cleanup 2015-08-24 21:22:37 +03:00
Nekotekina be9a599beb PPU Decoder Cache improved 2015-08-24 21:22:35 +03:00
Nekotekina eb63558c6d KernelExplorer improved 2015-08-24 21:22:34 +03:00
Nekotekina e18db20630 VFS cleanup, some methods added
VFS::DeleteAll, VFS::GetDirSize, VFS::Exists, VFS::Rename
(VFS::RenameFile, VFS::RenameDir removed)
2015-08-24 21:22:33 +03:00
Nekotekina db88c539fb idm::get_type, sceKernelGetThreadmgrUIDClass 2015-08-24 21:22:32 +03:00
Nekotekina c6bdedf3b0 sleep_queue_t moved to SleepQueue.cpp, cleanup
Used ARMv7Thread instead of ARMv7Context in PSV HLE functions and
callbacks. However, interpreter still uses ARMv7Context.
Various PSV functions partially implemented:
sceKernelCreateEventFlag
sceKernelDeleteEventFlag
sceKernelOpenEventFlag
sceKernelCloseEventFlag
sceKernelWaitEventFlag
sceKernelWaitEventFlagCB
sceKernelPollEventFlag
sceKernelSetEventFlag
sceKernelClearEventFlag
sceKernelCancelEventFlag
sceKernelGetEventFlagInfo
sceKernelCreateSema
sceKernelDeleteSema
sceKernelCreateMutex
sceKernelDeleteMutex
sceKernelCreateCond
sceKernelDeleteCond
2015-08-24 21:22:30 +03:00
Nekotekina 94d1488259 IdManager funcs added: idm::import, idm::withdraw 2015-08-24 21:22:29 +03:00
Nekotekina 8b3c250702 PKG decryption without the intermediate 2015-08-24 21:22:28 +03:00
Nekotekina 07b9379a7c New u128 type stub 2015-08-24 21:22:27 +03:00
Nekotekina 8d758b9088 alignas() used instead of set_alignment macro 2015-08-24 21:22:25 +03:00
Nekotekina 544fe531a3 Added fxm::withdraw, cellGame improved 2015-08-24 21:22:24 +03:00
Nekotekina 6f3c50eba2 u128 renamed to v128
Since it's vector union type
2015-08-24 21:22:23 +03:00
Nekotekina f8afee3325 Fixed Object Manager (detached) 2015-08-24 21:22:22 +03:00
Nekotekina 9923f96431 Added PSP PKG support 2015-08-24 21:22:21 +03:00
Nekotekina dd665e7363 ID manager simplified
ID manager refactoring, redundant "type" information removed
2015-08-24 21:22:19 +03:00
Nekotekina da8883d5d3 cellSaveData definitions shortened 2015-08-24 21:22:18 +03:00
Nekotekina 2113fce2fb cellFont, cellRudp cleanup 2015-08-24 21:22:17 +03:00
Nekotekina 9e5daa1737 IdManager improved, added Fixed ID mechanism
Fixed UB in get_current_id()
2015-08-24 21:22:15 +03:00
Nekotekina c7ee8cadde cellFont, cellFs, cellGcmSys funcs added, minor cleanup 2015-08-24 21:22:14 +03:00
O1L c0b90d01bd Add LLVM Debug / Release configurations for gui solution. Disable some DX12-only options on non-DX12 builds 2015-08-24 20:54:35 +03:00
O1L 6ae7f450f1 Compilation fix 2015-08-24 00:23:31 +03:00
O1L 3c27bf0a6a Gui: separate 'Settings' code from MainFrame.cpp, minor cleanup 2015-08-24 00:23:30 +03:00
Danila Malyutin b01583f54b Some fixes for possible *nix compiler errors 2015-08-24 00:20:06 +03:00
Danila Malyutin 8140ab459f Don't init llvm on travis
it should be installed from packages
2015-08-24 00:20:04 +03:00
Danila Malyutin 6c4f968373 Try to build with llvm
and update readme
2015-08-24 00:20:03 +03:00
Danila Malyutin d0283265cc Improve clock_gettime on osx
and some clean up
2015-08-24 00:20:02 +03:00
Danila Malyutin 009370f73c Fix some compiling problems on OSX
and enable osx builds on travis
2015-08-24 00:20:01 +03:00
Raul Tambre e8088d1216 Merge pull request #1191 from vlj/d3d12
d3d12: Fix metal slug 3 crash
2015-08-22 00:23:13 +03:00
Vincent Lejeune 1ee749a9a8 d3d12: Fix blend alpha mode
Follow GL spec.
2015-08-17 22:12:58 +02:00
Raul Tambre 6124783180 Merge pull request #1188 from vlj/d3d12
d3d12: Fix wrong index being used for sampler descriptor heap
2015-08-17 12:26:44 +03:00
Vincent Lejeune 592543c47f d3d12: Fix wrong index being used for sampler descriptor heap
Fix a crash in Disgaea 3 with debug output enabled.
2015-08-17 00:12:30 +02:00
Vincent Lejeune be1511bd7a d3d12: Add a d2d overlay to display debug text 2015-08-16 23:00:55 +02:00
Vincent Lejeune fcd579a7b5 d3d12: Record draw call count and duration instead of vertex/texture upload 2015-08-16 23:00:46 +02:00
Vincent Lejeune 0e733b20de Lower minidx9/Include priority 2015-08-16 23:00:35 +02:00
Vincent Lejeune 80c25b8ced d3d12: Reuse the same command list until flip or semaphoreRelease 2015-08-16 23:00:27 +02:00
Vincent Lejeune a93a81997f d3d12: Remove preventive "waitForCompletion" after a flip. 2015-08-16 23:45:56 +03:00
Vincent Lejeune a852d5caca d3d12: Disable openMP
It actually decreases performance.
2015-08-16 23:45:54 +03:00
Vincent Lejeune 06532e3263 d3d12: Do not invalidate surface texture if they are not set.
Fix hang with depth read texture and color buffer enabled.
2015-08-16 23:45:52 +03:00
Vincent Lejeune 63a54dd70d d3d12: Rewrite per frame resource cleaning function. 2015-08-16 23:45:51 +03:00
Vincent Lejeune c2430d3af1 d3d12: Use ComPtr for some others member. 2015-08-16 23:45:49 +03:00
Vincent Lejeune b54adebfc7 d3d12: Do not recreate fence/event each frame. 2015-08-16 23:45:47 +03:00
Danila Malyutin 491d5528ed Don't print all env vars on travis
clogs logs and might leak encrypted vars if we'll have any.
2015-08-16 23:40:11 +03:00
Danila Malyutin 7460d215fd Fix travis OoM crash with gcc and -O3
Until with move to containers.
2015-08-16 23:40:09 +03:00
Danila Malyutin 5bf6c25652 Remove unneeded code (fixes flag "conflicts")
cmake should add appropriate flags depending on build type automatically
2015-08-16 23:40:07 +03:00
Danila Malyutin 0fb8ad8c5a Update Cotire to 1.7.3
It fixes some bugs. Also use add_compile_options instead of add_defenitions where necessary
2015-08-16 23:40:05 +03:00
Danila Malyutin aeee0758c2 Ignore warnings in VS from llvm headers 2015-08-16 23:40:03 +03:00
Danila Malyutin 83b77ced9e Fix openal lib name in debug-memleak
is this config even working?
2015-08-16 23:40:01 +03:00
Nekotekina 405d7cb70c Revert "RSX: Fix NV3089"
This reverts commit a86e44deb4.
Reasons: it's broken and not strictly related with d3d12 PR.
2015-08-16 18:37:20 +03:00
Raul Tambre 0ce4930c0f Merge pull request #1177 from Zangetsu38/Getsuga
Fix correct size setting windows.
2015-08-15 10:38:29 +03:00
Raul Tambre a3dc623270 Merge pull request #1181 from vlj/d3d12
D3d12: Fixes
2015-08-15 10:31:35 +03:00
Vincent Lejeune 3b0afe92e3 d3d12: Add a dummy D3D12Lib struct that load/unload d3d12.dll
It allows to unload the lib after everything else has been released, it
fixes a crash when leaving an app with d3d12 backend.
2015-08-14 23:39:38 +02:00
Vincent Lejeune 09cc127dd9 d3d12: Use ComPtr<> instead of manually releasing some structures 2015-08-14 23:39:37 +02:00
Vincent Lejeune 9cb88b3a8d d3d12: Use ThrowIfFailed instead of check to be inline with DX12 Samples 2015-08-14 23:39:37 +02:00
KaOs1 f3d7c5da9d sys_mempool implementation fixes 2015-08-14 22:44:41 +03:00
KaOs1 bc13128afe sys_mempool implemented 2015-08-14 22:44:39 +03:00
Vincent Lejeune befe93784f d3d12: Do not create/submit an extra command list for texture upload/rtt state change 2015-08-14 21:23:30 +02:00
Zangetsu38 732eef6c02 Update with master and Fixed Conflict 2015-08-14 19:35:58 +02:00
Vincent Lejeune 4185fcb6cd d3d12: Do not output scale if there is no rtt available
Fix crash in Disgaea 3
2015-08-14 17:03:16 +02:00
Raul Tambre 850416d530 Merge pull request #1169 from vlj/d3d12
Implement a d3d12 backend
2015-08-14 17:44:27 +03:00
Vincent Lejeune abee3539b8 d3d12: Fix non dx12 build config 2015-08-14 00:29:22 +02:00
Raul Tambre 07f33a3809 Merge pull request #1178 from danilaml/appveyor-llvm-dx12
Add llvm build to appveyor and fix wrong xaudio lib with cmake
2015-08-13 09:31:42 +03:00
Danila Malyutin 1d09408e38 Disable regular (non-llvm) builds to save time
because appveyor wouldn't run them in parallel. llvm builds are only ~1
min longer anyway.
2015-08-13 01:34:34 +03:00
Danila Malyutin 99156c61e4 Fix wrong XAudio lib being linked 2015-08-13 01:12:15 +03:00
Danila Malyutin c63db8842c Add llvm build to appveyor 2015-08-12 23:59:56 +03:00
Vincent Lejeune 9cb7339067 d3d12: Do not detach garbage collection thread
Thanks Neko for the tips.
2015-08-12 22:59:15 +02:00
Zangetsu38 5e9eb9c3bb Fix correct size setting windows.
And other small change
2015-08-12 17:41:46 +02:00
Raul Tambre a775b428f4 Merge pull request #1173 from vlj/llvm36-debug
Add debug options for llvm compiler
2015-08-12 17:53:49 +03:00
Vincent Lejeune cf1c86bb2f d3d12: Signal thread termination request + use a producer/consumer pattern closer to other ones in rpcs3. 2015-08-12 00:28:38 +02:00
Vincent Lejeune 7843b23ee1 Move DX12_SUPPORT before ($preprocessor defenitions) 2015-08-12 00:28:38 +02:00
Zangetsu38 f0a5641cf0 Fix file not found 2015-08-12 00:28:37 +02:00
Vincent Lejeune 3fe90d9e8d Add DX12 variant of debug/release with and without llvm 2015-08-12 00:28:37 +02:00
Vincent Lejeune 3d486a8ba9 d3d12: Reset gfxHandler in dtor 2015-08-12 00:28:36 +02:00
Vincent Lejeune 11980346c9 Clean an useless added line 2015-08-12 00:28:36 +02:00
vlj 6a408301d7 d3d12: Another fix 2015-08-12 00:28:35 +02:00
vlj 9b10895c38 d3d12: Fix build with latest master 2015-08-12 00:28:35 +02:00
vlj 6fcd0e0421 d3d12: Add semaphorePGRAPHTextureRead 2015-08-12 00:28:34 +02:00
vlj 37cc5e5c11 d3d12: Fix D3D12GSRender member name 2015-08-12 00:28:34 +02:00
vlj 38a809b483 d3d12: Use another sampler heap when using more than 2048 samplers 2015-08-12 00:28:34 +02:00
vlj d2edeafffe d3d12: Remove extra , 2015-08-12 00:28:33 +02:00
vlj b839b86895 d3d12: Fix color for target_none 2015-08-12 00:28:33 +02:00
vlj af181395fc d3d12: Fix warning 2015-08-12 00:28:32 +02:00
vlj 265331117e d3d12: Support targetless flip
Fix PS3Doom
2015-08-12 00:28:32 +02:00
vlj 725b0c606d d3d12: Add some doc 2015-08-12 00:28:31 +02:00
vlj 0e6cd8cd0e d3d12: Fix warnings 2015-08-12 00:28:31 +02:00
vlj ff219c6035 d3d12: Factorise sampler desc creation in a separate function 2015-08-12 00:28:30 +02:00
vlj 612d169b78 d3d12: Add some comments 2015-08-12 00:28:30 +02:00
vlj 8801abb93a d3d12: Refactor index management
Separates it from vertex management and move all the logic (forced
indexing, index count calculation...) outside of GSRender.
2015-08-12 00:28:29 +02:00
vlj 1f3fbe91e2 d3d12: Don't call GetAddress if context_dma is not set 2015-08-12 00:28:29 +02:00
vlj 91809c09d4 d3d12: use memcpy instead of streamToBuffer for alpha settings
streamToBuffer doesn't work well for data < 128 bits
2015-08-12 00:28:28 +02:00
vlj bf394d4f56 d3d12: Support triangle fan
Fix missing character members in the guided fate paradox
2015-08-12 00:28:28 +02:00
vlj 6f0c74cf76 d3d12: Fix crash with write color/depth buffer enabled 2015-08-12 00:28:27 +02:00
vlj 428d66598d d3d12: Move util shader creation in another file 2015-08-12 00:28:27 +02:00
vlj 2cd035d530 d3d12: Fix A1R5G5B5 endianness
Fix color in Retro city rampage
2015-08-12 00:28:27 +02:00
vlj cb0ebad210 d3d12: Fix binding of tex/sampler 2015-08-12 00:28:26 +02:00
vlj 3cc3974466 d3d12: Fix m_ctrl not being properly passed to fragement decompiler
Fix Retro City Rampage
2015-08-12 00:28:26 +02:00
vlj 45b7da6666 d3d12: Mipmap offset is 512byte aligned
Fix retro city rampage crash at startup
2015-08-12 00:28:25 +02:00
vlj 6cb00e681b d3d12: support swizzled CELL_GCM_TEXTURE_A4R4G4B4
Fix terraria menu
2015-08-12 00:28:25 +02:00
vlj 40a3b5c918 d3d12: Mark semaphore location as volatile 2015-08-12 00:28:24 +02:00
vlj a519aa8350 d3d12: Add a (ugly) fix because of some race condition somewhere 2015-08-12 00:28:24 +02:00
vlj 8cf6255d5d d3d12: Fix unneeeded vectors 2015-08-12 00:28:23 +02:00
vlj fc65f181a7 d3d12: Fix a potential crash in GC thread 2015-08-12 00:28:23 +02:00
vlj 16fa3697db d3d12: Use atomic for data heap 2015-08-12 00:28:22 +02:00
vlj de55d64781 d3d12: Make canAlloc function const 2015-08-12 00:28:22 +02:00
vlj fd269f3adc d3d12: Fix alloc function
It may generate wrong result in very rare circumstance, although I never
experienced it.
2015-08-12 00:28:21 +02:00
vlj 3472f75ae0 d3d12: Fix uninitialized variables 2015-08-12 00:28:21 +02:00
vlj d4b83bcf6f d3d12: Try to factorise CPU/GPU descriptor handle gen
I'm still not satisfied with it but I didn't find another way to make it
compact and readable.
2015-08-12 00:28:20 +02:00
vlj 1c7bff4d36 d3d12: Use align instead of powerOf2Align 2015-08-12 00:28:20 +02:00
vlj 5e33d5535d d3d12: Add a TODO notice at the beginning 2015-08-12 00:28:19 +02:00
vlj 141c7ef340 d3d12: Do not cache non buffer vertex attribute
Fix dice test
2015-08-12 00:28:19 +02:00
vlj 73aeda1507 d3d12: Use stream to buffer to upload vertex constants 2015-08-12 00:28:19 +02:00
vlj 2c802735bd d3d12: Fix crash + use ref instead of copying in some for loops 2015-08-12 00:28:18 +02:00
vlj 865445e29b d3d12: Remove m_textureData heap since it wasn't used
Free 512 mb
2015-08-12 00:28:18 +02:00
vlj 8f31211557 d3d12: Avoid copying 8k of constant data per draw call 2015-08-12 00:28:17 +02:00
vlj d88d078f4a d3d12: Fix left over commented code 2015-08-12 00:28:17 +02:00
vlj 5102241ac2 d3d12: Compute texture size in host mem 2015-08-12 00:28:16 +02:00
vlj 4ee66a2680 d3d12: Implement intraframe vertex caching 2015-08-12 00:28:16 +02:00
vlj 294d649012 d3d12: Fix a type warning 2015-08-12 00:28:15 +02:00
vlj d29b82566e d3d12: Fix memleak 2015-08-12 00:28:15 +02:00
vlj c6a5e905bc d3d12: enable texture caching
Bring a little more perf in arkedo 2
2015-08-12 00:28:14 +02:00
vlj 8cc9642b96 Completly unclean way to track texture modification between frames 2015-08-12 00:28:14 +02:00
vlj 03a84cb208 d3d12: Measure time spent uploading texture and vertex 2015-08-12 00:28:13 +02:00
vlj 3f495689c0 d3d12: Ignore texture with 0 width/height
Fix crash in voodoo chronicles.
2015-08-12 00:28:13 +02:00
vlj ad3e50f90f d3d12: Do not guess texture size but use actual value 2015-08-12 00:28:12 +02:00
vlj 628acbf0b4 d3d12: Do not reserve a lot more than necessary. 2015-08-12 00:28:12 +02:00
vlj dbcddcf5e2 d3d12: Clean up texture upload code
Should be easier to read code (and spot bugs).
Fix crash with mipmap and DXTCn texture format.
2015-08-12 00:28:11 +02:00
vlj eda3c9084e d3d12: Fix mipmap data 2015-08-12 00:28:11 +02:00
vlj 178d0e0e85 d3d12: Try implement mipmap
The mipmap level below 0 are currently wrong, find out why
2015-08-12 00:28:11 +02:00
vlj d23cf861f1 d3d12: Factorize ring buffer like code to depth/color buffer migration 2015-08-12 00:28:10 +02:00
vlj dca9ae6ab5 d3d12: Factorize cleaning function for heaps 2015-08-12 00:28:10 +02:00
vlj aa66ddcd86 d3d12: Add some code documentation + rename some functions 2015-08-12 00:28:09 +02:00
vlj f2d39d0e82 d3d12: Use fixed width/height scale and use surface_clip info for scaleOffset matrix
Thanks to raven02 for the patch.
2015-08-12 00:28:09 +02:00
vlj f59bc86ac5 d3d12: Fix scaling for terraria/Voodoo chronicles
It break render_to_target test but it looks like an issue with
scale/offset buffer rather than viewport/scissor
2015-08-12 00:28:08 +02:00
vlj 09ccd7e436 d3d12: Fix crash with W16Z16Y16X16 texture format 2015-08-12 00:28:08 +02:00
vlj 2310ba137f d3d12: Fix crash with rescaling pass 2015-08-12 00:28:07 +02:00
vlj 9fdb6f0dad d3d12: Fix color of scaling output 2015-08-12 00:28:07 +02:00
vlj 281f8be76f d3d12: Enable scaling pass
The output is black and white, need to find out why.
2015-08-12 00:28:06 +02:00
vlj 224bae383c d3d12: Add some code that will scale final render target 2015-08-12 00:28:06 +02:00
vlj f55bb7165c d3d12: Load dll at runtime 2015-08-12 00:28:05 +02:00
vlj 006d989304 d3d12: Uncomment code that shouldn't have been commented out 2015-08-12 00:28:05 +02:00
raven02 00c975b469 d3d12: use gcm buffer width and height for copy texture region
It fixes crash in Voodoo Chronicles and Terraria
2015-08-12 00:28:04 +02:00
vlj e36c4f75e0 d3d12; Fix swizzle for B8 texture format
Fix menu in guided fate paradox for WARP
2015-08-12 00:28:04 +02:00
vlj 41577b5018 d3d12: Fix some warnings 2015-08-12 00:28:03 +02:00
vlj 17e169e652 d3d12: Fix crash at exit + tweak heap sizes to make dice test working 2015-08-12 00:28:03 +02:00
vlj 75a52219e0 d3d12: Rewind constant buffers get value 2015-08-12 00:28:03 +02:00
vlj c53828787a d3d12: Emit an error if waiting for too long for semaphore 2015-08-12 00:28:02 +02:00
vlj d2c13bc4c1 d3d12: Use a commited resource for constant buffer
Since we rarely use more than 1k of constant data we waste space due to
alignment requirement with heap so use a commited resource instead.
2015-08-12 00:28:02 +02:00
vlj 2f54482592 d3d12: Make depth test optionnal and use (0,0,0,0) when texture unit is disabled 2015-08-12 00:28:01 +02:00
raven02 482a371bb0 d3d12: set max_depth_value based on depth format 2015-08-12 00:26:54 +02:00
raven02 da923f8a3d d3d12: declare bufferSize for allocation 2015-08-12 00:26:53 +02:00
raven02 cf27d4c2ca d3d12: Fix pitch in COMPRESSED_DXT23/DXT45
Make pm_zcull.ppu.elf renders correctly.
2015-08-12 00:26:53 +02:00
vlj 24c23dc5f6 d3d12: Use dummy texture to fill empty texture slot
vertex attribute test has a shader that reads a texture, but rpcs3
doesn't provide the texture ; this makes WARP crash.
2015-08-12 00:26:52 +02:00
vlj cfde5698c7 d3d12: Fix swizzling for D8R8G8B8
Fix human.ppu.elf demo
2015-08-12 00:26:52 +02:00
vlj 70b537c8c2 d3d12: Implement discard
Should make alpha test kill test almost working as it should.
2015-08-12 00:26:51 +02:00
vlj dc1a57e71c d3d12: Fix color masking
Wasn't using the correct PSO state variable
2015-08-12 00:26:51 +02:00
raven02 724159c8b4 d3d12: warning log fix 2015-08-12 00:26:50 +02:00
raven02 a86e44deb4 RSX: Fix NV3089
Make convert_swizzle.elf works
2015-08-12 00:26:50 +02:00
vlj 93e20c0853 d3d12: Fix index count 2015-08-12 00:26:49 +02:00
vlj 8b631d486c d3d12: Fix build 2015-08-12 00:26:49 +02:00
raven02 48e6db3a2f d3d12: use CELL_GCM suffix for filter 2015-08-12 00:26:48 +02:00
vlj 224503d2dc d3d12: Move program related code out of D3D12GSRender and some get* format functions 2015-08-12 00:26:48 +02:00
vlj ad55cced13 d3d12: Fix vertex buffer sometimes incomplete. 2015-08-12 00:26:47 +02:00
vlj e55949dbfa d3d12: Use h0 in fragment decompiler when there is no r0
Partially fix alpha kill test.
2015-08-12 00:26:47 +02:00
vlj 8669dac5e7 d3d12: Implement sampler filters properly
Fix menu in the guided fate paradox
2015-08-12 00:26:46 +02:00
vlj 2d0dbf4949 d3d12: Async semaphore leads to deadlock, make it sync, but do resource garbage collection async 2015-08-12 00:26:46 +02:00
vlj 10b92d45d1 d3d12: Use RSXThread width height for viewport
Thanks to raven02 for finding this, it fixes render to texture test
2015-08-12 00:26:45 +02:00
vlj 4966ab565a d3d12; Clean resource sooner and fix crash with VS debugger. 2015-08-12 00:26:45 +02:00
raven02 1837f40ed4 d3d12: Factorize common use functions among frag and vertex decompiler 2015-08-12 00:26:44 +02:00
vlj e38bf8d51f d3d12: Fix rgba16float endianness for textures 2015-08-12 00:26:44 +02:00
vlj ff9f348ec2 d3d12: Use finer pitch when downloading rtt 2015-08-12 00:26:43 +02:00
vlj c2d3c857b6 d3d12: Handle w16Z16Y16X16 rtt format
It doesnt fix completly render_to_texture test but it helps.
2015-08-12 00:26:43 +02:00
vlj b8ba902657 d3d12: Fix rtt size (and crash in render_to_texture test) 2015-08-12 00:26:42 +02:00
vlj 33daa81e6f d3d12: Fix some src pitch 2015-08-12 00:26:42 +02:00
raven02 68d3f6f536 d3d12: minor cleanup 2015-08-12 00:26:41 +02:00
raven02 4ef66e6901 d3d12: Add blend for MRT 2015-08-12 00:26:41 +02:00
raven02 e72d098ea1 d3d12: use CELL_GCM suffix 2015-08-12 00:26:40 +02:00
vlj 8474cd8064 d3d12: Fix pitch for compressed textures 2015-08-12 00:26:40 +02:00
vlj 27e56b6199 d3d12: Do not set mask if not requested 2015-08-12 00:26:39 +02:00
vlj bdeb08e045 d3d12: Add color masking 2015-08-12 00:26:39 +02:00
vlj acb8f82f84 d3d12: Add front/back face culling setting 2015-08-12 00:26:38 +02:00
vlj b465992178 d3d12: Fix stencil op
Thanks to raven02 for noticing them !
2015-08-12 00:26:38 +02:00
vlj c73d19161b d3d12: Disable depth/color buffer write if not requested
Doesnt really increase performance...
2015-08-12 00:26:37 +02:00
vlj d564c25241 d3d12: Use real depth function too 2015-08-12 00:26:37 +02:00
vlj b2ad49bac8 d3d12: Check blend and depth stencil state when evaluating pso equality 2015-08-12 00:26:36 +02:00
vlj 5f46b32616 d3d12: Use instancing to pass constant vertex attribute
Maybe a bit hackish but it works.
2015-08-12 00:26:36 +02:00
vlj 64a555caca d3d12: Write data to single vertex attrib
stencil reflect has some color but it's still broken.
2015-08-12 00:26:35 +02:00
vlj 02f15810ee d3d12: Implement stencil states
Unfortunatly it doesnt solve stencil reflect test atm
2015-08-12 00:26:35 +02:00
vlj e3b73f9ea0 d3d12: Fix vertex error in stencil reflect 2015-08-12 00:26:34 +02:00
vlj 381260a493 d3d12: Check IALayout equality in pipeline state 2015-08-12 00:26:34 +02:00
vlj e4435a9308 DPH disappeared when merging, need to merge commit with the initial one 2015-08-12 00:26:34 +02:00
vlj 22e67db0f2 d3d12: Add some others texture format 2015-08-12 00:26:33 +02:00
vlj c3e19f34fa gl: sampler2d are constants 2015-08-12 00:26:33 +02:00
vlj ca90c05b0a gl : refix 2015-08-12 00:26:32 +02:00
vlj 744b56b12d gl: Fix texture unswizzling
Fix multi texture test
2015-08-12 00:26:32 +02:00
vlj 694d4e01a0 d3d12: Use openMP for vertex buffer mapping and factorize function 2015-08-12 00:26:31 +02:00
vlj 459ab17d74 d3d12: Use openMP to upload texture
Does not really increase performance so far
2015-08-12 00:26:31 +02:00
vlj cfe058dc82 d3d12: Factorize texture upload code 2015-08-12 00:26:30 +02:00
raven02 ce857ab1da RSX: DP2A for fragment decompiler 2015-08-12 00:26:30 +02:00
vlj caf863be4d d3d12: Fix crash at exit 2015-08-12 00:26:29 +02:00
vlj 5882f9defb d3d12: Do not use texture pitch but compute it ourself
Fix sonic cd splash screen
2015-08-12 00:26:29 +02:00
vlj f31282623a d3d12: Fix texture unswizzling 2015-08-12 00:26:28 +02:00
raven02 25c09c5088 d3d12: Add Blend Op 2015-08-12 00:26:28 +02:00
vlj a2b8d3a885 d3d12: Fix memleak 2015-08-12 00:26:27 +02:00
raven02 76d52b4bb3 d3d12: Implement A4R4G4B4 texture format with byte swapped
Make the guided fate paradox works
2015-08-12 00:26:27 +02:00
vlj 593b9a494d d3d12: Double texture storage size 2015-08-12 00:26:27 +02:00
vlj d886fd55d3 d3d12: Fix for size calculation 2015-08-12 00:26:26 +02:00
vlj a751a06d01 d3d12: Try not to overcommit texture memory 2015-08-12 00:26:26 +02:00
vlj a5fb8c95f4 d3d12: Fix interframe sync 2015-08-12 00:26:25 +02:00
vlj ac352cd083 d3d12: Use custom loadvertex like call 2015-08-12 00:26:25 +02:00
vlj b63c77ca7d d3d12: Swap current/non current right after present has been called 2015-08-12 00:26:24 +02:00
vlj 9e2dfcaba3 d3d12: fix memleak 2015-08-12 00:26:24 +02:00
vlj 7db3599648 d3d12: Ping pong between data to avoid gpu stall as much as possible 2015-08-12 00:26:23 +02:00
vlj 461bf12c4f d3d12: Cleaning 2015-08-12 00:26:23 +02:00
vlj 51d287d9b0 d3d12: Take alignment into account in streamBuffer
And use it for texture upload
2015-08-12 00:26:22 +02:00
vlj 878a116c4a Rebasing didn't went quite right...Fixes 2015-08-12 00:26:22 +02:00
vlj 3a6abe1656 d3d12: fix crash when inferring texture size 2015-08-12 00:26:21 +02:00
vlj 9748007cd3 d3d12: Use ring buffer for textures too
It looks like the texture size calculation is wrong, it can lead to
crash
2015-08-12 00:26:21 +02:00
vlj 6bb5dd2125 d3d12: Use ring like buffer for vertex index data 2015-08-12 00:26:20 +02:00
vlj f721f2cbaa d3d12: Use ring like heap for vertex and fragment constants too 2015-08-12 00:26:20 +02:00
vlj 59aca7566e d3d12: Some fixes to avoid running out of constant spaces 2015-08-12 00:26:19 +02:00
vlj e0cff6b0b4 d3d12: Start using a ring-like buffer for constants 2015-08-12 00:26:19 +02:00
vlj c1abf80b40 d3d12: Fix r5g6b5 only using half texture 2015-08-12 00:26:19 +02:00
vlj 5ca02a5053 d3d12: Fix R5G6B5 being byte swapped 2015-08-12 00:26:18 +02:00
vlj d8d72c4327 d3d12: Implement R5G6B5 texture format
Make sonic works, but with wrong color
2015-08-12 00:26:18 +02:00
vlj 25b10c5e3e d3d12: Consume less descriptor slot if not required 2015-08-12 00:26:17 +02:00
vlj 6d9e542cde d3d12: Ignore files in bin/ 2015-08-12 00:26:17 +02:00
vlj 043adab2ce d3d12: Fix fragment constant filling
The command buffer does not necessarily set them in order...
2015-08-12 00:26:16 +02:00
vlj 1c803e725b d3d12: Do not overwrite hlsl file 2015-08-12 00:26:16 +02:00
vlj 0b435afd1d d3d12: Fix some texture format swizzles. 2015-08-12 00:26:15 +02:00
vlj 3aafb60629 d3d12: Fix offset in scale offset
Depth Buffer should be correctly positionned in depth_read test
2015-08-12 00:26:15 +02:00
raven02 0be60890e7 d3d12: minor fixes 2015-08-12 00:26:14 +02:00
vlj fdf24545af d3d12: Raise texture upload heap to make multi texture work
The result is not in line with PS3 real output though
2015-08-12 00:26:14 +02:00
vlj e454f59f97 d3d12: Fix depth buffer not being transitionned to generic read 2015-08-12 00:26:13 +02:00
vlj aac93b9063 d3d12: Clean code + fix warnings 2015-08-12 00:26:13 +02:00
vlj 001dc7cf57 d3d12: Do not copy fbo, just use new one 2015-08-12 00:26:12 +02:00
vlj 5a57564b0c d3d12: Forgot a hunk 2015-08-12 00:26:12 +02:00
vlj 01ac9f02d2 d3d12: Use placed resource for depth conversion result 2015-08-12 00:26:11 +02:00
vlj 2636fb457e d3d12: Use placed resource for mrt readback
Should be slightly faster (no allocation)
2015-08-12 00:26:11 +02:00
raven02 28c125618a d3d12 : add few more compressed format 2015-08-12 00:26:10 +02:00
raven02 046e522851 d3d12: Add DXT23 & DXT45 2015-08-12 00:26:10 +02:00
vlj 6877e5e3ba d3d12: Start using heap for depth buffer readback 2015-08-12 00:26:09 +02:00
vlj 90fb4396fe d3d12; Add a texture cache 2015-08-12 00:26:08 +02:00
raven02 d8f76f5aee d3d12: Add LogicOp 2015-08-12 00:26:08 +02:00
vlj f382ba0319 d3d12: Enable multiple mrt read 2015-08-12 00:26:07 +02:00
vlj 8e9cdc5fea d3d12: Fix memleak 2015-08-12 00:26:07 +02:00
vlj da328c078a d3d12: Fix cube_mrt.ppu.elf
It should display a (single) blue cube
2015-08-12 00:26:06 +02:00
vlj cef58da879 d3d12: Fix non mrt samples 2015-08-12 00:26:06 +02:00
vlj 595392428d d3d12: First attempt at read color buffer using dma address change
If address of m_context_dma_color_a change, copy the RTT in a texture
that can be used for drawing.
Currently a bit broken, the rtt is used for others textures too...
2015-08-12 00:26:05 +02:00
vlj 3e11598941 d3d12: Fix increment size for sampler and row pitch for swizzled textures 2015-08-12 00:26:05 +02:00
vlj 262d3d0755 d3d12: Fix copyToCellRamAndRelease copy size 2015-08-12 00:26:04 +02:00
vlj 906146d8f6 d3d12: Lower memory storage 2015-08-12 00:26:04 +02:00
vlj f12cb9b519 d3d12: Send RTTs to cell memory when a semaphore is released 2015-08-12 00:26:03 +02:00
vlj 53ac34db35 d3d12: Fix a warning 2015-08-12 00:26:03 +02:00
vlj 74dab18174 d3d12: Use graphic queue to download depth buffer
For now go to the easiest solution and improve later
2015-08-12 00:26:02 +02:00
vlj af69803ee0 d3d12: Factorize resource state change 2015-08-12 00:26:01 +02:00
vlj 3a029efbd3 d3d12: Add D8R8G8B8 format to texture
Should fix human.ppu.elf
2015-08-12 00:26:01 +02:00
vlj 68a62f897d d3d12: Fix texture loading for fw_fog.ppu.elf
Color are wrong though
2015-08-12 00:26:00 +02:00
vlj 7b571aab70 d3d12: Start supporting dxtc1 format 2015-08-12 00:26:00 +02:00
vlj b5a7637b49 d3d12: Implement texture swizzling and untiling 2015-08-12 00:25:59 +02:00
vlj 52a68875fc d3d12: Add some other texture case + factorise resource desc code 2015-08-12 00:25:59 +02:00
vlj 88d05a08cf d3d12: Use a dummy texture to fill unused slots 2015-08-12 00:25:58 +02:00
vlj 79420e52a2 d3d12: Disable depth test if not required 2015-08-12 00:25:58 +02:00
vlj f77e2acfbe d3d12: Start supporting mrt 2015-08-12 00:25:57 +02:00
vlj c167a1228e d3d12: Revert back to a signel resource storage
Using two of them doesnt increase perf atm but eats twice the space
2015-08-12 00:25:57 +02:00
vlj b81fd13232 d3d12: Fix double release 2015-08-12 00:25:56 +02:00
vlj 7a431e85f6 d3d12: Use copy queue to transfer z buffer 2015-08-12 00:25:56 +02:00
vlj f618247937 d3d12: Fix format of depth texture 2015-08-12 00:25:55 +02:00
vlj b50ab149d6 d3d12: Convert depth buffer on gpu 2015-08-12 00:25:55 +02:00
vlj 56853de0ef d3d12: Do not bind depth stencil buffer if depth test is disabled 2015-08-12 00:25:54 +02:00
vlj 1228787355 d3d12: DMA depth buffer when semaphore write is asked. 2015-08-12 00:25:54 +02:00
vlj b72d435ce8 d3d12: fix stencil reflect again 2015-08-12 00:25:53 +02:00
vlj bc25f4d6ad d3d12: Make waiting thread sleeping 2015-08-12 00:25:53 +02:00
vlj 9c193e0282 d3d12: Implement semaphore 2015-08-12 00:25:52 +02:00
vlj c5a1f8930f d3d12: Another fix for vertex buffer not big enough buffer 2015-08-12 00:25:52 +02:00
vlj 233450a7ca d3d12: Fix stencil reflect test 2015-08-12 00:25:51 +02:00
vlj 8bd678afc0 d3d12: Fix vertex buffer reconstruction with mismatching stride 2015-08-12 00:25:51 +02:00
vlj 8ad1bc1970 d3d12: Fix powerOf2Align 2015-08-12 00:25:50 +02:00
vlj 10cc2c080c d3d12: Try to reconstruct packed vertex buffers 2015-08-12 00:25:50 +02:00
vlj 2709a3e49a d3d12: Use streaming buffer for index buffer 2015-08-12 00:25:49 +02:00
vlj 90e0a89e9b d3d12: Try to use stream function that doesn't pollute cache 2015-08-12 00:25:49 +02:00
vlj 8b8385b0a4 d3d12: Reduce heap size 2015-08-12 00:25:48 +02:00
vlj a6770813b1 d3d12: Fix var not initialized 2015-08-12 00:25:48 +02:00
vlj e9fab57a0e d3d12: Fix indexed quad draw
We were not positionning the index buffer correctly in the heap.
2015-08-12 00:25:47 +02:00
vlj 82545a7b56 d3d12: Clean indexed draw buffer gen code 2015-08-12 00:25:47 +02:00
vlj 22f413be3a d3d12; Live buffer related code and factorise resource_desc for buffers 2015-08-12 00:25:46 +02:00
raven02 9814a92a25 Tex: define more sampler parameters 2015-08-12 00:25:45 +02:00
vlj cd951af664 d3d12: Fix to run fw_vertex_attribute.ppu.elf
A little dirty, need to be improved.
2015-08-12 00:25:45 +02:00
vlj 2df1220144 d3d12: Use GL enum for primitive type 2015-08-12 00:25:44 +02:00
vlj b8073b4e75 d3d12: Try to fix forced quad indexed buffer 2015-08-12 00:25:44 +02:00
vlj 232c97cc82 d3d12: Add support for indexed draw 2015-08-12 00:25:43 +02:00
vlj 5ce0261265 d3d12: Release index buffer and upload command allocator 2015-08-12 00:25:43 +02:00
vlj bd68d382bd d3d12: Use __mm_stream_si128 to send texture/constants data 2015-08-12 00:25:42 +02:00
vlj 12fc6e6145 d3d12: Use separate vertex constant buffer for good 2015-08-12 00:25:42 +02:00
vlj 6d61e36f5d d3d12: Fix for rsx_fp_dynamic_test2
The compare function shouldn't be swizzled.
2015-08-12 00:25:41 +02:00
vlj 824b9aa628 d3d12: make depth read optionnal 2015-08-12 00:25:41 +02:00
vlj 487fd4dc2a d3d12: Start implementing depth to u8 conversion shader
Not used atm
2015-08-12 00:25:40 +02:00
vlj e88d45b1bf d3d12: Fix for Intel HD4600 2015-08-12 00:25:40 +02:00
vlj cb14697aa0 d3d12: Honor adaptater selection + debug output layer 2015-08-12 00:25:39 +02:00
vlj 6e8b94a7e1 Add config option for d3d debug layer and adaptater 2015-08-12 00:25:39 +02:00
vlj 18e3e74070 d3d12: Fix depth read size 2015-08-12 00:25:38 +02:00
vlj c08ac779f4 d3d12: src and dst were inverted, fix it
now depth buffer is properly read, but it is too little
2015-08-12 00:25:38 +02:00
vlj 2031944792 d3d12: Do transition when reading depth buffer 2015-08-12 00:25:37 +02:00
vlj fafcce6d5f d3d12: Implement write depth buffer callback 2015-08-12 00:25:37 +02:00
vlj 986a39fcfb d3d12: clean upload command lists as well 2015-08-12 00:25:36 +02:00
vlj 75202ac55b d3d12: properly clean textures 2015-08-12 00:25:36 +02:00
vlj 1076727c75 d3d12: Use a heap for scale offset and fragment buffer too 2015-08-12 00:25:35 +02:00
vlj 740354d2c9 d3d12: Fix depth format mismatch 2015-08-12 00:25:35 +02:00
vlj e6146e4ecb d3d12: Fix single channel texture
Should now display font properly
2015-08-12 00:25:34 +02:00
vlj 4a89432d39 d3d12: Implement blend decoding 2015-08-12 00:25:34 +02:00
vlj 312ff7e8f5 RSX: Fix for default value of temp reg 2015-08-12 00:25:33 +02:00
vlj 727f54dd32 d3d12: Record command while gpu is busy rendering previous frame + cleaning fixes 2015-08-12 00:25:33 +02:00
vlj 71b9caf65a d3d12: Duplicate all resource to do real double buffering 2015-08-12 00:25:32 +02:00
vlj 5872144165 d3d12: Move texture code to another file + add the copy command as soon as possible 2015-08-12 00:25:32 +02:00
vlj abbd244376 d3d12: Fix fractal not animated in dynamic test 2 2015-08-12 00:25:31 +02:00
raven02 1471afcfe6 D3DGS naming fix 2015-08-12 00:25:31 +02:00
vlj b5f91a6e75 d3d12: Fix for vertex decompiler 2015-08-12 00:25:30 +02:00
raven02 b2577833f9 d3d12: DP2A 2015-08-12 00:25:30 +02:00
vlj 31ea9068de d3d12: Use true default value for vertex decompiler 2015-08-12 00:25:29 +02:00
raven02 9fc50fcce5 d3d12: Fix for vertex decompiler 2015-08-12 00:25:29 +02:00
vlj a9425fcf2a d3d12: Pass first clear value as clear optimised value to RTTs 2015-08-12 00:23:52 +02:00
vlj eb1b8b748a d3d12: Fix for fragment decompiler 2015-08-12 00:23:51 +02:00
vlj f2985f12c1 d3d12: Use heap for vertex buffer
It should consume less memory.
2015-08-12 00:23:51 +02:00
Zangetsu38 2aedd0633f Fix crash after launch game one mode release.
Fix Temporary.
2015-08-12 00:23:50 +02:00
vlj 7b25483b67 d3d12: depth read doesnt crash anymore 2015-08-12 00:23:50 +02:00
vlj 3f31976080 d3d12: Update 2015-08-12 00:23:49 +02:00
vlj 422a9f1fdc d3d12: Use VertexProgramDecompiler 2015-08-12 00:23:49 +02:00
vlj d2beafca4d d3d12: Update 2015-08-12 00:23:48 +02:00
vlj 5681781ab0 GL: Forgot hunk 2015-08-12 00:23:48 +02:00
vlj 05d6c8df60 d3d12: Update 2015-08-12 00:23:47 +02:00
vlj 07449abfc6 d3d12: Add more functions 2015-08-12 00:23:47 +02:00
vlj 72c84cb8aa d3d12: Add some more functions 2015-08-12 00:23:46 +02:00
vlj bf8a48e3bd d3d12: Some work to decompiler 2015-08-12 00:23:46 +02:00
vlj c465b6699a d3d12: Use the fragment decompile class 2015-08-12 00:23:45 +02:00
vlj edb9a97c17 d3d12: Some fix to quad emulation mode 2015-08-12 00:23:45 +02:00
vlj 445c7dd884 d3d12: Use a default value of 1 for .w channel of output in Vertex Program 2015-08-12 00:23:44 +02:00
vlj 2985f2d6e3 d3d12: Use naive vertex buffer offset 2015-08-12 00:23:44 +02:00
vlj a279aebf31 d3d12: Use an indexed draw for unindexed quad 2015-08-12 00:23:43 +02:00
vlj cbd7d3d614 d3d12: Fix depth being offseted by .5 + add depth buffer support 2015-08-12 00:23:43 +02:00
vlj 5640e81eb5 d3d12: Forgot hunk 2015-08-12 00:23:42 +02:00
vlj 4114df50c2 d3d12: Use correct VS debug macro + cleaning 2015-08-12 00:23:41 +02:00
vlj 1f9c8f757a d3d12: Add a swizzle to texture
Looks like shader4componentmapping doesnt work, maybe a bug.
2015-08-12 00:23:41 +02:00
vlj 3a75e6a357 d3d12: Some fixe to textures 2015-08-12 00:23:40 +02:00
vlj 782a11b47f d3d12: Add dump hlsl file to gitignore list 2015-08-12 00:23:40 +02:00
vlj 39039514d1 d3d12: Start implementing texture upload and usage 2015-08-12 00:23:39 +02:00
vlj 263294d263 d3d12: Some fixes to VP/FP decompiler 2015-08-12 00:23:39 +02:00
vlj 43f4ed49b4 d3d12: Some fix for VPDecompiler 2015-08-12 00:23:38 +02:00
vlj 16e8d6349e d3d12: Make compilation more robust 2015-08-12 00:23:38 +02:00
vlj f1ab5abe2e d3d12: Cleaning 2015-08-12 00:23:37 +02:00
vlj c3e162b442 d3d12: Read constants directly from fp 2015-08-12 00:23:37 +02:00
vlj 7b6ad026c6 d3d12: Add fragment constant offset cache 2015-08-12 00:23:36 +02:00
vlj 9d1993cdee d3d12: Fix for d3d12 pipeline cache 2015-08-12 00:23:36 +02:00
vlj ba66992ee3 d3d12: Use template class for caching 2015-08-12 00:23:35 +02:00
vlj a58974eac8 d3d12: Fix reversed output 2015-08-12 00:23:34 +02:00
vlj 2ac3c66c80 d3d12: Fix hash/compare/getSize for fragment program
It didn't properly take constants into account
2015-08-12 00:23:34 +02:00
vlj d1ebc47867 d3d12: Use actual hw in release mode + honor vsync option 2015-08-12 00:23:33 +02:00
vlj 5cb0fe63b8 d3d12: Avoid recompiling fragment shader if constants change 2015-08-12 00:23:33 +02:00
vlj 789ed767e2 d3d12: Move Constant inside main 2015-08-12 00:23:32 +02:00
vlj f446501339 d3d12: Try to fix fragment shaders first test 2015-08-12 00:23:32 +02:00
vlj 98a924874f d3d12: Inline constants
It's slow
2015-08-12 00:23:31 +02:00
vlj b6cc7af8cd d3d12: Support for fragment constants 2015-08-12 00:23:31 +02:00
vlj 88aea70100 d3d12: some fix for fragment program decompiler 2015-08-12 00:23:30 +02:00
vlj c96bc6231c d3d12: Print fps in windows title 2015-08-12 00:23:30 +02:00
vlj a276391e87 d3d12: Fix linkage between VS and PS 2015-08-12 00:23:29 +02:00
vlj ee3e5cfe1f d3d12: Support for fragment constant buffer 2015-08-12 00:23:29 +02:00
vlj 9cb87552b8 d3d12: Fragment program decompiler can decompile basic shader 2015-08-12 00:23:28 +02:00
vlj bb643070bd d3d12: Start working on fragment decompiler 2015-08-12 00:23:28 +02:00
vlj 5da166b26b d3d12: Move/clean code 2015-08-12 00:23:27 +02:00
vlj caab6cbc60 d3d12: Some cleaning 2015-08-12 00:23:27 +02:00
vlj 16f40fb69c d3d12: Fix some warnings 2015-08-12 00:23:26 +02:00
vlj 3960555e45 d3d12: Use the compiler vertex program
It works with the primitive sample.
2015-08-12 00:23:26 +02:00
vlj 96c4e87bf5 d3d12: Some extra code again 2015-08-12 00:23:25 +02:00
vlj 5a1b756c14 d3d12: Dump program parameters 2015-08-12 00:23:25 +02:00
vlj 3853dffce2 d3d12: Start working on Vertex program decompilation 2015-08-12 00:23:24 +02:00
vlj 87d51665dc d3d12: Fix some warning 2015-08-12 00:23:24 +02:00
vlj d93e95b614 d3d12: Add support for various primitives 2015-08-12 00:23:23 +02:00
vlj 75219be066 d3d12: cache PSO State too 2015-08-12 00:23:23 +02:00
vlj da5b047c58 d3d12: Change some variable name to better reflect their behavior 2015-08-12 00:23:22 +02:00
vlj b016fbc9e4 d3d12: Add missing hunk + properly clean our D3D allocations 2015-08-12 00:23:22 +02:00
vlj 07ea311b3a d3d12: Separate scaleOffset and classic constants 2015-08-12 00:23:21 +02:00
vlj 40e19e0c95 d3d12: Something strange is happening to depth... 2015-08-12 00:23:21 +02:00
vlj 411265d83a d3d12: Use constant buffer content 2015-08-12 00:23:20 +02:00
vlj d627f9cb83 d3d12: Stop emulation if program compilation fails 2015-08-12 00:23:20 +02:00
vlj 1c2849a736 d3d12: Remove useless class member 2015-08-12 00:23:19 +02:00
vlj 28b964aeb0 d3d12: Fix Input Layout 2015-08-12 00:23:19 +02:00
vlj 65fbc57221 d3d12: Enable constant buffer support 2015-08-12 00:23:18 +02:00
vlj 6f487f910c d3d12: Fix build with DX12_SUPPORT not def 2015-08-12 00:23:18 +02:00
vlj 646c908a93 d3d12: Fix some warnings 2015-08-12 00:23:17 +02:00
vlj 9abaf80099 d3d12: Vertex element are not interleaved. 2015-08-12 00:23:17 +02:00
vlj 8ec9f84c1b d3d12; Factorise IALayout generation code 2015-08-12 00:23:16 +02:00
vlj 14e9323154 d3d12: make some shape appears 2015-08-12 00:23:16 +02:00
vlj fedd35989c d3d12: Start writing vertex/index buffer support 2015-08-12 00:23:15 +02:00
vlj 722e6b8ac5 d3d12: Fix some warning and start adding IALayout support 2015-08-12 00:23:15 +02:00
vlj d2889786a2 d3d12: Some cleaning 2015-08-12 00:23:14 +02:00
vlj c6e2f070ee d3d12: Some fix for creation of PSO 2015-08-12 00:23:14 +02:00
vlj 34bf82d81c d3d12: Add sensible default to PSO 2015-08-12 00:23:14 +02:00
vlj 2734c98716 d3d12: PSO related reorganisation 2015-08-12 00:23:13 +02:00
vlj e58292bb11 d3d12: PSO caching works 2015-08-12 00:23:13 +02:00
vlj 0ebc221011 d3d12: VS Caching apparently fixed 2015-08-12 00:23:12 +02:00
vlj c29616b341 d3d12: Fragment Program caching works
But not VP...
2015-08-12 00:23:12 +02:00
vlj 3f24da47a0 d3d12: Update vs project files 2015-08-12 00:23:11 +02:00
vlj d5b4a31c37 d3d12: Start caching shaders 2015-08-12 00:23:11 +02:00
vlj 728736ccdd d3d12: Add fbo support and blit it before present 2015-08-12 00:23:10 +02:00
vlj 2f5a6eb993 d3d12: Fix gfxcommandlist leak 2015-08-12 00:23:10 +02:00
vlj b1c3e09155 d3d12: Clean backbuffers and descriptors 2015-08-12 00:23:09 +02:00
vlj 7773631401 d3d12: backbuffer are properly cleared 2015-08-12 00:23:09 +02:00
vlj 5e7531b9bf d3d12: Use ifdef to guard code 2015-08-12 00:23:08 +02:00
vlj 4f708ab9ee d3d12: Enable buffer flip 2015-08-12 00:23:08 +02:00
vlj 0b5816d6d6 d3d12: Create window 2015-08-12 00:23:07 +02:00
vlj 976d707596 d3d12: Start implementation 2015-08-12 00:23:07 +02:00
Raul Tambre d10c44ed3a Merge pull request #1175 from danilaml/appveyor-cmake
Make it possible to compile rpcs3 on win via cmake and make win builds available for download on appveyor
2015-08-11 20:44:22 +03:00
Vincent Lejeune e459d01927 PPU/LLVM: Add debug tool for LLVM recompiler 2015-08-11 18:10:32 +02:00
Raul Tambre 1e9c266457 Merge pull request #1176 from vlj/llvm-fix
PPU/LLVM: Fix recursive call crashing llvm backend
2015-08-11 08:24:07 +03:00
Vincent Lejeune 6e8a5f3a5f PPU/LLVM: Avoid recompiler thread spinning forever 2015-08-10 20:32:22 +02:00
Vincent Lejeune 53769ae1bd PPU/LLVM: Fix recursive call crashing llvm backend 2015-08-10 19:59:30 +02:00
Danila Malyutin 6e84db45f2 Enable artifacts
now appveyor builds can be downloaded for testing
2015-08-10 01:59:05 +03:00
Danila Malyutin 1af7e32c93 Fix LNK4098 warning 2015-08-10 01:59:04 +03:00
Danila Malyutin 6e70258d82 Enable appveyor logger 2015-08-10 01:59:03 +03:00
Danila Malyutin 570e41f8e0 Small fixes and improvments 2015-08-10 01:59:03 +03:00
Raul Tambre fd5fbab115 Merge pull request #1171 from vlj/llvm-fix
Fix Sonic CD music with LLVM backend
2015-08-08 18:35:29 +03:00
Danila Malyutin e06b33162d Use precompiled wxWidgets package
have to use gdrive until official 3.1 release
2015-08-08 04:43:08 +03:00
Danila Malyutin ddff65d288 Make it possible to build rpcs3 via cmake/vs2015 combo. 2015-08-08 04:43:08 +03:00
Danila Malyutin e91589cab5 clean up 2015-08-08 04:43:07 +03:00
Danila Malyutin 36648805b8 Update OpenAL 2015-08-08 04:43:06 +03:00
Danila Malyutin fafdc213ed Fix OpenAL and and wxWidgets finding on cmake/win 2015-08-07 18:30:08 +03:00
vlj cc83a9df3b Merge pull request #44 from danilaml/patch-1
Completely fix MTOCRF
2015-08-06 23:42:33 +02:00
Raul Tambre 8fd52666b7 Minor fixes in cellNetCtl and cellSysutil
Also fixed a couple minor bugs relating to cache.
2015-08-06 15:24:11 +03:00
Raul Tambre 48def8fa5b Minor sceNpManagerGetStatus improvements
Might allow a couple games to go in-game. Also a couple other minor fixes.
2015-08-06 15:24:10 +03:00
Raul Tambre 480996b140 Various stubbing 2015-08-06 15:24:10 +03:00
Raul Tambre 1012a3e312 Minor cellSysutil improvements, cellNetCtl fixes 2015-08-06 15:24:09 +03:00
Raul Tambre c69dfff16e cellNetCtlGetInfo improvements and fixes 2015-08-06 15:24:09 +03:00
Raul Tambre c12af57bdd Implement _sys_printf and sys_prx improvements 2015-08-06 15:24:08 +03:00
Raul Tambre 91f67b683b sceNpMatching2 stubs and some refactoring 2015-08-06 15:24:04 +03:00
Danila Malyutin a3c22eb836 Add MTOCRF tests 2015-08-06 03:43:49 +03:00
Danila Malyutin 98a3cbdf84 Fix MTOCRF instruction
to be the same as interpreter.
2015-08-06 03:43:48 +03:00
Vincent Lejeune 09347ba92a PPU/LLVM: Fix MTOCRF instruction 2015-08-05 17:27:59 +02:00
Vincent Lejeune fc3314ea96 PPU/LLVM: Print PPC block before translated LLVM bytecode 2015-08-05 17:27:59 +02:00
Raul Tambre c0f1913e44 Merge pull request #1170 from danilaml/appveyor
Add AppVeyor support.
2015-08-05 13:12:05 +03:00
Danila Malyutin f35a2c8a04 Be a little more consistent with travis
and disable tests (we don't have any). Also cache didn't help much so disable it for now.
2015-08-05 03:38:26 +03:00
Danila Malyutin 0f28879f8d Try to use cache to speed up build 2015-08-04 22:29:03 +03:00
Danila Malyutin 17a4222c31 Add appveyor badge 2015-08-04 18:52:16 +03:00
Danila Malyutin 9a8fa12718 Add appveyor.yml 2015-08-04 18:47:02 +03:00
Hykem 0541371a0e Merge pull request #1161 from Nekotekina/master
Various changes
2015-08-02 16:54:27 +01:00
Hykem 7aa86c50c6 Merge pull request #1167 from vlj/llvm36
PPU/LLVM: Try to fix crash (again) when cleaning modules
2015-08-02 16:54:12 +01:00
Hykem 2a096effa7 Merge pull request #1168 from danilaml/logstd
Log stdout and stderr on windows
2015-08-02 16:53:59 +01:00
vlj 8a6171caa5 Merge pull request #43 from danilaml/patch-2
Fix crashes in tests with unresolved "func" errors
2015-08-02 14:58:17 +02:00
Nekotekina 6da5138683 sysPrxForUser module split 2015-08-02 05:15:49 +03:00
Danila Malyutin eac63f7265 Fix crashes in tests with unresolved "func" errors
and uncomment fixed tests
2015-08-02 04:16:44 +03:00
Danila Malyutin 8f00342612 Log stdout and stderr on win
(Some modules like llvm can repport errors to stderr).
2015-08-02 04:06:59 +03:00
Vincent Lejeune 8f490e8ecd PPU/LLVM: Try to fix crash (again) when cleaning modules 2015-08-01 21:56:44 +02:00
Nekotekina 8fcaac5f1d cellSysutil crap split, cleanup, functions added 2015-08-01 21:49:01 +03:00
Nekotekina 0b1e45b6b5 Some functions added 2015-08-01 14:39:43 +03:00
Nekotekina ce9cd13e42 cellL10n, cellRtc, cellSail cleanup 2015-08-01 14:39:41 +03:00
Nekotekina b391e93466 Modules cleanup 2015-08-01 14:39:39 +03:00
Nekotekina a2646f9871 ModuleManager cleanup 2015-08-01 14:39:37 +03:00
Nekotekina eb5974322f cellStorage.cpp, cellVideo(Export|Upload) modules 2015-08-01 14:39:35 +03:00
Nekotekina 137a38b3c6 cellRec, cellRemotePlay, cellSysconf 2015-08-01 14:39:33 +03:00
Nekotekina 08b6428d5c cellPrint module added 2015-08-01 14:39:31 +03:00
Nekotekina 2eaf5cdc01 cellOskDialog, cellPhoto(Decode|Export|Import) 2015-08-01 14:39:29 +03:00
Nekotekina 7361b4e079 cellImeJp, cellMusic(|Decode|Export), cellSysutilMisc 2015-08-01 14:39:28 +03:00
Nekotekina c364c6a787 cellGameExec, cellAvconfExt, cellSysutilAvc2 modules 2015-08-01 14:39:26 +03:00
Nekotekina 16ad4936ee atomic.h fixed 2015-08-01 14:39:24 +03:00
Nekotekina 776eafa0ce cellDaisy, cellSpudll modules 2015-08-01 14:39:22 +03:00
Nekotekina 9b928ee835 cellPngEnc, cellSailRec, cellUsbPspcm modules 2015-08-01 14:39:20 +03:00
Nekotekina ae73330314 cellJpgEnc, cellKey2char, cellSheap added
ModuleManager cleanup
2015-08-01 14:39:18 +03:00
Nekotekina 5a9896c78c cellHttp, cellHttpUtil, cellSsl, cellBGDL added 2015-08-01 14:39:16 +03:00
Nekotekina 13a5a96117 cellCelp8Enc, cellCelpEnc module added 2015-08-01 14:39:14 +03:00
Nekotekina 06ef95fbea File/dir descriptors numbering experimental impl 2015-08-01 14:39:12 +03:00
Nekotekina badeb29901 Minor fixes 2015-08-01 14:39:10 +03:00
Nekotekina 02c0b69adb cellSaveData module added 2015-08-01 14:39:08 +03:00
Nekotekina 3cc0383db7 cellAtracMulti stub added 2015-08-01 14:39:06 +03:00
Nekotekina a12220d234 Minor formatting fix 2015-08-01 14:39:04 +03:00
Nekotekina 25056f49c4 Added on_error handler for Module 2015-08-01 14:39:03 +03:00
Nekotekina 5815d90eb4 Minor formatting fix, cellRudp fix 2015-08-01 14:39:01 +03:00
Nekotekina 16b7d204d2 decode_x64_reg_op: MOVUPS support 2015-08-01 14:38:59 +03:00
Nekotekina 8e1991c1e1 semaphore_t, RSX fixes
1) GS_LOCK_WAIT_FLUSH semaphore eliminated
2) GS_LOCK_WAIT_FLIP semaphore left unused
3) cellRescSetWaitFlip/cellGcmSetWaitFlip purged: they don't wait for
flip, it's a nonsense, they only generate some RSX command
4) Semaphores rewritten
2015-08-01 14:38:57 +03:00
Nekotekina 71a378a3fb vm::wait_op improved
Now it accepts thread_t and its descendants (but may require adding
friend vm::waiter_lock_t class)
2015-08-01 14:38:55 +03:00
Nekotekina ff1f6d3d4f PPUInterpreter formal fix (affects nothing) 2015-08-01 14:38:53 +03:00
Nekotekina 3d665148ca cellMsgDialog race condition fixed 2015-08-01 14:38:51 +03:00
Nekotekina be2f993155 func_def eliminated 2015-08-01 14:38:49 +03:00
Nekotekina 31774b7262 atomic.h, sys_cond/sys_lwcond improved 2015-08-01 14:38:47 +03:00
Nekotekina ffc11bfda3 b8 type 2015-08-01 14:38:45 +03:00
KaOs1 804ee1183b Install PKGs into custom folder 2015-07-31 22:15:07 +02:00
darkf 2f8a41d810 sys_net: Implement socketselect 2015-07-28 04:43:35 -07:00
Danila Malyutin 6e6170ae1c Try to disable -Wformat-security at all
only fmt triggered it (gcc bug?) and we have clang too so we can live
with that until they fix it.
2015-07-27 03:40:42 +03:00
Danila Malyutin caa6db8617 Replace clang diagnostics with gcc
Clang understands both types of pragmas. Unfortunately it seems that due to bug in gcc (id=53431) this doesn't help
2015-07-27 03:33:59 +03:00
Danila Malyutin 9a37acee3e Fixes for abstract class without virtual destructor 2015-07-27 03:01:43 +03:00
Danila Malyutin e0d5cdd5e1 Fixes for trigraph, unused and tautological warning. 2015-07-26 23:48:59 +03:00
Danila Malyutin 582329ffc6 Fixes for some of clang warnings 2015-07-26 23:24:37 +03:00
Danila Malyutin 5ae6586803 Add missing override specifiers 2015-07-26 18:37:14 +03:00
Danila Malyutin e810eabd32 Clean up and fixes 2015-07-26 18:09:33 +03:00
Danila Malyutin 6849192b39 Tabify 2015-07-26 18:09:31 +03:00
Danila Malyutin 6832910187 Update llvm tests to work with new mcjit recomp
WIP, also found some offending instructions with it.
2015-07-26 18:09:29 +03:00
Raul Tambre a239eaf630 cellSpurs additions and internal struct refactoring
Also updated the README.
2015-07-26 17:04:10 +03:00
Raul Tambre 14897b23b7 Minor formatting 2015-07-26 16:44:55 +03:00
Raul Tambre 6ef4cecf57 Split sceNp into sceNpUtil and register sceNpClans 2015-07-26 16:44:10 +03:00
Raul Tambre 7b0b0440ef cellFont cleanup 2015-07-26 16:43:35 +03:00
Raul Tambre 45dda65ce9 Add NV4097_SET_TEX_COORD_CONTROL arguments
Also added a TODO for _cellSpursLFQueueInitialize.
2015-07-26 16:42:02 +03:00
Raul Tambre 9ecedfdf3c Better cellNetCtlGetInfo logging
Also added back some more logging in cellSaveData, but this time only
printed as warnings.
2015-07-26 16:34:11 +03:00
Zangetsu38 e47493e81b Some small change.
Update README.md for VS 2015.
remove sln buildbot
remove unused appveyor config
remove package.bat, no longer current, now found in bigpet/rpcs3-buildbot-tools
2015-07-23 15:05:23 +02:00
Peter Tissen 4624377942 use official wxWidgets repo 2015-07-23 12:17:58 +02:00
Danila Malyutin 10c5d87f18 Update .gitignore
I think these files are sometimes generated by vs15
2015-07-23 10:46:24 +03:00
Danila Malyutin 831858ce7e Change jit to mcjit in CMakeLists
This fixes compiling on linux
2015-07-23 10:46:12 +03:00
Danila Malyutin af90f03323 Purge llvm compiling from travis (yay!)
Reduces build times greatly.
2015-07-23 10:45:58 +03:00
vlj 26f6b89530 PPU/LLVM: Remove duplicate m_address_to_ordinal map and improve cleaning 2015-07-22 02:11:00 +03:00
vlj 501c14fc65 PPU/LLVM: Clean code
Replace auto with real type, reduce indent and useless variables...
2015-07-22 02:10:58 +03:00
vlj 4adb9a2683 PPU/LLVM: Do not cache block 2015-07-22 02:10:57 +03:00
vlj abd61538ea PPU/LLVM: Rename ExecutionEngine to CPUHybridDecoderRecompiler
In order to avoid naming conflict with llvm own ExecutionEngine
2015-07-22 02:10:55 +03:00
vlj 7592b87a90 PPU/LLVM: Fix build 2015-07-22 02:10:54 +03:00
Nekotekina b3dfa4f5a2 VS2015 2015-07-22 02:10:14 +03:00
Peter Tissen ecf78dbafe add various temporary VS2015 changes (some to fixup temporary bugs, don't merge) 2015-07-22 01:32:21 +03:00
vlj cfa0079c3d PPU/LLVM: Fix branch detection
Thanks Nekotekina for the fix
2015-07-22 01:32:19 +03:00
Vincent Lejeune b7d5d70a92 PPU/LLVM: Fix for callback spinning undefinitly
Thanks for Nekoteki for the fix
2015-07-22 01:32:18 +03:00
Nekotekina cdf38d15d2 sys_lwmutex, sys_lwcond syscalls improved 2015-07-21 23:14:42 +03:00
Nekotekina 6462201aac Some macro removed 2015-07-21 23:14:41 +03:00
Nekotekina 023d385af8 sys_semaphore improved 2015-07-21 23:14:39 +03:00
Nekotekina 0aefaec46e sys_event improved, some unnamed functions named 2015-07-21 23:14:38 +03:00
Nekotekina 6019e02457 sys_rwlock improved 2015-07-21 23:14:36 +03:00
Nekotekina 6255f3b07d sys_event_flag improved 2015-07-21 23:14:34 +03:00
Nekotekina bc91ad0f4d sys_event improved 2015-07-21 23:14:33 +03:00
Nekotekina 2f7fe35f5c Minor style change 2015-07-21 23:14:31 +03:00
Nekotekina 8175630619 sys_cond/sys_mutex improved 2015-07-21 23:14:29 +03:00
Nekotekina 43d3ccce95 SPU Channels improved 2015-07-21 23:14:28 +03:00
Nekotekina 9913c9059c Very bugfix
I reverted cellSaveData changes since they were relying on the
uninitialized local variable `save_entry` and thus were almost
completely wrong.
2015-07-21 23:14:26 +03:00
Nekotekina 5bd83516ba SPU Interrupt Enable Status implemented
SPU Interrupts are still NOT implemented
2015-07-21 23:14:25 +03:00
Nekotekina 1519a2b468 Exceptions passed to wait_op caller 2015-07-21 23:14:23 +03:00
Nekotekina a7668ff57f SPU_EVENT_LR improved 2015-07-21 23:14:22 +03:00
Nekotekina 1e021cdbba waiter_map reintroduced, combined with vm 2015-07-21 23:14:20 +03:00
Nekotekina a8fcf71f9c Minor bugfix, cleanup 2015-07-21 23:14:04 +03:00
Nekotekina 3bc6c53eb3 sys_interrupt improved 2015-07-18 03:12:10 +03:00
Nekotekina b8a27d8a4c Silly bugs fixed 2015-07-18 03:12:08 +03:00
Nekotekina 48c75105e2 "Memory" eliminated 2015-07-18 03:12:06 +03:00
Danila Malyutin aad97aaea1 Enable colorized output for gcc
Since we use 4.9 now. Makes reading logs much easier!
2015-07-17 03:30:45 +03:00
Danila Malyutin 8f7e70d959 Enable travis-ci for all branches
except ppu_recompiler (dead branch).
That way it's much easier to setup travis on forks without messing with master yml.
I see no reason to run travis on master only anyway.
2015-07-17 02:45:51 +03:00
Raul Tambre 5f43360711 Fix Travis compiling 2015-07-16 21:36:06 +03:00
Raul Tambre 67e647a2ca sys_net and cellRudp fixes 2015-07-16 20:28:47 +03:00
Raul Tambre 746be46f1e Huge improvements to cellNetCtlGetInfo 2015-07-16 17:09:42 +03:00
Raul Tambre 6305d4edf9 Minor savedata fix and cellSail callback fixes 2015-07-16 14:31:59 +03:00
Raul Tambre 6beec80b60 Draft socketselect, other minor fixes 2015-07-15 16:21:41 +03:00
Raul Tambre 82733e1943 cellRudp improvements and fixes 2015-07-15 11:52:20 +03:00
Hykem 93e850404e Merge pull request #1144 from tambry/tea
Saving fix and improvements to sceNp2 and cellCamera
2015-07-14 18:03:33 +01:00
Raul Tambre 2e3113b5f2 Fix Travis compiling 2015-07-14 18:59:10 +03:00
Raul Tambre 80b544aa78 Add sceNp2 and some sceNpMatching2 functions 2015-07-14 15:07:23 +03:00
Raul Tambre ddcaf4972f Better fix for savedata and cellCamera improvements 2015-07-14 14:45:31 +03:00
Raul Tambre 66cf864ee0 Fix saving and some more logging
Fixes Shin Hayarigami (BLJS10279).
2015-07-13 22:06:16 +03:00
Hykem 3896c39ceb Update MainFrame.cpp
Use _WIN32 instead of __WINDOWS__
2015-07-11 12:29:47 +01:00
Hykem 916967a7d7 Merge pull request #1140 from danilaml/linux-icon-fix
Fix for icons on OSes other than Windows. Small fixes for travis
2015-07-11 12:27:32 +01:00
Hykem aad293df1a Merge pull request #1139 from danilaml/patch-2
Update travis to use gcc 4.9
2015-07-11 12:26:23 +01:00
Hykem b08c3186be Merge pull request #1136 from Nekotekina/master
Various changes
2015-07-11 12:25:42 +01:00
Danila Malyutin 7795305c9f Fix for icons on OSes other than Windows. Small fixes for travis
Didn't test. Also added memory monitoring to travis.
2015-07-11 04:46:27 +03:00
Nekotekina 06dacf04b5 Log style fix 2015-07-11 02:38:40 +03:00
Danila Malyutin b7c7148937 Update travis to use gcc 4.9
Due to this change: https://github.com/RPCS3/rpcs3/commit/de9a2fd556123a3bcde4752a9d419db045b10d00#commitcomment-12110160
2015-07-10 21:01:25 +03:00
Nekotekina 2d37c6b5e2 sys_memory, sys_mmapper rewritten
LogBase::Fatal() removed
2015-07-10 20:37:12 +03:00
Nekotekina 39629c5c7a IdManager collision threat fix 2015-07-10 04:31:43 +03:00
Nekotekina 4bacfcf847 sys_lv2dbg added, bugfix 2015-07-10 04:31:41 +03:00
Nekotekina daa93a7226 ARMv7 func binder improved (faster compilation) 2015-07-10 04:31:39 +03:00
Nekotekina 096fc86f17 SC_FUNC improved (faster compilation) 2015-07-10 04:31:37 +03:00
Nekotekina 82781e620a Small fixes 2015-07-10 04:31:36 +03:00
Nekotekina c0f13f7084 sleep_queue_t rewritten, used in sys_cond/sys_mutex
Some synchronization fixes
2015-07-10 04:31:34 +03:00
Nekotekina eafddd9e33 CPUThread fixes, thread_t cleanup 2015-07-10 04:31:32 +03:00
Nekotekina 83321c5be7 sys_time_get_current_time fixed, CALL_FUNC draft 2015-07-10 04:31:30 +03:00
Nekotekina 22e1da5e76 Minor cleanup 2015-07-10 04:31:29 +03:00
Nekotekina 3064cf8101 CHECK_EMU_STATUS, autojoin_thread_t 2015-07-10 04:31:27 +03:00
Nekotekina 8f9e1100c8 SPU fixes, various fixes 2015-07-10 04:31:25 +03:00
Nekotekina 721ad404d2 VM_CAST macro 2015-07-10 04:31:23 +03:00
Nekotekina 8c00dcd02d Bugfix 2015-07-10 04:31:21 +03:00
Nekotekina 32d3d1fbe5 EXCEPTION() macro usage, sceNpTrophy improved 2015-07-10 04:31:20 +03:00
Nekotekina 6f1e76198a Some fixes 2015-07-10 04:31:18 +03:00
Nekotekina 3aefa2b4e1 ThreadBase rewritten (wip) 2015-07-10 04:31:16 +03:00
Nekotekina b7a320fbbd cellCamera fix 2015-07-10 04:31:14 +03:00
Nekotekina ec68e012f9 vm::var replaced, atomic_op simplified 2015-07-10 04:31:12 +03:00
Nekotekina c598fe7aa9 atomic_op() rewritten, atomic.h refactoring
cellSync refactoring, wait_op() rewritten, bugfixes
2015-07-10 04:31:10 +03:00
Nekotekina 39f836b495 re32/se32/... macro eliminated, some fixes 2015-07-10 04:31:09 +03:00
Nekotekina ef6f9f6ded be_t constructor implemented, make() eliminated
be_t enums are forbidden, le_t improved, some operators cleaned.
2015-07-10 04:31:07 +03:00
S Gopal Rajagopal a800d21a31 SPURS: Fix some bugs
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
2015-07-10 04:31:05 +03:00
S Gopal Rajagopal fe67504ffc SPURS: Use atomic ops to implement some portions of event flags and trace
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
	rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp
2015-07-10 04:31:03 +03:00
S Gopal Rajagopal dc92a79fcc SPURS: Implement some core functions
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
2015-07-10 04:31:01 +03:00
Nekotekina 714da1aa7c vm::var fix, vm::ptr improved
GetCurrentPPUThread() removed
2015-07-10 04:31:00 +03:00
S Gopal Rajagopal 46e4f2d48c SPURS: Implement some portions of spurs initialization
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
	rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp
	rpcs3/Emu/SysCalls/lv2/sys_event.cpp
	rpcs3/Emu/SysCalls/lv2/sys_event.h
	rpcs3/Emu/SysCalls/lv2/sys_lwmutex.cpp
	rpcs3/Emu/SysCalls/lv2/sys_lwmutex.h
	rpcs3/Emu/SysCalls/lv2/sys_semaphore.cpp
	rpcs3/Emu/SysCalls/lv2/sys_semaphore.h
	rpcs3/Emu/SysCalls/lv2/sys_spu.cpp
	rpcs3/Emu/SysCalls/lv2/sys_spu.h
2015-07-10 04:30:58 +03:00
S Gopal Rajagopal 5b7f701878 SPURS: Implement SPURS SPU thread exit using throw
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp
2015-07-10 04:30:56 +03:00
Nekotekina c0fdef7a12 Small fix 2015-07-10 04:30:54 +03:00
Nekotekina 317417d541 vm::cptr/bcptr/lcptr used widely for const pointers 2015-07-10 04:30:53 +03:00
Nekotekina e896da8064 Added .aligned() method for vm::ptr
Added set_alignment() macro for setting alignment
Added alignof32() macro similar to sizeof32()
Added CHECK_SIZE, CHECK_ALIGN macro with static_assert
Minor refactoring
2015-07-10 04:30:51 +03:00
Nekotekina a7f77c27f7 ARMv7Context used through multiple inheritance
Forgive me...
2015-07-10 04:30:49 +03:00
Nekotekina 6c4148a949 Bugfix 2015-07-10 04:30:47 +03:00
Nekotekina bc9481db1b PSV modules refactoring 2015-07-10 04:30:45 +03:00
Nekotekina 8229c0ed3d Compilation fix 2015-07-10 04:30:43 +03:00
Nekotekina edb9595721 Using vm::ps3 namespace moved in proper places
Various fixes
2015-07-10 04:30:41 +03:00
Nekotekina 7eacfe19f6 vm::ptr fixes
std::function conversion removed (since it's convertible anyway),
pointer difference return type changed
vm::cptr, vm::bcptr aliases added
2015-07-10 04:30:39 +03:00
Nekotekina 63c5b2ab32 sys_fs_open() O_APPEND support
Added vm::static_ptr_cast, vm::const_ptr_cast, vm::reinterpret_ptr_cast
Added pointer comparison with vm::null
2015-07-10 04:30:37 +03:00
Danila Malyutin e338c3938b Trying to fix potential resource leak 2015-07-10 04:26:59 +03:00
Danila Malyutin 8483b17995 Initialize pointers to null on creation
Fixes access violation in hello_world.ppu.elf on window close.
As I understood the reason - when dtor of XAudioThread is called it
checks:
if (m_source_voice) Quit();
But m_source_voice isn't initialized to 0 by default so when in Quit()
in tries to call some funcs from unitialized ptrs and access violation
happens.
2015-07-10 04:26:57 +03:00
Danila Malyutin 6ce793d582 Deleted unneeded xaudio #ifs
There is no improvement in 2.8 and on my setup (8.1 x64) it always
preferred minidx headers anyway (so it'd still load 2.7 dll).
2015-07-10 04:26:56 +03:00
Danila Malyutin ee2940c159 Swapped buttons positions in about dialog
It's much more intuitive (and common) to have OK in the bottom-right
corner.
2015-07-10 04:26:54 +03:00
Raul Tambre f272171099 Re-do network status and add it to settings 2015-07-09 20:42:39 +03:00
Raul Tambre 909b512493 SysCall improvements 2015-07-09 20:19:29 +03:00
Raul Tambre 0acd37a328 Make icon show on actual window 2015-07-08 19:16:18 +03:00
Raul Tambre 61cd591ad5 Improve cellGameBootCheck 2015-07-06 14:47:49 +03:00
Raul Tambre 30c25cb722 Added NV4097_SET_TEXTURE_CONTROL2
Still need to use the parameters that are passed.
2015-07-06 10:12:17 +03:00
Hykem a27a51124f Merge pull request #1130 from Zangetsu38/Dante
Add Icon on the .exe
2015-07-04 12:03:06 +01:00
Hykem a114dbcd76 Merge pull request #1132 from vlj/rsx
Rsx: Some interface changes
2015-07-04 12:02:45 +01:00
Hykem 1e30077a65 Merge pull request #1133 from Zangetsu38/Zangetsu
Update Submpodule asmjit
2015-07-04 12:02:30 +01:00
vlj f4efeabcf3 RSX: Rename and document function member. 2015-07-03 17:08:06 +02:00
vlj 972515938c Memory: Fix virtualProtect protecting too much memory. 2015-07-03 17:08:06 +02:00
Zangetsu38 7d576117f9 Update Submpodule asmjit 2015-07-02 19:10:00 +02:00
vlj 4a7f6af8d9 Memory: Add a callback allowing customisation of handle_access_violation. 2015-07-02 19:05:27 +02:00
raven02 3a0894aaea RSX: Use CELL_GCM suffix for index array 2015-07-02 19:01:19 +02:00
vlj 5abeec85cc GL/RSX: Let backend call LoadVertex themselves. 2015-07-02 19:01:19 +02:00
vlj 4485e6b869 RSX: Do not emit error when parsing NV4097_SET_NO_PARANOID_TEXTURE_FETCHES
This opcode disables whole quad fetch on RSX, this is handled by drivers
on PC api.
2015-07-02 19:01:18 +02:00
vlj 288581cb43 RSX/GL/Null: Move semaphore handling to backend 2015-07-02 19:01:18 +02:00
Zangetsu38 c47082f725 Remove win32 Debug - MemLeak 2015-07-02 05:07:48 +02:00
Zangetsu38 1b5f2579a5 Add Icon on the .exe
thx BigPet for you help
2015-06-30 20:36:46 +02:00
Hykem 01bb63b1a6 Merge pull request #1128 from Zangetsu38/patch-1
Remove -x64 on exe because now it is useless
2015-06-30 17:26:01 +01:00
Zangetsu38 5804ce5f84 Remove -x64 on exe because now it is useless 2015-06-28 18:09:28 +02:00
B1ackDaemon bf74c0c749 Merge pull request #1124 from vlj/gcmsys
sysGCM: Fix for getNextCommandBufferBeginEnd
2015-06-23 17:53:56 +03:00
vlj 0993ee08e6 sysGCM: Fix for getNextCommandBufferBeginEnd
We were sometimes using memory outside of buffer.
It fixes vertex attribute test.
2015-06-22 00:59:14 +02:00
Hykem b25eb39fba Merge pull request #1122 from vlj/gcmsys
SysGCM: Split default command buffer into 32kb big fragments and swap between them
2015-06-20 15:25:46 +01:00
Vincent Lejeune 9a91b188df SysGCM: Split default command buffer into 32kb big fragments and swap between them 2015-06-20 00:52:21 +02:00
Hykem 596546df5a Merge pull request #1121 from vlj/rsx
Rsx: Improve debugger
2015-06-19 14:54:29 +01:00
vlj 712a514c6d RSXDebugger: Make bigger command list window 2015-06-17 22:09:04 +02:00
vlj b353cd4ecb RSXDebugger: Display viewport size 2015-06-17 22:09:04 +02:00
vlj e7b459573e RSXDebugger: Add clip details when parsing clip horizontal 2015-06-17 22:09:03 +02:00
vlj cf7e5028a4 RSXDebugger: Add surface detail when parsing set surface format 2015-06-17 22:09:03 +02:00
vlj 629c290faa RSXDebugger: Print more accurate semaphore 2015-06-17 22:09:02 +02:00
vlj 4b0d8557b4 RSXDebugger: Disasm a couple more command 2015-06-17 22:08:57 +02:00
Hykem de9a2fd556 Merge pull request #1119 from Nekotekina/master
be_t, vm::ptr, vm::ref improved
2015-06-16 15:00:30 +01:00
Hykem c51ce40d8d Merge pull request #1117 from Zangetsu38/master
Update glext.h on version 31191
2015-06-16 15:00:22 +01:00
Nekotekina 9c1c3bffbe is_be_t, is_le_t fixed 2015-06-15 20:00:08 +03:00
Nekotekina d8b1c3118a vm::ref assignment operators fixed 2015-06-15 19:21:23 +03:00
Nekotekina e833904b02 BEType improved (bugfix) 2015-06-15 19:21:21 +03:00
Nekotekina d7cb5a6e9e vm::ref improved (operators)
atomic operators fixed, vm::ptr operators improved
2015-06-15 19:21:20 +03:00
Nekotekina b7d967361d vm::ptr conversion operator fixed 2015-06-15 19:21:18 +03:00
Nekotekina 93dcd704c5 vm::psv::pptr usage 2015-06-15 19:21:16 +03:00
Nekotekina 3064560027 vm::ptr refactoring (operators improved)
vm::pptr, vm::bpptr added for PS3
is_le_t added
sizeof32() added (32-bit sizeof macro)
2015-06-15 19:21:14 +03:00
Nekotekina 8c62a893a9 cellGifDec, cellPngDec: small update 2015-06-15 19:21:12 +03:00
Nekotekina a77a75660b Compilation fix 2015-06-15 19:21:10 +03:00
Nekotekina 4d9add5e7c vm::ref improved, bugfixes 2015-06-15 19:21:09 +03:00
Nekotekina 1256d648c1 be_t simplified, vm::ref improved
remove_be_t renamed to to_ne_t (to native endianness)
le_t and to_le_t draft, bugfixes
2015-06-15 19:21:07 +03:00
Igor null 5ae2349f36 changed broken breakpoints database format to a consistent format 2015-06-15 18:09:21 +03:00
Zangetsu38 1dc2f6a164 Update glext.h on version 31191
Fix correct size icon with correct proportion
2015-06-11 12:52:56 +02:00
Hykem d86c33c09e Merge pull request #1111 from danilaml/improve-llvm-tests
Make ppuJIT test log more compact and easier to read
2015-06-08 18:41:13 +01:00
Hykem f935c789bd Merge pull request #1116 from vlj/rsx
RSX: Fix index gathering
2015-06-08 18:40:12 +01:00
vlj 02594c8239 RSX: Fix index gathering 2015-06-08 18:11:51 +02:00
Danila Malyutin ee715d9d36 Make ppuJIT testlog more compact and easier to read 2015-06-02 23:11:46 +03:00
Hykem 3b8c34e47c Merge pull request #1106 from raven02/scale
RSX: simplify resolution rescale
2015-06-02 16:09:52 +01:00
raven02 f2c5dc2b5c RSX: simplify resolution rescale 2015-05-31 18:35:15 +08:00
raven02 e6df1ddcc0 Fix CELL_GCM_TEXTURE_CLAMP
It should be GL_CLAMP
2015-05-29 21:59:51 +08:00
B1ackDaemon 8f9db92bf0 Merge pull request #1104 from Nekotekina/master
Some things changed
2015-05-29 09:26:00 +03:00
DHrpcs3 39e679806b Implemented some sys_prx syscalls
Fixed vm::ptr

Conflicts:
	Utilities/BEType.h
	Utilities/StrFmt.cpp
	rpcs3/Emu/Memory/vm_ptr.h
	rpcs3/Emu/SysCalls/lv2/sys_prx.cpp
	rpcs3/Emu/SysCalls/lv2/sys_prx.h

Cherry-picked commit "Implemented some sys_prx syscalls"
2015-05-29 04:34:30 +03:00
Nekotekina b84d831d8f MFF_NO_RETURN flag introduced 2015-05-29 01:49:50 +03:00
Nekotekina a70d305806 IdManager fix 2015-05-28 22:13:35 +03:00
Nekotekina 0724a9efa2 printf_alike removed 2015-05-28 18:28:34 +03:00
Nekotekina 74e13a4ef6 Compilation fix 2015-05-28 18:23:11 +03:00
Nekotekina 18fa6ca961 Forgotten one 2015-05-28 18:16:03 +03:00
Nekotekina 78fdcf75e7 Attribute macro changed
__forceinline -> force_inline
__noinline -> never_inline
printf_alike(x,y) added
2015-05-28 18:14:22 +03:00
Nekotekina f83306b0bf Fix 2015-05-27 15:49:54 +03:00
Nekotekina fba8e84370 Compilation fix 2015-05-27 14:05:04 +03:00
Nekotekina 26e5a07905 Fix 2015-05-27 13:55:15 +03:00
Nekotekina 7037da80cb Compilation fix 2015-05-27 13:17:28 +03:00
Nekotekina f14b712f07 Compilation fix 2015-05-27 13:02:29 +03:00
Nekotekina 2823953489 Compilation fix 2015-05-27 12:51:25 +03:00
Nekotekina 22b78fec71 IdManager improved, atomic_t improved
Various changes
2015-05-27 06:11:59 +03:00
Nekotekina cdf70e0b77 Compilation fix 2015-05-25 22:11:55 +03:00
Nekotekina 98aee31c5a refcnt.h removed 2015-05-25 21:12:53 +03:00
B1ackDaemon 24278e0eca Merge pull request #1100 from vlj/master
GL: Fix output swizzling for fog and clip distance
2015-05-24 23:42:34 +03:00
vlj 2dbac65613 GL: Fix output swizzling for fog and clip distance 2015-05-24 17:09:05 +02:00
B1ackDaemon dcad0e286a Merge pull request #1092 from Bigpet/localdev
Change `GetDeviceLocal` device selection
2015-05-24 02:09:51 +03:00
B1ackDaemon 4c87c9a545 Merge pull request #1093 from vlj/common-decompiler
Extract vertex/fragment decompiler code.
2015-05-24 01:43:09 +03:00
raven02 2d6dd873cd FP: RSQ instruction alternative 2015-05-23 20:45:12 +02:00
raven02 f98b03b61f VP: use getFloatTypeName() with compare instructions 2015-05-23 20:45:11 +02:00
raven02 eac5147a45 FP: fix SFL instruction 2015-05-23 20:45:11 +02:00
raven02 bebd437a7e RSX: use getFloatTypeName 2015-05-23 20:45:10 +02:00
Vincent Lejeune 669a54d071 GL: Factorise getFloatTypeName, getFunction and compareFunction between Fragment and Vertex Decompiler 2015-05-23 20:45:10 +02:00
raven02 79cb025d25 RSX : factorize DPH 2015-05-23 20:45:09 +02:00
raven02 67e8e0a367 RSX: DP2A for fragment decompiler 2015-05-23 20:45:09 +02:00
raven02 f961a2e3b4 GL: fix IFE instruction 2015-05-23 20:45:08 +02:00
vlj df794b88b0 GL: Use decompiler common class 2015-05-23 20:45:08 +02:00
vlj 2416d49dba RSX: Add a class factorizing decompiler code 2015-05-23 20:45:07 +02:00
B1ackDaemon 2a6f11b390 Merge pull request #1089 from vlj/gl
Store Vertex/Fragment program in a hashtable and do not rebuilt FP if a constant changes
2015-05-23 02:53:48 +03:00
Vincent Lejeune 7a5c8dd586 GL: Remove unused calls to glGetError() 2015-05-22 19:43:32 +02:00
vlj d5bdf78a29 Merge pull request #10 from Syphurith/gl
Renamed Symbols for `gl` branch
2015-05-22 18:25:17 +02:00
Syphurith 5a6869fc5e Renamed LogSeverity Symbols, like.. LogSeveritySuccess from Succuess to avoid conflicts with macros such as those in X11 header. 2015-05-22 20:16:30 +08:00
B1ackDaemon d5ead0d315 Merge pull request #1091 from vlj/shader-fix
gl: Fix swizzle for DIVRSQ, COS, SIN in fragment shader
2015-05-21 19:13:46 +03:00
vlj e2748c319e Merge pull request #7 from raven02/patch-3
gl: Fix IFE instruction
2015-05-21 17:31:18 +02:00
raven02 d0c2addf91 gl: Fix IFE instruction
This fixes the rsx_fp_static_test4.ppu.elf
2015-05-21 22:34:51 +08:00
Peter Tissen 0b0c8723eb Change GetDeviceLocal device selection
For `GetDeviceLocal` only consider a device if the full path to the device
matches the first part of the path to match.

The issue was that putting in a file that was not in a sub-path of an existing
mounted device failed. So if the rpcs3 devices are in
D:\DEV\rpcs3\bin and you open D:\DEV\ps3autotests\tests\rsx\primitives\primitives.ppu.elf
it would return
/dev_usb000/ps3autotests\tests\rsx\primitives\primitives.ppu.elf
which resolves to
D:/DEV/rpcs3/bin/dev_usb000/ps3autotests/tests/rsx/primitives/primitives.ppu.elf
and is wrong.

Correct are either /dev_usb000/../../../ps3autotests\tests\rsx\primitives\primitives.ppu.elf
or /hostfs/D:\DEV\ps3autotests\tests\rsx\primitives\primitives.ppu.elf

I chose to resolve without the ".." beyond root, since that just seems wrong
(so it will now return the hostfs version).

Fixes #1090
2015-05-21 10:45:40 +02:00
vlj d58188d7ba gl: Fix swizzle for DIVRSQ, COS, SIN, EXP2, LOG2 in fragment shader
This fix rsx_fp_static_test2.ppu.elf, rsx_fp_static_test3.ppu.elf, rsx_fp_static_test5.ppu.elf.
Likely rsx_fp_dynamic_test2.ppu.elf too
2015-05-20 19:31:21 +02:00
vlj 2a7c65c019 GL: Use pipeline cache 2015-05-19 17:26:06 +02:00
vlj 145f411324 RSX: Add a template class that helps caching programs. 2015-05-19 17:26:05 +02:00
Zangetsu 46302084e7 Fixed Error rpcs3.sln after Launch compilation 2015-05-10 18:20:19 +02:00
Hykem 45e9e9c938 Merge pull request #1079 from Bigpet/master
Update WxWidgets repository
2015-05-09 13:44:06 +01:00
Hykem 2b48443b95 Merge pull request #1078 from Nekotekina/master
Some fixes
2015-05-09 13:43:06 +01:00
Nekotekina 3ae43edc3e cellFs fix 2015-05-09 01:36:15 +03:00
Peter Tissen fe1b0e70b9 Update WxWidgets repository
This is in preparation to make it easy to compile with VS2015.

Also there's notables changes in wxWidgets that we might find very useful,
such as being able to create OpenGL debug contexts.

The change in .gitmodules might make it necessary for people to run
"git submodule sync" after pulling these changes
2015-05-08 21:25:17 +02:00
Nekotekina 8cf62e560e Compilation fix 2015-05-08 18:42:35 +03:00
Nekotekina f92c10ef71 Minor fixes 2015-05-08 12:45:21 +03:00
Hykem bb63ec0c83 Merge pull request #1068 from Nekotekina/master
wxDir replaced
2015-04-26 13:17:42 +01:00
Nekotekina e676d0bdcf Bugfix 2015-04-26 02:29:53 +03:00
Nekotekina ff359ed118 SPU Interpreter2 initialization fix 2015-04-26 01:56:58 +03:00
Nekotekina 9cfdce91a1 vfsDir usage fixed 2015-04-26 00:26:54 +03:00
Nekotekina 31a41b795e fs::dir::get_first fixed 2015-04-25 23:55:15 +03:00
Nekotekina 442cf3e937 Compilation fix 2015-04-25 23:24:45 +03:00
Nekotekina 3cab629a67 Compilation fix 2015-04-25 23:21:06 +03:00
Nekotekina dcf3e0776e Compilation fix 2015-04-25 23:10:39 +03:00
Nekotekina 02ca97804e fs::dir implemented, bugfixes 2015-04-25 22:15:53 +03:00
Hykem d18d19870f Merge pull request #1062 from Nekotekina/master
SPURecompiler improved
2015-04-25 19:32:47 +01:00
Nekotekina c5737d01c6 Logging fixed
Now it displays messagebox if logging system isn't initialized.
Otherwise it could cause stack overflow.
2015-04-25 16:29:05 +03:00
Nekotekina 5d6d058965 Fix 2015-04-25 01:18:12 +03:00
Nekotekina 74b3580b69 rfile_t renamed 2015-04-25 00:38:11 +03:00
Nekotekina b449545ae0 Compilation fix 2015-04-24 18:12:40 +03:00
Nekotekina ed6fb7cc43 o_append implemented 2015-04-24 17:06:30 +03:00
Nekotekina 2f4d6fc2a1 Adaptive /dev_bdvd/ mounting 2015-04-24 03:35:42 +03:00
Nekotekina fbc268e993 rFileName removed 2015-04-23 19:58:37 +03:00
Nekotekina 743421881e Some code disabled 2015-04-22 00:18:34 +03:00
Nekotekina f4540c2793 vm::null usage 2015-04-21 23:26:21 +03:00
Nekotekina 5aa6daf58f Some code simplified 2015-04-21 22:43:40 +03:00
Nekotekina 8b0c772423 Fix unique_ptr usage 2015-04-21 22:35:11 +03:00
Nekotekina 978d578f4e Bugfix 2015-04-21 21:18:15 +03:00
Nekotekina d05597ccdb Small fix 2015-04-21 18:16:29 +03:00
Nekotekina 56c64c8045 VFS::CreatePath fixed, bugfixes 2015-04-20 18:53:31 +03:00
Nekotekina 8c1aa3ee15 Bugfix 2015-04-20 04:54:19 +03:00
Nekotekina 935302b620 Bugfix 2015-04-20 02:49:13 +03:00
Nekotekina 3b26031692 Bugfix 2015-04-20 01:26:28 +03:00
Nekotekina 339021ac15 cellFsGetDirectoryEntries improved 2015-04-19 22:25:04 +03:00
Nekotekina 73b00b844b sys_fs_fstat fixed 2015-04-19 20:57:04 +03:00
Nekotekina 3c872ab611 sys_fs_ftruncate implemented, bugfixes
Eliminated using stat() for _WIN32 because it doesn't support unicode
correctly, use rExists() or get_file_info() instead
2015-04-19 20:14:16 +03:00
Nekotekina 93ebce4162 Bugfixes 2015-04-19 19:02:35 +03:00
Nekotekina ab405901ee wxFile removed (rFile -> rfile_t) 2015-04-19 16:19:24 +03:00
Peter Tissen fd34d11eec Merge branch 'p4-Bundle' 2015-04-18 20:28:30 +02:00
Nekotekina 2cafa84b75 Small changes 2015-04-18 20:18:23 +03:00
Nekotekina f2276bb70c VFS::TruncateFile() implemented 2015-04-18 16:38:42 +03:00
Nekotekina b1f7543436 PPU stack fixed (2) 2015-04-18 04:35:58 +03:00
Nekotekina b7fd09740b PPU stack fixed 2015-04-18 03:25:26 +03:00
Nekotekina 8bd7823b70 Bugfix 2015-04-18 02:13:43 +03:00
Nekotekina 747d53790c Compilation fix 2015-04-17 23:43:54 +03:00
Nekotekina 8c9ef2eef4 Compilation fix 2015-04-17 23:16:55 +03:00
Nekotekina ad02c8d510 _sys_ppu_thread_create fixed 2015-04-17 22:46:06 +03:00
luxsie 0f1bb8545d Tab to Space. 2015-04-18 03:12:25 +08:00
Nekotekina 048cb7993d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-04-17 20:09:24 +03:00
Nekotekina d9b53b476f Compilation fix 2 2015-04-17 17:05:28 +03:00
Nekotekina 9bedf0d13e Compilation fix 2015-04-17 16:56:32 +03:00
Nekotekina be48a330b4 cellVdecGetPicture improved 2015-04-17 16:24:22 +03:00
Nekotekina 4874a81dc5 cellSaveData improved 2015-04-17 07:37:13 +03:00
Nekotekina 94cbfd6a5c PSFLoader improved, saving implemented 2015-04-16 19:19:41 +03:00
Nekotekina b2111b3c3d PSFLoader improved 2015-04-16 18:33:55 +03:00
Nekotekina 37b22ec99d PSFLoader improved 2015-04-16 02:17:42 +03:00
Nekotekina 00205bfa58 Abstract class for MsgDialog interface 2015-04-15 21:33:44 +03:00
Hykem 588d364efe Merge pull request #1063 from Bigpet/clangtravis
use clang 3.6 for travis
2015-04-15 17:14:44 +01:00
Nekotekina cfb41c4dab Compilation fix 2015-04-15 18:12:10 +03:00
Nekotekina d032bc5691 vfsLocalDir, rFile routines improved 2015-04-15 17:27:37 +03:00
Nekotekina 2798827066 Small update 2015-04-14 17:54:03 +03:00
Nekotekina d8cc6b4c39 Small update 2015-04-14 14:35:41 +03:00
Nekotekina b54a33efce Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-04-14 13:35:36 +03:00
Nekotekina d2ad84453d KernelExplorer fixed 2015-04-14 05:00:31 +03:00
Peter Tissen 92acfcf454 seperate repo adds into seperate commands, for consistency 2015-04-14 00:20:13 +02:00
Nekotekina 39524318aa CopyFile improved 2015-04-13 22:06:01 +03:00
Nekotekina 7e8e288ba2 CopyFile fixed (finally) 2015-04-13 21:42:39 +03:00
Nekotekina f8c64b1fb4 CopyFile fixed 2015-04-13 21:35:44 +03:00
Nekotekina f8ad9d13f8 CopyFile fixed 2015-04-13 21:21:50 +03:00
Nekotekina a465c1aa0a getFileInfo fixed 2015-04-13 21:10:31 +03:00
Nekotekina 4d85a49666 SPURS fixed 2015-04-13 20:39:38 +03:00
luxsie 7b276e38f4 Enable Travis. Plus set Clang-3.6 for Travis build.
show version info about the $CXX not just gcc or clang.
2015-04-13 17:45:16 +02:00
Nekotekina 16fe7919a0 VFS::CopyFile implemented 2015-04-13 17:46:10 +03:00
Nekotekina 94b3cdf9e7 cellGame slightly rearranged 2015-04-13 17:05:44 +03:00
Nekotekina 85b63de631 Events improved 2015-04-13 16:32:09 +03:00
Nekotekina fea6fd1a70 Bugfixes 2015-04-12 23:16:30 +03:00
luxsie 0233fbff51 Thanks to @Nekotekina, about his patience on SPUThread.h. 2015-04-13 00:37:58 +08:00
Hykem 4f21cef3af Merge pull request #1054 from Syphurith/p2Travis
Travis Enabled.
2015-04-12 14:51:04 +01:00
Nekotekina ea5110cec3 Various changes 2015-04-12 04:36:25 +03:00
Hykem 54b6616ec9 Merge pull request #1060 from Syphurith/p5-EmulationDir
Custom EmulationDir
2015-04-11 13:12:03 +01:00
Hykem 18b8a7d473 Merge pull request #1053 from Bigpet/cmake_err
Stop overwriting the ADDITIONAL_LIBS setting for CMake.
2015-04-11 13:09:19 +01:00
Hykem 721a0c8bcb Merge pull request #1052 from Bigpet/master
remove lwmutex::const_be_u32_t::value
2015-04-11 13:09:03 +01:00
luxsie 02c263fc19 Remove comments in confirmed files. 2015-04-11 13:31:28 +08:00
luxsie 94441d7df3 Restore what is directly truncated in sys_spu.cpp. @danilaml that may be someone used a wrong constant for the third condition. 2015-04-11 01:58:12 +08:00
luxsie 147c50e7ca Removed some useless comments, thank Neko. 2015-04-11 00:27:20 +08:00
luxsie ea17e08ae6 Tested Enable/Disable this Custom EmulationDir Feature, and it can check whether directory exists. But there is still problem with its log. 2015-04-10 23:56:38 +08:00
luxsie 64ab14b237 I forgot to save the EmulationDirEnable.. Also just show the bind once. 2015-04-10 23:23:20 +08:00
luxsie a3d6919431 Add notice for the custom path, and add an option to Configuration - System panel. Not Tested. 2015-04-10 23:10:02 +08:00
luxsie 5f6afca18a Added SysEmulationDir to set $(EmulationDir) to custom location. 2015-04-10 22:49:34 +08:00
luxsie e4a2a60f55 CppCheck: End of those marking. and removed one meaningless comparation in sys_spu.cpp. 2015-04-10 20:26:48 +08:00
luxsie 900389d857 CppCheck: Tried to classify and marked some lines that weird. 2015-04-10 20:13:25 +08:00
luxsie cd23a2ecaf CppCheck: About assert side-effect and remove_if that i don't know enough.. 2015-04-10 19:29:45 +08:00
luxsie d072eba687 CppCheck: Marked out case_range that in RSXThread.cpp. It seems missing its own break;. 2015-04-10 19:20:50 +08:00
luxsie f6392baab3 CppCheck: Make it return value not without return, in cellSpurs.cpp. 2015-04-10 19:14:33 +08:00
luxsie 30acfb89c3 CppCheck: Orz. fix out-bound reference of NONZEROCOEFFS in CellCameraAttributes. 2015-04-10 19:12:08 +08:00
luxsie ef7166057a Revert Non-Necessary Change. Thank Bigpet. 2015-04-09 21:30:24 +08:00
luxsie a2ab685ba9 Small change for Badges in README.md. 2015-04-09 20:43:46 +08:00
luxsie da85fba015 Modify .travis.yml to enable Travis.
Fix the master git repo name in Github, also the one in git-version-gen.cmd.
Display Shell Export List to help debugging our Travis Build.
2015-04-09 15:11:32 +08:00
luxsie 080e42ec9f Stop overwriting the ADDITIONAL_LIBS setting for CMake. 2015-04-09 00:09:03 +02:00
Peter Tissen d140cffc08 remove the publicly accessible version of the template parameter in lwmutex::const_be_u32_t because it's never used and causes linker errors in clang 3.4 (and allegedly gcc 4.8.4) 2015-04-08 22:43:29 +02:00
Nekotekina d1fbccc9ce SPURecompiler improved 2015-04-05 21:01:15 +03:00
Nekotekina d2883fc554 SPURecompiler cleanup 2015-04-04 21:21:49 +03:00
B1ackDaemon 952098c00f Merge pull request #1046 from Nekotekina/new_interpreter
Alternative interpreters
2015-04-04 20:03:18 +03:00
Nekotekina 9479bcf77b Small fix 2015-04-04 19:16:53 +03:00
Nekotekina 26b5eebc17 Bugfixes 2015-04-04 19:00:02 +03:00
Nekotekina 1c82e8b1d5 Bugfixes 2015-04-03 19:56:57 +03:00
Hykem abdfcf9d0b Merge pull request #1045 from Zangetsu38/master
Update GLEXT.h to revision 30346
2015-04-03 16:33:16 +01:00
Zangetsu38 55c317c1cf Update GLEXT.h to revision 30346 2015-04-03 14:07:35 +02:00
Nekotekina 59effb3412 PPU: some instructions replaced 2015-04-02 18:22:43 +03:00
Nekotekina 6b9a6c50fe PPU: some instructions replaced 2015-04-01 17:01:04 +03:00
Nekotekina 72fdcf120c PPU: some instructions replaced 2015-03-31 17:54:41 +03:00
DHrpcs3 0b4105915a Merge pull request #1044 from joshslark/master
Some fixes to allow compilation on linux
2015-03-31 13:08:50 +03:00
Joshua Clark 3c3e3baa14 proper fix for issue #1041 2015-03-31 04:20:25 -05:00
Joshua Clark 10983338d8 Small fixes to allow compililation on linux 2015-03-31 03:34:37 -05:00
Nekotekina 3247152ff7 PPU: some instructions replaced 2015-03-29 14:00:10 +03:00
joshslark 55b83af845 Add arch linux dependency instructions 2015-03-27 02:56:13 -05:00
Nekotekina d640aba903 PPU: some instructions replaced 2015-03-26 21:42:12 +03:00
Nekotekina 75fa95c7ff PPU: some instruction replaced 2015-03-24 22:54:15 +03:00
Raul Tambre c4ec38f358 Merge pull request #1043 from Nekotekina/master
Stack overflow fix
2015-03-24 19:58:31 +02:00
Nekotekina ec8519b969 LLVM stack overflow fix 2015-03-24 18:17:53 +03:00
Nekotekina f095dec43d Compilation fix 2015-03-22 02:22:24 +03:00
Nekotekina dc6c21833d SPU: completed 2015-03-22 01:03:28 +03:00
Nekotekina 08dd95e52b SPU: Floating Interpolate implemented 2015-03-21 22:39:56 +03:00
Nekotekina a86317ce5a SPU: some instructions updated 2015-03-21 21:07:37 +03:00
Nekotekina e477a0b8fc SPU: some instructions updated 2015-03-21 18:36:56 +03:00
Nekotekina ff1708a899 SPU: some instructions updated 2015-03-21 17:29:33 +03:00
Nekotekina ef563f038d SPU: some instructions updated 2015-03-21 02:36:05 +03:00
Nekotekina c8bb83b824 spu_opcode_t 2015-03-20 20:30:13 +03:00
Nekotekina 63276a3f84 SPU interpreter (basic concept) 2015-03-20 19:53:54 +03:00
DHrpcs3 a342de6143 Merge pull request #1039 from raven02/patch-1
Fix intel HD graphics crash
2015-03-18 16:32:04 +02:00
raven02 9954b36ec7 Fix intel HD graphics crash 2015-03-18 22:30:47 +08:00
DHrpcs3 903cb8d7e5 Merge pull request #1037 from raven02/patch-8
Disable glDepthBoundsEXT for Intel HD graphics
2015-03-18 08:27:18 +02:00
raven02 9b41f846d6 Disable glDepthBoundsEXT for Intel HD graphics 2015-03-18 06:05:32 +08:00
Nekotekina 620e937473 Basic load 2015-03-17 23:03:24 +03:00
Nekotekina 573f112b37 Small update 2015-03-17 03:44:35 +03:00
Nekotekina 0ca4c189a5 Small update 2015-03-17 02:18:13 +03:00
Nekotekina a71cb5f521 Basic concept 2015-03-17 00:38:21 +03:00
Nekotekina 6a0ce1850a Initial commit 2015-03-16 21:50:59 +03:00
Raul Tambre b5a4e21c81 Merge pull request #1036 from Nekotekina/master
sys_fs bugfixes
2015-03-16 20:31:50 +02:00
Nekotekina bee6b84733 sys_fs bugfixes 2015-03-16 19:20:02 +03:00
Nekotekina 7ce45a3bae cellFsSt* update 2015-03-16 16:15:52 +03:00
Nekotekina 63b97d6817 cellFsSt* 2015-03-16 03:21:40 +03:00
Nekotekina c125f5376c cellAudio event queue fix 2015-03-15 20:23:43 +03:00
Nekotekina 3e412a2a1f Syscall names registered 2015-03-15 16:26:01 +03:00
Nekotekina ff90ddbd2f IdManager cleaned 2015-03-15 12:20:29 +03:00
Nekotekina fae7ddc611 sys_fs_test, sys_fs_fcntl draft 2015-03-15 03:41:08 +03:00
DHrpcs3 1f05275ac4 Merge pull request #1035 from Nekotekina/master
sys_fs review, cleanup
2015-03-14 23:07:47 +02:00
Nekotekina 469926c5e1 _sys_heap*, _sys_malloc+, _sys_strcmp implemented 2015-03-14 23:28:59 +03:00
Nekotekina 614cb88116 start func running 2015-03-14 18:46:13 +03:00
Nekotekina 5cb1a2f26d cellFsAioWrite implemented 2015-03-14 14:29:26 +03:00
Nekotekina ea8473943b Additional layer for opened file objects 2015-03-14 03:38:36 +03:00
Nekotekina 9bc5ce300e cellFsWriteWithOffset 2015-03-14 01:05:48 +03:00
Nekotekina 139173caa0 sys_fs_open() update, octal formatting 2015-03-13 23:43:11 +03:00
Nekotekina 0fc6ec2df9 Fix 2015-03-13 18:37:00 +03:00
Nekotekina d209cc5671 Fix 2015-03-13 18:36:03 +03:00
Nekotekina aa4b74c194 Fix 2015-03-13 18:33:11 +03:00
Nekotekina fc81d79807 Fix 2015-03-13 18:29:10 +03:00
Nekotekina 6c36013e2a sys_fs_open rewritten 2015-03-13 18:06:27 +03:00
Nekotekina 3e34bd64bf Compilation fix 2015-03-13 04:59:25 +03:00
Nekotekina c88e0a0eb9 Small cleanup 2015-03-13 04:09:53 +03:00
Nekotekina 5c31037c04 atomic_t update 2015-03-13 02:18:38 +03:00
Nekotekina 5764ee7a2a Small fix 2015-03-13 02:03:22 +03:00
Nekotekina bcad7afcc9 Bugfix 2015-03-12 22:39:41 +03:00
Nekotekina 583b6d92ec sys_fs syscalls detached from cellFs 2015-03-12 22:02:02 +03:00
Nekotekina 0cf7bb056e Bugfix 2015-03-11 20:50:11 +03:00
Nekotekina bd517cf915 atomic_t operators update 2015-03-11 19:58:50 +03:00
Nekotekina a3d400b5cc Minor cleanup 2015-03-11 18:30:50 +03:00
Raul Tambre db7bde0a6f Merge pull request #1033 from Nekotekina/master
Cleanup, lv2 timer/lwmutex/lwcond rewritten
2015-03-11 13:59:56 +02:00
Nekotekina daad7d71f9 Bugfix 2015-03-11 14:45:58 +03:00
Nekotekina 6de3a6090a Bugfix 2015-03-11 14:35:23 +03:00
Nekotekina 629206c0dc Bugfix 2015-03-11 14:27:29 +03:00
Nekotekina 6e3e2cf0f3 Fix 2015-03-11 14:12:20 +03:00
Nekotekina 03219a9a4e Fix 2015-03-11 13:41:20 +03:00
Nekotekina a19a13136c Bugfix 2015-03-11 13:39:54 +03:00
Nekotekina 0a4820f4f8 Some diagnostic message 2015-03-11 12:43:36 +03:00
Nekotekina 116638f352 Bugfix 2015-03-11 01:48:17 +03:00
Nekotekina fe4ab0abbb Bugfix 2015-03-11 00:47:13 +03:00
Nekotekina a62eeaaecc Bugfix 2015-03-10 22:16:31 +03:00
Nekotekina 11b409907e atomic_t specializations fixed 2015-03-10 19:27:08 +03:00
Nekotekina befc0f62b8 Lv2 lwcond "true" syscalls 2015-03-10 17:42:08 +03:00
Nekotekina 3cf80b0831 sys_lwcond* funcs moved and rewritten 2015-03-09 22:56:55 +03:00
Nekotekina 2709dc2e36 Compilation fix 2015-03-09 05:05:53 +03:00
Nekotekina 1653991b9d Using "using" in vm::ptr/ref 2015-03-09 04:57:50 +03:00
Nekotekina 8155ef5e67 Lv2 lwmutex "true" syscalls experimentally implemented 2015-03-09 04:30:34 +03:00
Nekotekina 507798c541 Lv2 Lwmutex 2015-03-09 00:56:45 +03:00
Nekotekina 9883e1e8b8 Lv2 Timer rewritten 2015-03-08 18:25:31 +03:00
Raul Tambre e5de176b16 Merge pull request #1032 from Nekotekina/master
lv2 sema/rwlock, bugfox, cleanup
2015-03-08 15:00:54 +02:00
Nekotekina 0f233beff9 Lv2 Semaphore rewritten 2015-03-08 06:37:07 +03:00
Nekotekina dba249554d Lv2 Rwlock rewritten 2015-03-08 05:32:41 +03:00
Nekotekina 1d2351bf85 Attempt to fix bug 2015-03-08 00:20:38 +03:00
Nekotekina cf335a5dc4 Video freezing fixed 2015-03-07 20:39:25 +03:00
Nekotekina 4a6ef91eb3 More cleanup 2015-03-07 19:03:42 +03:00
Nekotekina 961fc27215 Minor cleanup 2015-03-07 16:39:07 +03:00
B1ackDaemon 9d8e8028a6 Merge pull request #1030 from Nekotekina/master
lv2 cond/mutex, Id Manager fix
2015-03-07 06:28:12 +02:00
Nekotekina 476b9020ce sys_spu_thread_group_terminate fixed 2015-03-07 03:37:39 +03:00
Nekotekina d234493b4a Compilation fix 2015-03-07 01:58:42 +03:00
Nekotekina 428e51b619 Compilation fix 2015-03-07 01:24:04 +03:00
Nekotekina ef65299dff Lv2 Cond/Mutex rewritten, bugfixes 2015-03-07 01:10:04 +03:00
B1ackDaemon 48c1f0f03d Merge pull request #1029 from Nekotekina/master
Event Flag rewritten, bugfixes
2015-03-06 00:01:07 +02:00
Nekotekina e2a2709ad0 Event Flag refactoring, bugfixes 2015-03-06 00:29:05 +03:00
Nekotekina 5d768bd3cf Bugfix, sys_spu_thread_group_connect_event implemented 2015-03-05 16:18:06 +03:00
B1ackDaemon 8c046429cc Merge pull request #1027 from Nekotekina/master
Event and SPU refactoring
2015-03-05 02:36:20 +02:00
Nekotekina a2293d94f6 Fix 2015-03-05 03:01:48 +03:00
Nekotekina f22001d527 Bugfix
+sys_spu_thread_group_disconnect_event_all_threads
2015-03-05 02:34:20 +03:00
Nekotekina 9e49a33b3c SPU syscall improvements 2015-03-05 00:51:14 +03:00
Nekotekina 30fe3dc6f5 Compilation fix 2015-03-04 14:38:28 +03:00
Nekotekina ad38e9f0fe event_queue_t, event_port_t rewritten 2015-03-04 07:42:04 +03:00
Nekotekina 78c37ff8b6 Some bicycle for PSV 2015-03-03 23:09:23 +03:00
Nekotekina 8587ae5883 Compilation fix 2015-03-03 02:34:49 +03:00
Nekotekina 5f8cf18a5a SPU refactoring 2015-03-03 00:09:20 +03:00
Nekotekina bc94d92cba nyu 2015-03-02 05:10:41 +03:00
Raul Tambre 31bf130b1c Merge pull request #1025 from Nekotekina/master
Various fixes
2015-03-01 09:57:25 +02:00
Nekotekina 619b8e473f Possibly fix for OSX 2015-02-28 22:37:31 +03:00
Nekotekina eaf3787ae6 Imports fixed 2015-02-28 21:47:37 +03:00
Nekotekina 72dcbefff4 Bugfix 2015-02-28 19:38:48 +03:00
Nekotekina c054d8e7dc Bugfix 2015-02-28 18:00:38 +03:00
Nekotekina d76e801c47 Compilation fix 2015-02-28 17:51:42 +03:00
Nekotekina 942d984dc5 sys_process_get_paramsfo implemented 2015-02-28 17:41:15 +03:00
Nekotekina 316bd8d155 Bugfix 2015-02-28 15:49:09 +03:00
Nekotekina 6cbdeb9411 Unused code removed 2015-02-28 15:37:06 +03:00
Nekotekina e4bfe81712 Readability improved 2015-02-27 21:57:10 +03:00
Nekotekina d62e95d0f8 Success log level fixed 2015-02-27 21:11:07 +03:00
Nekotekina 233f2e478a Improved readability 2015-02-27 02:17:33 +03:00
Nekotekina ae21783680 sys_libc.cpp with memcpy 2015-02-26 23:08:48 +03:00
Nekotekina 88476fe698 Insignificant changes 2015-02-26 21:26:44 +03:00
Nekotekina be4e85f0f2 PPCThread removed (it does nothing anyway) 2015-02-26 03:54:49 +03:00
Hykem 9b2907dc64 Merge pull request #1024 from Nekotekina/master
HLE binding improvements
2015-02-25 17:25:01 +00:00
Nekotekina 99c5366f50 Small fix 2015-02-25 15:26:22 +03:00
Nekotekina 9afdb429fa Result logging restored 2015-02-25 15:08:22 +03:00
Nekotekina 0b21474b79 Logging fixed 2015-02-25 14:48:12 +03:00
Nekotekina 432f0c3630 LLE logging 2015-02-25 14:24:30 +03:00
Nekotekina 0e33636aaf Import fix 2015-02-25 13:28:43 +03:00
Hykem dc90ab3cee Merge pull request #1021 from tambry/Things
Improvements in cellSearch, cellUsbd and cellRudp
2015-02-24 17:00:07 +00:00
Nekotekina 991fd015de Size of injected code decreased 2015-02-24 19:38:10 +03:00
Nekotekina a8688bff85 RTOC saving fixed 2015-02-24 17:04:25 +03:00
Nekotekina 1e28611435 Compilation fix 2015-02-24 14:06:24 +03:00
Nekotekina 07cb56e1ea Flags for HLE functions 2015-02-23 21:54:17 +03:00
Hykem 5416782392 Merge pull request #1023 from O1L/master
Implemented binary vertex program disassembler
2015-02-23 16:58:21 +00:00
Raul Tambre e6a47bfa89 Fix be_ts and fix loading in some modules 2015-02-23 17:09:52 +02:00
O1L 99ea666bf2 Implemented binary vertex program disassembler 2015-02-23 16:22:30 +04:00
DHrpcs3 881dafcdff Merge pull request #1022 from O1L/master
Shaders disassembly tool
2015-02-23 09:24:23 +02:00
O1L deebe3ca1f Used fmt::Format instead of sprintf 2015-02-22 22:53:26 +04:00
O1L 4d27198ad7 Conflicts fixed 2015-02-22 20:06:42 +04:00
O1L 8d383ea15c Oops 2015-02-22 19:47:44 +04:00
Raul Tambre ef3a011919 Fix compiling 2015-02-22 17:36:22 +02:00
Raul Tambre 31b91c10ec Fix m_inited 2015-02-22 16:52:20 +02:00
Raul Tambre 46e7207e93 Improvements in cellSearch, cellUsbd and cellRudp 2015-02-22 16:50:11 +02:00
O1L e84f356a29 Implemented binary fragment program disassembler 2015-02-22 18:47:12 +04:00
Hykem 3a9cc0ab63 Merge pull request #1020 from tambry/Things
Improvements and fixes
2015-02-22 13:43:41 +00:00
Raul Tambre c13ebc8692 More stubs 2015-02-22 13:38:14 +02:00
Raul Tambre e7d0aedfb4 Merge upstream 2015-02-22 10:58:18 +02:00
Raul Tambre f9497e35e4 Stub some modules 2015-02-22 10:50:26 +02:00
B1ackDaemon bdad5ef745 Merge pull request #1019 from Nekotekina/master
Some cleanup, HLE calls simplified
2015-02-21 18:06:45 +02:00
Nekotekina 55b348f4fc Small fix 2015-02-21 17:35:23 +03:00
Nekotekina 9ee9523680 StaticFuncManager removed 2015-02-21 17:07:22 +03:00
Nekotekina a182743561 sys_net fixed 2015-02-21 16:05:35 +03:00
Nekotekina 6b4b86434d Some code moved 2015-02-21 15:03:37 +03:00
Nekotekina faaef03604 Fix 2015-02-21 14:30:26 +03:00
Nekotekina 18954ee5b8 Partial fix 2015-02-21 13:37:43 +03:00
Nekotekina e6b2be2bc9 Some names fixed 2015-02-21 00:21:52 +03:00
Nekotekina 303a9de045 Test 2015-02-20 22:45:00 +03:00
Nekotekina cd2eb59da6 Compilation fix (sc) 2015-02-20 21:14:34 +03:00
Nekotekina a4a25dc28d Compilation fix 2015-02-20 21:11:21 +03:00
Nekotekina 0bb15b2ff7 Compilation fix_ 2015-02-20 21:05:45 +03:00
Nekotekina 0c1bfefbc8 Compilation fix 2015-02-20 21:00:53 +03:00
Nekotekina 69a3db491c Compilation fix 2015-02-20 20:58:15 +03:00
Nekotekina 8d13aa3f2e Compilation fix 2015-02-20 17:42:41 +03:00
Nekotekina 8cd00287cd Compilation fix 2015-02-20 17:27:49 +03:00
Nekotekina fdad4019e5 Compilation fix 2015-02-20 17:04:11 +03:00
Nekotekina 655acc746d HLE function binding for PPU/ARMv7 simplified 2015-02-20 16:58:40 +03:00
Raul Tambre e2d2c9d377 Fix stacksize 2015-02-20 15:55:00 +02:00
Nekotekina 7ab1e64aab Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-02-20 14:38:57 +03:00
Raul Tambre 948758f758 Merge remote-tracking branch 'upstream/master' into Things 2015-02-20 12:59:31 +02:00
Raul Tambre 67c02274cb Merge pull request #1013 from Syphurith/PPU-Thread-Stacksize
About ppu thread stacksize
2015-02-20 12:58:30 +02:00
B1ackDaemon d18b91e828 Merge pull request #1018 from gopalsr83/master
Fixed some issues in cellSpurs
2015-02-20 00:16:34 +02:00
Raul Tambre 4b516273f6 Implement cellSaveDataListAutoLoad, fix textureProj 2015-02-19 22:56:57 +02:00
S Gopal Rajagopal 26d3bfe9c2 SPURS: Disable kernel 2015-02-20 02:16:25 +05:30
Nekotekina f9eb3f8476 get_x64_reg_value fix 2015-02-19 23:38:25 +03:00
S Gopal Rajagopal 1356a17e84 Merge upstream 2015-02-20 01:57:46 +05:30
S Gopal Rajagopal 68978a0109 SPURS: More fixes 2015-02-20 01:53:05 +05:30
S Gopal Rajagopal 796d96f06b SPURS: Fix some issues 2015-02-20 01:15:33 +05:30
Nekotekina 152feb898e libmixer fix 2015-02-19 22:17:30 +03:00
Hykem c1786df2a6 Merge pull request #1017 from tambry/Improvements
cellCamera fix and update GLEXT.h
2015-02-19 17:16:36 +00:00
Hykem fe376abe6c Merge pull request #1011 from Bigpet/master
Only link to librt on Linux
2015-02-19 17:15:56 +00:00
Raul Tambre 4ad91a6fa8 Merge upstream 2015-02-19 17:15:21 +02:00
Raul Tambre 39cf935929 Minor formatting in GLProgram 2015-02-19 17:10:21 +02:00
Raul Tambre 872e41825e Merge pull request #1016 from Nekotekina/master
Cleanup
2015-02-19 17:09:17 +02:00
Nekotekina fed1418c0e Loader fix 2015-02-19 16:47:53 +03:00
Nekotekina 2d1d996c50 Small fix 2015-02-19 14:18:28 +03:00
Nekotekina e84fc6426c PRX_DEBUG removed 2015-02-19 01:54:31 +03:00
Nekotekina d177b1adea ARMv7: loader fixed 2015-02-19 00:23:31 +03:00
B1ackDaemon 1003c42310 Merge pull request #1015 from gopalsr83/master
Miscellaneous fixes and improvements to the PPU LLVM JIT
2015-02-18 21:55:25 +02:00
S Gopal Rajagopal 4272ec7a82 PPUJIT: Convert tabs to spaces 2015-02-19 00:37:09 +05:30
Peter Tissen a404f2e6fa Add iconv to linked libs on non-linux UNIX
of course the correct solution would be to actually search for the symbols
but that seems like a lot of efford just for the sake of doing it right.
This should probably suffice for all relevant platforms for now.
2015-02-18 19:30:04 +01:00
S Gopal Rajagopal 85648da706 Merge remote-tracking branch 'upstream/master' 2015-02-18 23:43:37 +05:30
S Gopal Rajagopal 681fb1eeaa PPUJIT: Support stopping/pausing threads (does not always work) 2015-02-18 23:40:04 +05:30
luxsie ffb0454424 sys_ppu_thread_create: Add warning when allocated more stack size than required. 2015-02-19 01:44:07 +08:00
Hykem cae85c6247 Merge pull request #1012 from Nekotekina/master
Reservations, memory system, module manager improved
2015-02-18 17:36:02 +00:00
Nekotekina 91c9fd3c3c Compilation fix 2015-02-18 19:37:12 +03:00
Nekotekina 1589b72699 Compilation fix 2015-02-18 19:28:09 +03:00
Nekotekina af986d8f4c Loader improved, ModuleManager refactored 2015-02-18 19:22:06 +03:00
luxsie 73d9b58dfc sys_ppu_thread_create: minimum stack size and stack allocation unit applied. 2015-02-18 23:56:46 +08:00
Peter Tissen 518c028a3d Only link to librt on Linux
The library is not needed on OSX and does not seem to exists there
2015-02-18 15:59:26 +01:00
Raul Tambre 714ff6c32e Update GLEXT.h to revision 29735 2015-02-18 11:39:56 +02:00
Nekotekina 1f2eafc4f2 Loader fixed 2015-02-17 18:27:15 +03:00
Nekotekina 3f3873ceb5 STOS support (for memset) 2015-02-17 05:01:47 +03:00
Nekotekina bddad4d766 Compilation fix 2015-02-17 03:40:10 +03:00
Nekotekina 20dce26b1d Reservations improved 2015-02-17 03:08:23 +03:00
S Gopal Rajagopal 1365c830b2 PPUJIT: Fix EOL issues 2015-02-16 23:07:22 +05:30
S Gopal Rajagopal 3a2b13c02b PPUJIT: Fix unit tests 2015-02-16 23:00:41 +05:30
S Gopal Rajagopal e7f278b5d2 PPUJIT: Support exception based MMIO and reservations 2015-02-16 22:49:17 +05:30
Nekotekina e6c628caba Memory (unfinished) 2015-02-16 04:53:53 +03:00
Nekotekina 1189503b4d Some cleanup 2015-02-15 20:13:06 +03:00
Nekotekina 6909a15400 decode_x64_reg_op improved 2015-02-15 15:31:42 +03:00
Raul Tambre 2df18c91e9 cellCamera ifs now switches 2015-02-14 09:16:48 +02:00
B1ackDaemon bf1e29e227 Merge pull request #1009 from Nekotekina/master
Memory cleanup
2015-02-14 00:48:28 +02:00
Nekotekina f01059283a Some cleanup 2015-02-14 00:45:36 +03:00
Nekotekina 0d489518ab Compilation fix 2015-02-13 23:24:18 +03:00
Nekotekina 5fc77fe89e Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-02-13 23:15:35 +03:00
Hykem fcd300ad4d Merge pull request #1008 from robxu9/master
Fix building on OS X 10.10
2015-02-13 15:55:08 +00:00
Nekotekina ba83767706 Small fix 2015-02-13 18:26:42 +03:00
Raul Tambre 7b249790f5 Merge remote-tracking branch 'upstream/master' into Improvements 2015-02-13 16:47:08 +02:00
Raul Tambre 8ce3943e09 Small formatting changes 2015-02-13 16:44:26 +02:00
Nekotekina 267de68441 Memory cleanup, page flags implemented
RSXCMDMem, SPRXMem, MmaperMem removed
MainMem range fixed
2015-02-13 17:04:03 +03:00
Nekotekina 0eebfb0aaa Memory cleanup: u64 -> u32, empty TLS fixed
cellGameContentPermit fixed
2015-02-12 23:10:25 +03:00
B1ackDaemon 4d5bdf1419 Merge pull request #1006 from Nekotekina/master
Small fix
2015-02-12 10:56:43 +02:00
Nekotekina 5986448d67 Small fix 2015-02-12 11:44:53 +03:00
B1ackDaemon 35e04bdbe3 Merge pull request #1005 from tambry/Improvements2
Improvements to cellCamera, cellGem and other minor things
2015-02-11 23:27:03 +02:00
B1ackDaemon 5e73d68e4a Merge pull request #1004 from Nekotekina/master
SPURS fix, PPU threads are deleted at exit/join
2015-02-11 23:26:56 +02:00
Raul Tambre cc6ba726eb Big improvements to cellCamera and cellGem 2015-02-11 23:09:48 +02:00
Nekotekina 42f961816c SPURS fix, PPU threads are deleted at exit/join 2015-02-11 23:11:49 +03:00
B1ackDaemon 982e536ad2 Merge pull request #1003 from Nekotekina/master
Compilation fix
2015-02-11 15:37:21 +02:00
Nekotekina 5c08bd6a73 Compilation fix 2015-02-11 16:05:50 +03:00
B1ackDaemon 7624c89d12 Merge pull request #1002 from Nekotekina/master
Compilation fix
2015-02-11 14:58:26 +02:00
Nekotekina 250fb15592 Compilation fix 3 2015-02-11 15:25:20 +03:00
Nekotekina 3e26971044 Compilation fix 2 2015-02-11 15:22:53 +03:00
Nekotekina 4340899833 Compilation fix 2015-02-11 15:03:15 +03:00
Nekotekina fdc5fa34be Bugfix 2015-02-11 14:39:51 +03:00
B1ackDaemon 2032b15acf Merge pull request #1001 from gopalsr83/spurs_taskset
SPURS Taskset
2015-02-11 13:06:29 +02:00
S Gopal Rajagopal d675c67f79 SPURS: Disable the SPURS kernel 2015-02-11 15:45:43 +05:30
S Gopal Rajagopal 853234f7d7 Merge remote-tracking branch 'upstream/master' into spurs_taskset 2015-02-11 15:00:46 +05:30
B1ackDaemon 47af5c1b5c Merge pull request #999 from Bigpet/master
Add librt to the list of linked libraries
2015-02-11 09:21:21 +02:00
Robert Xu 00e637645c Fix building on OS X 10.10 2015-02-10 23:17:39 -05:00
Peter Tissen 068883a441 Add librt to the list of linked libraries
This is needed by `shm_unlink` and similar functions. Fixes #997
2015-02-11 00:44:22 +01:00
Raul Tambre 43a95d709d Merge remote-tracking branch 'upstream/master' into Improvements2 2015-02-10 17:43:21 +02:00
B1ackDaemon 73d63c508a Merge pull request #998 from Nekotekina/master
NV3089_IMAGE_IN_SIZE rewritten
2015-02-10 15:37:07 +02:00
Nekotekina c0a1dab09d Small fix 2015-02-10 16:20:07 +03:00
Nekotekina e642e39324 NV3089_IMAGE_IN_SIZE 2015-02-10 15:51:45 +03:00
Raul Tambre dfb2598e41 Fixed conflicts 2015-02-09 15:22:04 +02:00
Raul Tambre cd8bcd4c02 Various improvements 2015-02-09 15:06:46 +02:00
Nekotekina 4e28a007c8 NV3089_IMAGE_IN_SIZE 2015-02-09 01:44:55 +03:00
B1ackDaemon 4ba915bbdd Merge pull request #996 from Nekotekina/master
Reservations improved
2015-02-08 22:08:09 +02:00
Nekotekina 31bbf56ff1 Reservations improved 2015-02-08 18:25:50 +03:00
Nekotekina 19acaf3f86 Bugfix, ECIWX/ECOWX disabled 2015-02-08 16:38:08 +03:00
B1ackDaemon 3080fb2806 Merge pull request #995 from darkf/trophy
Improve sceNpTrophy
2015-02-08 15:12:22 +02:00
darkf bddff3b70a Improve sceNpTrophy 2015-02-08 03:37:10 -08:00
B1ackDaemon 9d9a7cf370 Merge pull request #993 from Nekotekina/master
Bugfix
2015-02-08 00:20:52 +02:00
Nekotekina fcbbdc87fc Bugfix 2015-02-08 01:09:23 +03:00
B1ackDaemon 71292a7617 Merge pull request #992 from Nekotekina/master
Reservations reimplemented
2015-02-07 22:21:51 +02:00
Nekotekina 90c021fc31 Small fix 2015-02-07 23:06:35 +03:00
Nekotekina e70875ad5c Linux fix 2015-02-07 18:35:54 +03:00
Nekotekina 6aef58318c Fix 2 2015-02-07 17:13:32 +03:00
Nekotekina c9f994d92d Fix 1 2015-02-07 17:12:39 +03:00
Nekotekina c71c5eb422 Compilation fix 2015-02-07 16:59:10 +03:00
Nekotekina 39db6bb461 Reservations improved 2015-02-07 16:46:42 +03:00
Nekotekina 1af4848324 New reservations (not finished) 2015-02-07 02:39:51 +03:00
Nekotekina c1c586a072 Some drafts 2015-02-06 03:23:37 +03:00
Nekotekina 5983813d12 ARMv7: new instructions
EOR_IMM, LDM, REV, STM
2015-02-05 21:13:27 +03:00
Nekotekina e93aaf3957 ARMv7: bugfix, some disasm subroutines 2015-02-05 15:18:10 +03:00
Nekotekina 819c955cca ARMv7: partial disasm functionality, bugfix 2015-02-05 02:52:47 +03:00
S Gopal Rajagopal daaa5059e9 SPURS: Fixed more issues 2015-02-04 20:59:34 +05:30
Nekotekina e3f55a75a3 TTY output improved; ARMv7: new instructions
ADC_REG, MVN_REG, ORR_REG, ROR_IMM, ROR_REG, TST_IMM, armv7_fmt improved
2015-02-04 15:16:10 +03:00
Nekotekina d5bbea097b ARMv7: new instructions, bugfix
ADC_IMM, ADR, AND_IMM, EOR_REG, LDRB_REG
2015-02-04 00:34:18 +03:00
S Gopal Rajagopal d1a7c85e95 Merge remote-tracking branch 'upstream/master' into spurs_taskset
Conflicts:
	rpcs3/emucore.vcxproj.filters
2015-02-03 23:12:26 +05:30
Nekotekina 2494fcf8d8 ARMv7: new instructions, bugfix
LDRD_LIT, LDRH_IMM, LDRH_LIT, LSR_IMM, ORR_IMM, STRD_IMM, STRD_REG,
UMULL
2015-02-03 17:48:20 +03:00
S Gopal Rajagopal 0191955ab6 SPURS: Fix more issues 2015-02-03 11:03:49 +05:30
Nekotekina 60f6566c78 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-02-03 01:20:08 +03:00
B1ackDaemon 32fd9223ff Merge pull request #990 from Bigpet/minifixes
fix #elif with no condition
2015-02-03 00:18:49 +02:00
Peter Tissen 8ce1de036a fix #elif with no condition 2015-02-02 22:38:47 +01:00
Nekotekina 5225ca8fc2 ARMv7: branch instrs fixed, new instructions
BIC_IMM, BIC_REG, RSB_IMM, LDR_LIT, STRB_REG, STRH_REG
Fixed initial stack size
2015-02-03 00:00:05 +03:00
S Gopal Rajagopal 67342781b7 SPURS: Fix some issues 2015-02-03 02:13:32 +05:30
B1ackDaemon c267ca2584 Merge pull request #989 from Nekotekina/master
Various improvements
2015-02-02 13:39:51 +02:00
B1ackDaemon fbee6d4017 Merge pull request #988 from Bigpet/restore_threadlist
re-enable threadlist in GUI
2015-02-02 13:11:20 +02:00
B1ackDaemon 4c52b65374 Merge pull request #987 from Bigpet/minifixes
Fix some small mistakes
2015-02-02 13:10:53 +02:00
Peter Tissen 13d2f8fa59 re-enable threadlist in GUI
This used to crash so it was removed. However I think this is a cruicial feature.
This is the only way to observe the stack-frames, registers and disasm around the PC
in a user friendly way.

The reason this caused crashes was that we got a reference to a std::vector and iterated
over it in one thread while another thread could modify it (and thereby invalidating the
iterators). The way I "fixed" it is to just copy the `std::vector<std::shared_ptr<...>>`
and iterate over the copy. This obviously has some overhead (locking the shared_ptr
counters and incrementing them). It also allows entities other than the Thread manager
to keep the Thread objects frome being deleted but that should not be a problem.
2015-02-02 11:33:49 +01:00
Peter Tissen bd65f81074 Fix some small mistakes
* replace_first and replace_all were in the wrong namespace, so they could not be linked
* replace_all did not work correctly (would loop indefinately)
* cellGcmUnmapIoAddress did not shif the size, so it would run past the end of the mmap array
* fsstat did use a 32-bit size on Windows, so files >4 gigs would return "stat failed"
2015-02-02 11:27:18 +01:00
Nekotekina 23c7028b2a ARMv7: ARM encoding introduced; bugfixes 2015-02-02 12:14:49 +03:00
B1ackDaemon c153215d6d Merge pull request #980 from tambry/Things
Test mode, RSXIO changes reverted and experimental DMA implementation
2015-02-02 09:07:07 +02:00
S Gopal Rajagopal 2c70f5168a SPURS: Reorder, rename and some cleanup 2015-02-02 09:02:38 +05:30
Nekotekina dab80497bb ARMv7: bugfix, loader improved, scePerf 2015-02-02 00:12:40 +03:00
S Gopal Rajagopal ba6ac5019e SPURS: Implement some portions of taskset policy manager 2015-02-02 01:32:40 +05:30
Nekotekina e5dd03dbcb ARMv7: argc, argv setting, LDRSB_IMM, bugfixes 2015-02-01 16:52:34 +03:00
Raul Tambre 899b06d6db Fix conflicts 2 2015-02-01 15:45:25 +02:00
Nekotekina 8a945a1a52 Fixes 2015-02-01 10:09:24 +03:00
S Gopal Rajagopal 61342946a4 SPURS: Implement some portions of taskset pm 2015-02-01 02:16:06 +05:30
Nekotekina 61a5459ccb TLS for ARMv7 threads 2015-01-31 19:44:26 +03:00
Hykem 12d1f8202d Merge pull request #986 from Nekotekina/master
RSX "refactoring" reverted
2015-01-31 13:44:37 +00:00
Nekotekina 384cb5e415 RSX "refactoring" reverted 2015-01-31 16:01:34 +03:00
S Gopal Rajagopal d8bed3b0ce SPURS: Implement some portions of the taskset PM 2015-01-31 03:35:03 +05:30
B1ackDaemon 29165af761 Merge pull request #985 from Nekotekina/master
Bugfix for TLS
2015-01-30 23:54:16 +02:00
Nekotekina 140a42fbcb Bugfix 2015-01-31 00:30:46 +03:00
B1ackDaemon 289ef4c6d4 Merge pull request #984 from Nekotekina/master
Function stubs for PSV
2015-01-30 23:22:30 +02:00
S Gopal Rajagopal f7b7c234b7 SPURS: Implement some SPU thread functions used by the system service module 2015-01-31 01:32:07 +05:30
Nekotekina 4ea1b8cffc Fixed TLS for PPU threads 2015-01-30 23:01:13 +03:00
S Gopal Rajagopal 507638e6d8 SPURS: Update system service workload to use lock line reservations 2015-01-31 00:36:58 +05:30
Nekotekina 2be045593a Compilation fix 2015-01-30 20:41:17 +03:00
Nekotekina bdd458d2ae Some functions added 2015-01-30 20:19:11 +03:00
Nekotekina 6cab4d7100 Some functions added 2015-01-30 15:19:01 +03:00
Nekotekina cd6f95c90d Some functions added 2015-01-30 13:48:12 +03:00
Nekotekina 35898a6cdf Some functions added 2015-01-30 02:58:53 +03:00
Nekotekina 74b6d5c2ed Some functions added 2015-01-30 00:42:53 +03:00
Nekotekina 6c40dc0631 Some functions added 2015-01-29 20:42:51 +03:00
Raul Tambre a671c43862 Fix conflicts 2015-01-29 18:28:39 +02:00
Nekotekina 62c8f2ac34 ARMv7: stubs for other modules, loader improved 2015-01-29 18:48:05 +03:00
S Gopal Rajagopal 62e2d8d9a7 SPURS: Update kernel to use lock line reservations 2015-01-29 20:20:34 +05:30
B1ackDaemon 1fa301b719 Merge pull request #981 from Nekotekina/master
ARMv7 progress, some changes in vm_ptr
2015-01-29 01:57:42 +02:00
S Gopal Rajagopal a7728c9067 SPURS: Document some parts of taskset policy module 2015-01-28 23:48:06 +05:30
Nekotekina e508d6db5d sceGxm stub 2015-01-28 17:17:12 +03:00
Raul Tambre 084106ced6 Disable DMA writes and add copyright notices 2015-01-28 15:17:13 +02:00
Nekotekina 579a88b7c4 vm_ptr: function format changed 2015-01-28 15:59:16 +03:00
Nekotekina 1c4db01e19 sceDisplay, sceDeci4p stub 2015-01-28 01:39:16 +03:00
Nekotekina 14efde9190 ARMv7: LDRB_IMM, STRB_IMM 2015-01-27 22:57:44 +03:00
Raul Tambre e12cfc89de Experimental DMA implementation, bug fixes
The experimental DMA implementation is ported from Nucleus.
2015-01-27 21:04:40 +02:00
Raul Tambre 3a51a6ded7 Revert RSXIO changes
This revert fixes many games, while seeming to break none.
2015-01-27 19:22:56 +02:00
Raul Tambre 0e8ea4f27c Merge remote-tracking branch 'upstream/master' into Things 2015-01-27 18:54:28 +02:00
Raul Tambre d48617a3e8 Merge pull request #979 from tambry/CompileFix
Fix compiling
2015-01-27 18:48:41 +02:00
Raul Tambre f81b00d488 Fix compiling 2015-01-27 17:34:50 +02:00
Raul Tambre f15c679fea Add support for "test mode"
Since @devmapal hasn't made a PR for this and this would be probably
useful for Coveralls and unit tests I'm making a PR for it myself.

More info:

https://github.com/devmapal/rpcs3/commit/c72f5d40f521b955faec024e6b788aa1e027ccfc
2015-01-27 17:14:15 +02:00
Raul Tambre 095608530f Merge pull request #976 from tambry/Fixes
Various fixes and improvements
2015-01-27 16:54:59 +02:00
Nekotekina 912e3fc213 sceCtrl stub 2015-01-27 04:39:43 +03:00
Nekotekina 3141cc9bc7 NIDs fix 2015-01-27 04:26:05 +03:00
Nekotekina 81340e9d5c scePerf stub, sceSysmodule, sema, ef 2015-01-27 03:19:51 +03:00
Raul Tambre 78a92c7d43 More fixes and fixes to previous fixes 2015-01-26 21:01:47 +02:00
Raul Tambre 31dcdea27b Add Coveralls badge
Start making unit tests now!
2015-01-26 20:53:00 +02:00
S Gopal Rajagopal 2e2f92f4f6 SPURS: Implement some portions of taskset policy module 2015-01-26 20:15:58 +05:30
Nekotekina a7d85480a8 Fixes 2015-01-26 15:55:26 +03:00
Nekotekina 12c13e6193 Fix 2015-01-26 09:13:11 +03:00
Nekotekina 9350476263 psv_object_list_t template concept 2015-01-26 01:38:50 +03:00
Hykem 9d6dc46812 Merge pull request #977 from Nekotekina/master
ARMv7 changes
2015-01-25 20:18:59 +00:00
Nekotekina 6d1c9f2764 Some warnings fixed 2015-01-25 19:23:24 +03:00
Nekotekina 94b0d9dfd5 ARMv7: IO funcs registered, u64/s64 stack arg support 2015-01-25 02:34:40 +03:00
Nekotekina 23923af487 ARMv7: Some functions registered, u64/s64 arg/result support 2015-01-24 23:48:45 +03:00
Raul Tambre be50130c3f Various fixes
Fixes to dead code and a couple self-assignings
2015-01-24 21:50:26 +02:00
Raul Tambre 94c81c73c5 Implement more FP instructions 2015-01-24 21:30:36 +02:00
Raul Tambre 23a5cd5cff Small fix to cellMsgDialogOpen2 2015-01-24 21:21:19 +02:00
Nekotekina 08c0c90a05 Some functions registered 2015-01-24 03:18:25 +03:00
Nekotekina 2647b77c01 sceLibKernel.h added 2015-01-24 00:48:14 +03:00
Nekotekina 55a2a5c8e5 ARMv7: CLZ, MVN_IMM, UXTB implemented 2015-01-23 22:36:35 +03:00
S Gopal Rajagopal 430aa9af89 SPURS: Implement cellSpursGetWorkloadData and cellSpursLookUpTasksetAddress 2015-01-24 00:41:29 +05:30
S Gopal Rajagopal 173fb060cb SPURS: Improve the readability of the event flag functions 2015-01-24 00:17:37 +05:30
Nekotekina 47e2e0bd58 ARMv7 interpreter refactoring 2015-01-23 20:25:36 +03:00
Raul Tambre f2e2786959 Merge pull request #975 from Nekotekina/master
ARMv7 changes
2015-01-23 16:55:13 +02:00
Nekotekina 4f706ed69c ++ 2015-01-23 15:57:50 +03:00
Nekotekina bef2ee8f72 ARMv7: MUL implemented 2015-01-23 06:50:14 +03:00
Nekotekina ca3e82341d sceLibc: sprintf() 2015-01-23 04:47:55 +03:00
Nekotekina b4c4c4cc89 Small update 2015-01-23 02:47:28 +03:00
S Gopal Rajagopal 8717bdffa9 SPURS: Implement cellSpursEventFlagWait and cellSpursEventFlagSet. Also modify implementation to make use of vm::var 2015-01-23 03:01:46 +05:30
Nekotekina cbd56fc4f5 ARMv7 opcode table fixed 2015-01-22 23:35:22 +03:00
Nekotekina e01528137e LDRH opcodes 2015-01-22 22:34:03 +03:00
Nekotekina 15e946053b More opcodes 2015-01-22 21:42:03 +03:00
Raul Tambre a7e4e07a80 Merge pull request #973 from sb2130/small-fix
small fix on loader::load(vfsStream& stream)
2015-01-22 16:30:33 +02:00
sb2130 3e40f22d15 small fix on loader::load(vfsStream& stream)
i->get_error_code() would have been changed in the if brace
2015-01-22 13:44:33 +08:00
Nekotekina 4246d83f2a More opcodes 2015-01-22 04:58:20 +03:00
Nekotekina 07a2e0b55a fmt::format fixed 2015-01-22 02:45:50 +03:00
Nekotekina ec3c899955 Some bug fixed 2015-01-22 02:12:49 +03:00
Nekotekina 1a5d5c96ed Compilation fix 2015-01-22 00:39:25 +03:00
Nekotekina 79d03ece66 ARMv7 decoder improved 2015-01-22 00:09:37 +03:00
Nekotekina 6069be7a93 Some code moved to ARMv7Decoder.cpp 2015-01-21 20:33:24 +03:00
Nekotekina ab501842c8 ARMv7: V* instructions draft 2015-01-21 20:15:04 +03:00
Nekotekina aead66ccbf Some refactoring 2015-01-21 18:18:26 +03:00
Nekotekina 8660b41833 Compilation fix 2015-01-21 17:43:45 +03:00
Nekotekina 509e09c2c5 ARMv7Callback.h, psv modules initialization fixed
sceLibc: __cxa_atexit, __aeabi_atexit
2015-01-21 17:34:05 +03:00
Nekotekina 506951a5a4 sceLibc: memset() 2015-01-21 14:38:24 +03:00
Nekotekina ab5dd3ae6f Another attempt 2015-01-21 02:41:56 +03:00
Nekotekina 0cd03ca9e6 psv_log_base initialization fixed 2015-01-21 02:29:54 +03:00
Nekotekina f3ee2ac9ef Compilation fix 2015-01-21 01:46:59 +03:00
Nekotekina 2d7bf06dea ARMv7: LDR_REG, LDRD_IMM, LDREX, STREX
sceLibc: printf() improved
sceLibKernel: sceKernelGetThreadId(), sceKernelWaitThreadEnd()
2015-01-21 01:29:33 +03:00
S Gopal Rajagopal 411dfd9a3f Merge remote-tracking branch 'upstream/master' into spurs_taskset
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
	rpcs3/emucore.vcxproj.filters
2015-01-21 01:13:53 +05:30
S Gopal Rajagopal 17f34f5127 SPURS: Implement cellSpursSendSignal, cellSpursSendWorkloadSignal and some cellSpursEventFlag functions 2015-01-21 00:47:20 +05:30
Nekotekina 5dd3437da9 ARMv7Context, some opcodes added 2015-01-20 18:06:15 +03:00
B1ackDaemon 6a2eefaf3f Merge pull request #971 from Nekotekina/master
Optimization and some restrictions for ppu/armv7 function prototypes
2015-01-20 01:58:07 +02:00
Nekotekina ec2e53dc6b Formatting changes 2015-01-20 02:15:43 +03:00
Nekotekina 36a134798b Small vm fix 2015-01-20 00:30:33 +03:00
Nekotekina 5195b2b1b4 RealToVirtualAddr became vm::get_addr() 2015-01-19 22:41:31 +03:00
Nekotekina c4558d2ca7 cast_armv7_gpr added 2015-01-19 21:02:33 +03:00
Nekotekina 6ec6303933 Compilation fix 2015-01-19 19:59:07 +03:00
Nekotekina 1629feb15e vm::ptr::make() fixed, added to_le() method 2015-01-19 19:30:35 +03:00
Nekotekina 8ecf3dcc80 Compilation fix 2015-01-19 17:34:11 +03:00
Nekotekina f3c9143a81 cast_to_ppu_gpr(), cast_from_ppu_gpr() updated 2015-01-19 17:16:31 +03:00
Nekotekina 3428499492 fmt::to_udec(), fmt::to_sdec() 2015-01-19 16:31:02 +03:00
Nekotekina 0d28f378a7 fmt::format() optimization (fmt::unveil template) 2015-01-19 01:54:56 +03:00
Nekotekina 87f1a9d9dc Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-01-19 00:29:41 +03:00
B1ackDaemon e8d9ea116a Merge pull request #970 from raven02/patch-5
FP: switch to version 420
2015-01-18 23:04:44 +02:00
raven02 2c98a37512 Init: switch to version 420 layout (binding = 0) 2015-01-19 04:42:46 +08:00
raven02 546619ee24 VP: switch to version 420 2015-01-19 04:42:00 +08:00
raven02 7880753099 FP: switch to version 420 2015-01-19 04:41:22 +08:00
B1ackDaemon d9dd3a7eda Merge pull request #969 from achurch/spu-interpreter-fixes
Fix SPU interpreter to match real hardware
2015-01-18 20:54:12 +02:00
B1ackDaemon 9709f7f821 Merge pull request #968 from achurch/ppu-interpreter-fixes
Implement FPU rounding mode and exception checking in the PPU interpreter.
2015-01-18 20:54:08 +02:00
Andrew Church e64f6a1db3 Implement full floating-point support. 2015-01-19 03:19:10 +09:00
Andrew Church 4375422c09 Implement the mfspr and mtspr instructions. 2015-01-19 03:18:36 +09:00
Andrew Church 03b059c1d5 Implement the SRR0 register. 2015-01-19 03:18:03 +09:00
Andrew Church a87de1b565 Implement the FPSCR register. 2015-01-19 03:17:51 +09:00
Nekotekina 561e7cd5a9 Compilation fix 2015-01-18 17:30:24 +03:00
Nekotekina 6545df2b15 Exception handling fix 2015-01-18 16:57:39 +03:00
Andrew Church 3a87a40593 Implement host FP exception checking for PPU floating-point instructions. 2015-01-18 21:14:31 +09:00
Andrew Church 04902965fe Set host FP rounding mode for PPU floating-point instructions. 2015-01-18 21:14:19 +09:00
Raul Tambre 6627cc9666 Let Coverity run itself only on coverity_scan branch 2015-01-18 13:51:40 +02:00
DHrpcs3 1bf9e41c26 Forgot this one 2015-01-18 13:16:24 +02:00
DHrpcs3 482d470bf2 Small RSX fixes
- Fixed constants offset in FP decompiler.
- Fixed vertex textures initialization.
2015-01-18 12:51:30 +02:00
Raul Tambre 7da5714fd9 Try to fix Coverity Scan 2015-01-18 12:13:36 +02:00
Raul Tambre a792bae121 Add Coverity Scan build uploading through Travis
Hopefully I didn't break anything...
2015-01-18 11:28:21 +02:00
Raul Tambre 7c2b2620c1 Add Coverity Scan badge 2015-01-18 11:18:53 +02:00
B1ackDaemon 26f1e2c9e3 Merge pull request #965 from Nekotekina/master
cellAudio update, thread_t
2015-01-18 02:40:03 +02:00
B1ackDaemon 10150957ff Merge pull request #964 from achurch/ppu-interpreter-fixes
Implement missing and fix broken PPU instructions in the interpreter.
2015-01-18 01:11:06 +02:00
Nekotekina d557ba2d97 Audio format changed to 8ch 2015-01-18 02:01:08 +03:00
Andrew Church c9df9c93ed Implement VSCR_NJ for all vector FP instructions. 2015-01-18 07:05:48 +09:00
Andrew Church 9a310c312e Fix intermediate truncation in vector FP fused multiply-add. 2015-01-18 07:05:38 +09:00
Andrew Church 3eb3f66e96 Fix vmaxfp/vminfp with mixed signs of zero. 2015-01-18 07:05:30 +09:00
Andrew Church 10c706d9a5 Handle NaNs correctly in vector FP instructions. 2015-01-18 07:05:18 +09:00
Andrew Church 2e2dbf6c33 Reduce code duplication for vcmp instructions. 2015-01-18 07:05:08 +09:00
Andrew Church 0fa0946a46 Fix vsumsws clobbering input registers and reading from the wrong word. 2015-01-18 07:04:56 +09:00
Andrew Church 14e0cbde9c Catch invalid and zero-division exceptions in FPU instructions. 2015-01-18 07:04:45 +09:00
Andrew Church 43e74a9c61 Fix intermediate rounding of fused multiply-add instructions. 2015-01-18 07:04:35 +09:00
Andrew Church fee20573d2 Fix fcti rounding. 2015-01-18 07:04:22 +09:00
Andrew Church 5fd88bf801 Fix invalid double constant. 2015-01-18 07:04:13 +09:00
Andrew Church 46fa645555 Reduce code duplication in FPU instruction implementations. 2015-01-18 07:04:01 +09:00
Andrew Church bbe12bf4b1 Fix mftbu returning the wrong half of the timebase register. 2015-01-18 07:03:48 +09:00
Andrew Church 74cbf1877b Fix stwcx. and stdcx. not properly clearing the reservation address. 2015-01-18 07:03:16 +09:00
Andrew Church d78fe3b4d4 Fix detection of denormals in frsp. 2015-01-18 07:03:02 +09:00
Andrew Church b7761beee9 Fix lfs/stfs with SNaNs. 2015-01-18 07:02:50 +09:00
Andrew Church 42b55c60e7 Fix fcmp. 2015-01-18 07:02:18 +09:00
Andrew Church 6cd3310171 Fix FPSCR manipulation instructions. 2015-01-18 07:02:11 +09:00
Andrew Church ee508f85b4 Fix handling of VRSAVE, and remove references to nonexistent USPRG registers. 2015-01-18 07:01:52 +09:00
Andrew Church e47d21024c Fix mtcrf. 2015-01-18 07:01:25 +09:00
Andrew Church 54827f7267 Fix conditional bcctr. 2015-01-18 07:01:16 +09:00
Andrew Church ae4420e604 Implement missing PPU instructions. 2015-01-18 07:00:58 +09:00
Nekotekina 011362bf1c Things updated 2015-01-17 21:33:39 +03:00
Nekotekina a6754e29a6 Compilation fix 2015-01-17 19:36:23 +03:00
Nekotekina b897a5d20a cellAudio, thread_t improvements, pause/resume callback 2015-01-17 19:14:58 +03:00
Nekotekina 4dae27c1d4 squeue_t updated 2015-01-16 20:09:53 +03:00
Nekotekina fd06f70387 cellAudio updated, thread_t updated 2015-01-16 17:36:53 +03:00
Hykem 692502b177 Merge pull request #962 from Zangetsu38/master
Fix Git version and Remove old Platform on emucore.vcxproj
2015-01-15 16:10:48 +00:00
Zangetsu38 0a7b9c03e4 Fix My error 2015-01-15 04:18:44 +01:00
Dante38490 edd4359554 Merge branch 'master' of https://github.com/Zangetsu38/rpcs3 2015-01-15 04:16:54 +01:00
Dante38490 e61849c3c4 Fix correct name file 2015-01-15 04:16:14 +01:00
Zangetsu38 6db1ee634d Merge pull request #3 from Bigpet/master
forgot to remove somicolon
2015-01-15 04:15:34 +01:00
Dante38490 1cf4791f95 Fix correct PATH 2015-01-15 04:03:25 +01:00
Peter Tissen 57361e2943 forgot to remove somicolon 2015-01-15 04:00:43 +01:00
Zangetsu38 e69f76de87 Merge pull request #2 from Bigpet/master
don't distinguish between windows and unix for no reason
2015-01-15 03:47:22 +01:00
Peter Tissen 71225da135 don't distinguish between windows and unix for no reason 2015-01-15 03:34:03 +01:00
Dante38490 d3c9aff2f4 Fix Typho 2015-01-15 02:26:49 +01:00
Dante38490 79e8ed47d5 Fix Linux 2 2015-01-15 00:46:42 +01:00
Dante38490 e5b59a6bad Fix Compile Linux 2015-01-14 23:48:55 +01:00
Dante38490 3da3eee15f Fix Git version and Remove old Platform on emucore.vcxproj 2015-01-14 22:46:02 +01:00
Nekotekina 42b748a881 Syscall name resolving improved 2015-01-14 22:45:36 +03:00
B1ackDaemon a43e03b549 Merge pull request #961 from Nekotekina/master
Some bugs fixed
2015-01-14 20:00:21 +02:00
Nekotekina 809ba66290 vm::cast in PPUInterpreter 2015-01-14 19:48:50 +03:00
Nekotekina 4237043f38 Compilation fix 2015-01-14 17:31:24 +03:00
Nekotekina cdeac05e88 vm::cast 2015-01-14 16:57:19 +03:00
Nekotekina 824b0f832a Compilation fix 2015-01-14 02:32:44 +03:00
Nekotekina bf7cf0ee9d .ToLE() changed to .value() or removed 2015-01-14 02:08:00 +03:00
Hykem 8df825abc5 Merge pull request #960 from Nekotekina/master
PKG installer fixed
2015-01-13 18:08:41 +00:00
Nekotekina f1f51521f4 PKG installer fixed 2015-01-13 20:38:32 +03:00
Nekotekina 88fd748dd5 Experimental vm::ptr support for fmt::format 2015-01-13 20:14:07 +03:00
Nekotekina 1c4e89d2bf Formatting fixes, ToBE() replaced with data() 2015-01-13 17:54:36 +03:00
B1ackDaemon f4c712dafc Merge pull request #959 from Nekotekina/master
Experimental function fmt::format
2015-01-13 03:02:16 +02:00
Nekotekina fe86869f37 Fix 2015-01-13 03:10:39 +03:00
Nekotekina 25672cdc47 cntlz fix 2015-01-13 00:32:53 +03:00
Nekotekina 7372583cab Compilation fix 3 2015-01-12 23:37:29 +03:00
Nekotekina e40347dd53 Compilation fix 2 2015-01-12 22:31:11 +03:00
Nekotekina b90540c1eb Compilation fix 2015-01-12 22:11:55 +03:00
Nekotekina b6ec618f97 Experimental template formatting with be_t<> support 2015-01-12 21:12:06 +03:00
Nekotekina ad2b2c9c62 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-01-12 16:46:55 +03:00
B1ackDaemon 11fd944f53 Merge pull request #957 from O1L/master
AudioThread improvements
2015-01-12 15:17:48 +02:00
Oil 0648f1d0a2 Build fix 2015-01-11 16:21:53 +04:00
Nekotekina c89d2cf138 a128() removed 2015-01-11 15:13:18 +03:00
Nekotekina da09477be8 Callback syntax changed
call() became overloaded () operator
2015-01-11 13:43:40 +03:00
Nekotekina c36e692411 be_storage_t
BE data is internally stored as u8, u16, u32, u64, u128 value (decreases
amount of reinterpret casts in be<>le conversions)
2015-01-11 12:33:05 +03:00
Oil b5c33ec26b Improved AudioThread interface, added XAudio2 audio output 2015-01-11 03:46:10 +04:00
Oil e6e60795b7 Added minidx9 as a submodule 2015-01-11 01:19:21 +04:00
B1ackDaemon afe221c29d Merge pull request #956 from Nekotekina/master
cellAudio fixes, Linux fixes
2015-01-10 21:32:02 +02:00
Nekotekina 5928b85ec1 cellAudio fix (forgotten functions) 2015-01-10 00:04:17 +03:00
Nekotekina 70ee62f43f cellAudioAdd(2/6ch)Data fixed 2015-01-09 23:11:21 +03:00
Nekotekina 056f93f3e4 Linux fixes 2015-01-09 01:17:26 +03:00
B1ackDaemon 1d0f2c16e0 Merge pull request #955 from Nekotekina/master
vm::stackvar, callback args and syscall results fixed
2015-01-08 00:58:24 +02:00
Nekotekina bd71c1200e CB_FUNC/SC_FUNC fixed 2015-01-07 19:44:47 +03:00
Nekotekina a1b1f6be63 Compilation fix 2 2015-01-07 05:31:17 +03:00
Nekotekina 5f27e9b6e7 Compilation fix 2015-01-07 05:27:35 +03:00
Nekotekina 3f44e07b7c vm::stackvar (experimental)
Should be convenient for small allocations which would be done on stack
on real console
2015-01-07 05:14:00 +03:00
Hykem 5ffc6ffca5 Merge pull request #954 from Nekotekina/master
PKG installer fix + experimental optimization
2015-01-05 16:41:52 +00:00
Hykem b756b80786 Merge pull request #953 from raven02/patch-4
RSX : last few cmd refactoring
2015-01-05 16:41:38 +00:00
S Gopal Rajagopal b01c17d1a0 SPURS: Add locks in the system service workload 2015-01-05 21:54:03 +05:30
S Gopal Rajagopal 2d94db4945 Merge upstream 2015-01-05 16:44:26 +05:30
Nekotekina 181854fc35 cellSaveData reorganized a bit 2015-01-05 02:07:46 +03:00
Nekotekina 92c9a0a9aa Damned fix for damned terraria 2015-01-05 01:45:09 +03:00
Nekotekina ba5e2e3f0f Fix 3 2015-01-05 01:29:51 +03:00
Nekotekina 43ebd4450d Fix 2 2015-01-05 01:01:43 +03:00
Nekotekina 63df801b03 Compilation fix 2015-01-05 00:59:17 +03:00
Nekotekina 6069071e4d Code moved, attempt to make SIGSEGV handler 2015-01-05 00:46:31 +03:00
raven02 12edfeb216 RSX : last few cmd refactoring 2015-01-05 04:08:26 +08:00
Nekotekina 27cfdc897b PKG installer improved
Now it doesn't attempt to delete existing directory and overwrites only
existing files. It should fix installing updates.
2015-01-04 19:44:54 +03:00
Nekotekina 22497757e9 Prefix decoding improved 2015-01-04 18:33:25 +03:00
Nekotekina 896097da0d Experimental RawSPU MMIO implementation 2015-01-04 15:35:47 +03:00
Raul Tambre 3d2aa622f1 Merge pull request #951 from raven02/patch-2
RSX disable front face
2015-01-04 09:47:09 +02:00
raven02 ec7b351cf0 RSX disable front face 2015-01-04 06:38:06 +08:00
Raul Tambre fc97e3d2b8 Merge pull request #949 from Nekotekina/master
Sync primitives fix
2015-01-03 21:17:42 +02:00
Raul Tambre 1d914d820b Merge pull request #950 from raven02/patch-1
RSX : few more refactoring
2015-01-03 21:14:56 +02:00
raven02 d2e6f6fef0 RSX : few more cmd refactoring 2015-01-04 01:00:56 +08:00
S Gopal Rajagopal c1df79b713 SPURS: Integrate SPURS kernel and system service workload. Also, fixed some bugs. 2015-01-03 15:59:22 +05:30
Raul Tambre 3181c566c0 Merge pull request #947 from raven02/rsx
RSX : inline fragment naming & structure as vertex shader one
2015-01-03 10:28:55 +02:00
Nekotekina d8664c8da4 Bugfix 2015-01-02 19:02:31 +03:00
Nekotekina 318d7276c0 Warning fix 2015-01-02 18:29:57 +03:00
Nekotekina 658079af55 Compilation fix 2 2015-01-02 15:32:54 +03:00
Nekotekina b61bcb6ad6 Compilation fix 2015-01-02 14:53:55 +03:00
raven02 fffadb975b RSX : inline fragment naming as vertex shader 2015-01-02 08:06:42 +08:00
Nekotekina f3cd908d5c Sync primitives reworked
(rwlock rewritten)
2015-01-02 02:41:29 +03:00
S Gopal Rajagopal 4a83d43a8f SPURS: System service workload 2015-01-02 01:33:36 +05:30
B1ackDaemon ac75b62f4d Merge pull request #946 from raven02/patch-14
RSX: create depth buffer only when required
2015-01-01 17:56:10 +02:00
raven02 8616d340bb RSX: create depth buffer only when required 2015-01-01 22:54:46 +08:00
Raul Tambre 406eff5ef0 Merge pull request #944 from tambry/master
Implement cellPadPeriphGetInfo
2015-01-01 15:32:15 +02:00
Raul Tambre 9873d909d0 Implement cellPadPeriphGetInfo
Also minor fixes
2015-01-01 12:25:37 +02:00
Raul Tambre 2d46830ba8 Merge pull request #943 from raven02/patch-12
RSX: add alpha func/ref , depth func/mask and bug fix
2015-01-01 11:17:18 +02:00
raven02 a7ca705552 RSX: add alpha func/ref , depth func/mask and bug fix 2015-01-01 12:31:40 +08:00
S Gopal Rajagopal 6664116042 SPURS: System service workload - initial commit 2015-01-01 01:51:22 +05:30
B1ackDaemon 944b9f3ae6 Merge pull request #942 from tambry/SubDisplay
Implement cellSubDisplayGetRequiredMemory
2014-12-31 12:23:31 +02:00
Raul Tambre 044dcb0790 Merge pull request #941 from raven02/patch-12
RSX : refactor glEnable cmd
2014-12-30 22:17:08 +02:00
Raul Tambre 29c1dc2c07 Implement cellSubDisplayGetRequiredMemory 2014-12-30 22:15:00 +02:00
raven02 3e3665a13b RSX: refactor glEnable cmd 2014-12-30 23:44:08 +08:00
B1ackDaemon 99a9a1e38d Merge pull request #940 from raven02/patch-11
RSX : add ClearColor() / ClearStencil() / ClearDepth() / ClearSurface()
2014-12-30 08:30:46 +02:00
raven02 d66825515d Fix compiling #1 2014-12-30 10:57:12 +08:00
raven02 669ebc594c Fix compiling 2014-12-30 06:26:41 +08:00
raven02 1b87f9312b RSX : add ClearColor() / ClearStencil() / ClearDepth() / ClearSurface() 2014-12-30 03:37:58 +08:00
B1ackDaemon 325dd0308b Merge pull request #939 from raven02/patch-10
FP: Implement LIT instruction
2014-12-29 02:55:22 +02:00
raven02 85d23e2c32 format fix 2014-12-29 06:53:31 +08:00
raven02 19e1631697 change to log_warning 2014-12-29 06:43:29 +08:00
raven02 24a19a0dd9 format fix 2014-12-29 06:42:08 +08:00
raven02 51c107656f Temporary disable BRI instruction 2014-12-29 06:39:00 +08:00
raven02 06907cb942 format fix 2014-12-29 06:37:32 +08:00
raven02 b81e0f9e4c Remove duplicate code 2014-12-29 06:22:54 +08:00
raven02 4907dedf69 RSX: Implement LIT instruction 2014-12-29 06:21:34 +08:00
B1ackDaemon af25d47dd9 Merge pull request #938 from Nekotekina/master
Various changes
2014-12-28 20:51:23 +02:00
Nekotekina f16ec62b4a Bugfix 2014-12-28 18:53:02 +03:00
Nekotekina 1636531d4a Conflicts fixed 2014-12-28 16:52:04 +03:00
Nekotekina 6cd2665e12 Conflicts fixed 2014-12-28 16:29:01 +03:00
B1ackDaemon 4b8d617364 Merge pull request #936 from tambry/FPImprovements
Fragment Program improvements and additions
2014-12-28 15:17:42 +02:00
B1ackDaemon 31ca42bf1a Merge pull request #935 from raven02/patch-9
RSX: add few nv4097 cmds and simplify case switch
2014-12-28 15:17:35 +02:00
Nekotekina d11bdfedb6 GSFrame caption fixed 2014-12-28 16:15:53 +03:00
Nekotekina 653db28675 removed excessive stuff 2014-12-28 16:15:22 +03:00
raven02 4701affbf9 minor changes 2014-12-28 21:01:30 +08:00
raven02 63a559310c case range switch 2014-12-28 21:00:20 +08:00
Raul Tambre 108e879266 Fragment Program improvements and additions
+ Added TODOs for REFL, LIT, LRP, BEM, TEXBEM and TXPBEM
- Removed the warning message about TEX_SRB texture projection being
used
* Implemented packSnorm2x16, unpackSnorm2x16, packSnorm4x8 and
unpackSnorm4x8. All need more testing to be confirmed as working
2014-12-28 09:53:01 +02:00
raven02 b610155956 one more cmd 2014-12-28 08:46:50 +08:00
raven02 8e88e531de few more cmd 2014-12-28 08:43:14 +08:00
raven02 8690c02972 RSX : log NV4097_SET_CONTEXT_DMA_REPORT 2014-12-28 08:35:56 +08:00
B1ackDaemon 0388ba5032 Merge pull request #933 from O1L/master
Some changes in LLEModulesManager and cellAudio
2014-12-27 22:20:36 +02:00
Oil 2a6f4e19cc Some changes in LLEModulesManager and cellAudio 2014-12-27 21:25:51 +04:00
B1ackDaemon e79a7c2261 Merge pull request #932 from tambry/FragmentProgramFix
Fix TXB instruction
2014-12-27 13:47:59 +02:00
Raul Tambre 240c209360 Fix TXB instruction 2014-12-27 11:00:44 +02:00
B1ackDaemon 411e21210c Merge pull request #931 from raven02/patch-7
RSX break fix: fall back the case switch
2014-12-27 00:58:29 +02:00
B1ackDaemon c8ba041a38 Merge pull request #930 from tambry/StatFixesAndFragment
Fragment program improvements and stat fixes
2014-12-26 22:57:29 +02:00
raven02 b9a8c6414d RSX: fall back the case switch 2014-12-27 04:15:00 +08:00
Nekotekina dabac03820 Revert "Formatting RSX thread"
This reverts commit 97d50a0692.
2014-12-26 21:32:53 +03:00
Raul Tambre 0cd3cd3e05 cellFsStat fix and other fixes 2014-12-26 18:16:57 +02:00
Raul Tambre 1bde52623b Fragment Program improvements
* Implement TXP (Needs testing)
* Implement TXB
* Implement TXL
2014-12-26 17:56:55 +02:00
Nekotekina be2d606193 Conflicts fixed 2014-12-26 17:06:36 +03:00
Raul Tambre d6989c1847 Merge pull request #927 from raven02/patch-5
Formatting RSX thread
2014-12-26 10:20:18 +02:00
Raul Tambre cbffd14539 Merge pull request #925 from tambry/SaveDataTimes
Improvements to saving and cellFsStat
2014-12-26 10:20:07 +02:00
Raul Tambre 052692ac8c Improvements to saving and cellFsStat 2014-12-26 10:06:12 +02:00
Raul Tambre 2c3e3b583a Merge pull request #928 from raven02/patch-6
ELF loader : small bug fix
2014-12-26 09:46:49 +02:00
raven02 98404e12c5 ELF loader : small bug fix 2014-12-26 15:26:43 +08:00
raven02 97d50a0692 Formatting RSX thread 2014-12-26 14:25:22 +08:00
B1ackDaemon 2c70cef453 Merge pull request #926 from raven02/patch-4
Not always flush in callback
2014-12-26 01:11:23 +02:00
Nekotekina 1491dcdc92 squeue_t fix 2 2014-12-26 01:58:43 +03:00
raven02 3f7e6c990f Not always flush in callback 2014-12-26 06:54:36 +08:00
Nekotekina bdbbde4d36 squeue_t fixed 2014-12-26 01:49:55 +03:00
Nekotekina c305949435 Compilation fix 2014-12-25 23:30:34 +03:00
Raul Tambre 00e87adcfd Merge pull request #924 from raven02/revert-867-patch-7
Revert "Check address is not null for cellGcmAddressToOffset"
2014-12-25 19:29:54 +02:00
raven02 bc8fba9cc4 Revert "Check address is not null for cellGcmAddressToOffset" 2014-12-26 00:46:33 +08:00
Raul Tambre 9a63754b43 Merge pull request #922 from darkf/string-search
Add a memory ASCII string search
2014-12-25 11:07:21 +02:00
darkf efd729d0b8 MemoryStringSearcher: drop superfluous qualifier 2014-12-25 00:53:56 -08:00
Raul Tambre e38dc93a66 Merge pull request #921 from darkf/savedata-fix
cellSaveData: Terminate callback loop when asked to
2014-12-25 10:44:10 +02:00
darkf efde3219bd cellSaveData: terminate callback loop when asked to 2014-12-25 00:32:18 -08:00
darkf a94a7d4495 Add a memory ASCII string search 2014-12-24 20:39:57 -08:00
Nekotekina 7613d749ec SQueue renamed and moved 2014-12-25 01:24:17 +03:00
B1ackDaemon 31aef6460d Merge pull request #920 from tambry/SailAndVideo
cellSail PAMF creation and 3D availability fix
2014-12-24 21:27:06 +02:00
Raul Tambre cf1bd9b61b Fix compiling 2014-12-24 21:03:52 +02:00
Raul Tambre 642e850dfe cellSail PAMF creation and 3D availability fix 2014-12-24 20:47:56 +02:00
Nekotekina 69388f032e cellFs functions merged 2014-12-24 21:19:59 +03:00
Nekotekina cbdc32e95e Kernel Explorer partially restored 2014-12-24 19:09:32 +03:00
Nekotekina d8239a39c9 std::shared_ptr in IdManager 2014-12-24 02:38:13 +03:00
Nekotekina b2de24db73 SMutex eliminated 2014-12-23 02:31:11 +03:00
Raul Tambre 27c76960b4 Merge pull request #918 from Dante38490/patch-1
Fix Size Setting panel
2014-12-22 17:25:21 +02:00
Raul Tambre 4f031c11c6 Merge pull request #916 from tambry/master
Update submodules
2014-12-22 13:53:13 +02:00
Nekotekina 0fb092f2a5 Syscalls: minor fixes 2014-12-22 03:56:04 +03:00
DHrpcs3 e1ea7a28c3 Fixed condition decompilation in vertex & fragment shaders
Added 30 & 60 modes to frame limiter
2014-12-22 01:10:22 +02:00
Dante38490 7464843e53 Update MainFrame.cpp
Fix Size Setting panel for Tab Graphic
2014-12-22 00:06:25 +01:00
B1ackDaemon 5f40f732a9 Merge pull request #917 from raven02/patch-2
Fix callback hangup in Arkedo game series
2014-12-21 23:52:20 +02:00
raven02 52467c54e3 Fix callback hangup in Adreko game series 2014-12-22 05:37:43 +08:00
DHrpcs3 969cf67ba8 Implemented frame limiter
Some errors in unpkg replaced with warnings
2014-12-21 22:42:15 +02:00
Raul Tambre 688e5a3af6 Fix compiling 2014-12-21 21:44:07 +02:00
S Gopal Rajagopal 52b342464b SPURS: Improve readability of SPURS1 kernel at the cost of some perormance 2014-12-22 01:07:53 +05:30
B1ackDaemon 0011a50c0b Merge pull request #915 from O1L/master
Show more information in GSFrame title, some changes in cellAudio
2014-12-21 19:52:40 +02:00
Oil b3be4d11e3 Show more information in GSFrame, some changes in cellAudio 2014-12-21 20:29:51 +04:00
Raul Tambre b2b31b0421 Update FFMPEG 2014-12-21 12:58:30 +02:00
Raul Tambre 5f3b25b43a Update ASMJIT 2014-12-21 12:56:38 +02:00
B1ackDaemon a9647152f7 Merge pull request #914 from raven02/patch-1
RSX : Reapply fmt::merge change & VFS change
2014-12-21 11:15:34 +02:00
raven02 e98d1c0cb7 Trophy.trp path change 2014-12-21 07:36:17 +08:00
raven02 1e6a533ac7 PARAM.SFO path change 2014-12-21 07:35:29 +08:00
raven02 c6a00e157d Reapply VFS change 2014-12-21 07:32:19 +08:00
raven02 0506bf0352 Reapply fmt::merge change 2014-12-21 07:30:30 +08:00
B1ackDaemon 7a61fd3055 Merge pull request #913 from raven02/patch-3
RSX: vertex data regression fix
2014-12-20 22:51:21 +02:00
S Gopal Rajagopal 698f4fd450 SPURS: Improve the readability of the SPURS2 kernel at the cost of some performance 2014-12-21 01:37:29 +05:30
raven02 7c9062fd3d fix :) 2014-12-21 01:54:01 +08:00
raven02 612d11bd03 Minor fix 2014-12-21 01:42:15 +08:00
raven02 c63f370d8b regression fix #1 2014-12-21 01:14:27 +08:00
raven02 c76dd371f3 RSX: vertex data regression fix 2014-12-21 01:13:10 +08:00
B1ackDaemon 5d6fb5a56b Merge pull request #911 from darkf/savedata_fix
cellSaveData fix
2014-12-20 14:20:27 +02:00
B1ackDaemon f231ebb0ad Merge pull request #910 from darkf/cellsail_fix
cellSail: fix wrong argument type
2014-12-20 14:20:23 +02:00
darkf e0ff129dd1 vfsLocalFile: log when Create fails 2014-12-20 03:46:09 -08:00
darkf 980b9aaab3 cellSaveData: allocate file list properly 2014-12-20 03:45:27 -08:00
darkf 29036504e6 cellSail: fix wrong argument type 2014-12-19 23:05:42 -08:00
Hykem d07328417f Merge pull request #909 from tambry/master
Revert "Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC"
2014-12-19 16:03:05 +00:00
Raul Tambre 2545372a76 Revert "Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC"
This reverts commit c5ca199163.
2014-12-19 17:19:23 +02:00
B1ackDaemon c1a6767187 Merge pull request #908 from tambry/FileOP
Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC
2014-12-19 16:45:47 +02:00
Raul Tambre c5ca199163 Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC 2014-12-19 16:02:11 +02:00
B1ackDaemon dd067847dd Merge pull request #907 from tambry/cellSailAndFixes
cellSail updates and many various fixes
2014-12-19 13:46:36 +02:00
Raul Tambre ce853bc252 cellSail updates and many various fixes 2014-12-19 13:31:52 +02:00
Nekotekina e9653f1029 cellMsgDialogOpen2(): argument checking improved 2014-12-19 02:18:44 +03:00
B1ackDaemon 83208d8b89 Merge pull request #905 from raven02/patch-2
Revert VFS and fmt::merge
2014-12-17 21:52:26 +02:00
raven02 37838a49ec Revert fmt::merge 2014-12-18 00:10:20 +08:00
raven02 52bf72787f Revert VFS 2014-12-18 00:05:29 +08:00
B1ackDaemon 621864be18 Merge pull request #904 from raven02/patch-1
Temporary disable compile_shader()
2014-12-17 17:21:19 +02:00
raven02 114550b0f7 Temporary disable compile_shader() 2014-12-17 22:59:28 +08:00
B1ackDaemon fb16583964 Merge pull request #903 from raven02/rsx
RSX: shaders fix and vertex texture implementation
2014-12-17 16:35:59 +02:00
raven02 3fc471eb32 RSX: shaders fix and vertex texture implementation 2014-12-17 22:01:59 +08:00
B1ackDaemon d2964c1fa4 Merge pull request #902 from darkf/fix_fixed
Minor fixes
2014-12-16 17:37:45 +02:00
B1ackDaemon 369bef5e1e Merge pull request #901 from raven02/patch-1
RSX: fix missing case break
2014-12-16 17:28:36 +02:00
darkf 8fa301ec05 cellMsgDialogOpen2: Don't segfault when given a null pointer 2014-12-16 07:07:33 -08:00
darkf 1dbc0b448a cellMsgDialog: Fix a few minor typos. 2014-12-16 07:04:59 -08:00
raven02 e27a1f98aa Fix missing break 2014-12-16 22:52:43 +08:00
S Gopal Rajagopal 5a60160035 SPURS: Added comments on CellSpurs fields 2014-12-16 09:12:50 +05:30
B1ackDaemon 9ca6bb9296 Merge pull request #900 from O1L/master
High rescale quality for icons, fixed removing of games in GameViewer
2014-12-15 21:15:31 +02:00
Oil 8ec5b1cd84 High rescale quality for icons in GameViewer, fixed removing of games in GameViewer 2014-12-15 21:38:12 +04:00
B1ackDaemon 181d593cee Merge pull request #899 from Survanium90/master
Added function "sys_process_is_stack"
2014-12-15 18:47:11 +02:00
Survanium90 eb9e6434f1 Added function "sys_process_is_stack" 2014-12-15 19:09:27 +03:00
B1ackDaemon 2b719b6dc0 Merge pull request #898 from tambry/DrmFunctions
Implement sys_game_process_exitspawn and fixes
2014-12-14 21:04:49 +02:00
Raul Tambre fc25abdbfd Fix compiling 2014-12-14 20:51:19 +02:00
B1ackDaemon 89d8c34cae Merge pull request #897 from raven02/patch-13
RSX : enum vec_opcode & sca_opcode
2014-12-14 20:34:29 +02:00
Raul Tambre b8d2343765 Implement sys_game_process_exitspawn and fixes 2014-12-14 19:14:26 +02:00
raven02 c0b4bf2f94 log error for unimplmented fpcode 2014-12-14 23:21:41 +08:00
raven02 96a992fadb enum sca_opcode and vec_opcode 2014-12-14 23:10:48 +08:00
raven02 32aa5ad415 RSX : enum vec_opcode & sc_opcode 2014-12-14 23:09:44 +08:00
Hykem 24c5e7d6cd Merge pull request #886 from Arkaran99/master
Avoid giving arguments by value for log
2014-12-14 13:11:50 +00:00
B1ackDaemon e5718ed264 Merge pull request #896 from tambry/SailThings
cellSail additions, updates and fixes
2014-12-14 12:02:36 +02:00
B1ackDaemon 7a4d851201 Merge pull request #895 from raven02/patch-12
Better fit the gameviewer and icon path fix for blu-ray disc
2014-12-14 12:02:27 +02:00
raven02 cb52ca220e vfs path fix 2014-12-14 17:36:32 +08:00
raven02 6c571b30d2 icon sizing fix 2014-12-14 16:21:38 +08:00
Raul Tambre ebe2a5e2cc cellSail additions, updates and fixes 2014-12-14 09:59:04 +02:00
raven02 8b4de95919 fix icon loading for blu-ray disc 2014-12-14 15:04:29 +08:00
raven02 7e2fa38519 sort name column by default 2014-12-14 14:54:26 +08:00
raven02 47fc7f22b0 mainframe resize 2014-12-14 14:48:24 +08:00
raven02 012af73844 Better fit the gameviewer 2014-12-14 14:47:06 +08:00
S Gopal Rajagopal 68cc9b2059 SPURS: Enable logging of taskset calls 2014-12-14 12:07:46 +05:30
S Gopal Rajagopal 53e0979f29 SPURS: Implement cellSpursCreateTask 2014-12-14 03:19:06 +05:30
B1ackDaemon 5d745a60dc Merge pull request #893 from Nekotekina/master
cellPamfReaderGetStreamInfo() improved
2014-12-13 22:43:57 +02:00
B1ackDaemon ff64f908be Merge pull request #892 from O1L/master
GUI: show game icons in GameViewer
2014-12-13 21:08:40 +02:00
S Gopal Rajagopal 40f5f73658 SPURS: Implement some taskset functions 2014-12-14 00:22:31 +05:30
B1ackDaemon 68ec7ac095 Merge pull request #891 from raven02/patch-11
RSX: Fixed BRI, Experimental BRA implementation
2014-12-13 20:51:28 +02:00
Oil 4ca8cb05fa Build fix 2014-12-13 21:51:40 +04:00
Oil 6bd041f800 GUI: show game icons in GameViewer 2014-12-13 21:27:34 +04:00
Nekotekina 982f7cba59 cellPamfReaderGetStreamInfo() improved 2014-12-13 19:54:01 +03:00
raven02 1b6bd42201 Minor fix 2014-12-14 00:39:28 +08:00
raven02 4967771df5 Add std::set<int> m_jump_lvls 2014-12-14 00:19:06 +08:00
raven02 a5705d3308 VP: Fixed BRI, Experimental BRA implementation 2014-12-14 00:17:23 +08:00
Hykem 0e81313477 Merge pull request #889 from Dante38490/patch-1
Fixed Path Rap file for decrypt .Edat
2014-12-13 13:49:05 +00:00
S Gopal Rajagopal 5dd15b3c47 SPURS: Implement create taskset 2014-12-13 01:42:09 +05:30
Dante38490 7a05ad7023 Fixed Path Rap file for decrypt .Edat 2014-12-12 17:31:48 +01:00
Hykem 52eb61736d Merge pull request #883 from MRebhan/patch-1
Update README.md
2014-12-12 15:38:55 +00:00
Hykem b48159b104 Merge pull request #888 from Nekotekina/master
DivX, MP3 codecs activated, cellPamf and cellDmux improvements
2014-12-12 15:38:26 +00:00
Nekotekina 154433b2e9 Bugfix 2014-12-12 04:27:27 +03:00
Nekotekina 058eb9e709 Demuxer improved 2014-12-12 03:21:34 +03:00
Nekotekina 8557614322 cellPamf improved 2014-12-11 22:25:11 +03:00
B1ackDaemon 937214bc59 Merge pull request #887 from gopalsr83/master
PPU: Corrected SC instruction format to comply with the PowerISA
2014-12-11 20:43:33 +02:00
B1ackDaemon 447580a6b7 Merge pull request #885 from tambry/Fixes
Minor fixes
2014-12-11 18:00:48 +02:00
Raul Tambre 418a12dd03 Minor fixes 2014-12-11 16:54:02 +02:00
S Gopal Rajagopal 5db254f3a5 PPU: Corrected SC instruction format to comply with the PowerISA 2014-12-11 19:13:17 +05:30
B1ackDaemon 530c17f4f7 Merge pull request #881 from O1L/master
ARMv7 decoder reworked.
2014-12-10 13:47:26 +02:00
S Gopal Rajagopal a254507be1 SPURS: Implement taskset attribute functions 2014-12-10 10:12:13 +05:30
Nekotekina 2b4f858caf Fixes 2014-12-09 20:24:50 +03:00
Nekotekina cb694f944c Added DivX and MP3 support 2014-12-09 19:13:03 +03:00
B1ackDaemon 1ba5b27f45 Merge pull request #884 from Nekotekina/master
PSV loader fixed
2014-12-08 10:24:34 +02:00
Nekotekina f2d4453b04 PSV loader fixed 2014-12-08 03:35:15 +03:00
Oil 5d37b42576 GCC build fix 2014-12-07 15:25:49 +04:00
MRebhan 1ad53bc889 Update README.md
Add dependency for Linux build: libglew-dev
2014-12-07 08:30:15 +01:00
Hykem f241a63e86 Merge pull request #882 from Nekotekina/master
AV decoding fix
2014-12-06 14:02:18 +00:00
Nekotekina 796c1b46c2 asserts replaced (2) 2014-12-06 15:48:08 +03:00
Nekotekina 270bfad96f asserts replaced 2014-12-06 12:28:17 +03:00
Nekotekina 6e1e537b5f Small fix 2014-12-06 03:50:39 +03:00
Nekotekina eb7cd7ccce Demuxer improved + MSVC thread name registrering 2014-12-05 19:12:15 +03:00
DHrpcs3 473af155fc Update README.md 2014-12-05 16:32:55 +02:00
Oil 16d31bc5e6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-12-03 20:29:11 +04:00
Nekotekina 8cb8298c03 Going to fix demuxer 2014-12-03 16:21:58 +03:00
B1ackDaemon b942da3f68 Merge pull request #879 from gopalsr83/master
PPU: Implemented some instructions and fixed some bugs in the recompiler. Also fixed some issues in the interpreter.
2014-12-02 03:19:35 +02:00
DHrpcs3 ceee6049dc Fixed last commit 2014-12-02 03:04:01 +02:00
DHrpcs3 d82f0b62a5 Fixed RSXThread::ReadIO32 exception 2014-12-02 02:51:42 +02:00
DHrpcs3 a725676346 Fixed sys_mmapper_unmap_memory 2014-12-02 01:25:08 +02:00
DHrpcs3 d593e47554 RSX: Fixed NV4097_SET_VERTEX_DATA4UB_M, NV4097_SET_VERTEX_DATA2F_M & NV4097_SET_VERTEX_DATA4F_M implementation 2014-12-02 00:02:05 +02:00
Oil b2c113e5b1 Oops, disable my debug logs. 2014-12-01 23:27:22 +04:00
Oil c3696f7897 ARMv7 decoder reworked (needs more testing / fixes / optimisations). TODO: implement new ARMv7 disassembler (currently ARMv7DisAsm fully disabled), add 0x0 opcodes group. 2014-12-01 23:20:27 +04:00
S Gopal Rajagopal 1f60d6374c Merge remote-tracking branch 'upstream/master' 2014-12-02 00:49:18 +05:30
Alexandro Sánchez Bach 7ba0bda244 Merge pull request #878 from Nekotekina/master
PSV progression, loader fixes
2014-12-01 18:17:57 +01:00
Oil b736b8616b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-12-01 20:47:48 +04:00
Nekotekina e4d5e7c78b Some draft 2014-12-01 19:34:18 +03:00
S Gopal Rajagopal 54d6aee028 Merge remote-tracking branch 'upstream/master' 2014-12-01 18:47:25 +05:30
Nekotekina c61fe621b0 Memory leak fixed 2014-12-01 03:41:01 +03:00
Nekotekina 697b699873 Some bugs fixed
ARMv7 partially restored
2014-12-01 01:04:47 +03:00
S Gopal Rajagopal 6cc6ca9f3c PPU: Implemented more instructions 2014-12-01 02:09:48 +05:30
Nekotekina 1568930da6 /dev_bdvd/ and /app_home/ fixed 2014-11-30 22:23:51 +03:00
B1ackDaemon 8f5d9b2c0e Merge pull request #876 from tambry/master
CellVideoOut fix, formatting fixes and Travis compiling fix
2014-11-30 21:09:27 +02:00
Nekotekina d648957864 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-30 15:08:54 +03:00
Nekotekina fd7a0950a7 Compilation fix 2014-11-30 15:08:23 +03:00
DHrpcs3 a58c5f5a4c VFS fixes
- using /app_home/ as local link
Implemented fmt::merge & fmt::tolower
2014-11-30 13:18:17 +02:00
Oil 58787f80a1 Conflicts fixed 2014-11-30 12:35:03 +04:00
Raul Tambre 1eb9460f2b Merge remote-tracking branch 'upstream/master' 2014-11-30 09:09:38 +02:00
DHrpcs3 ebae8dad0a Minor fixes 2014-11-30 00:03:29 +02:00
DHrpcs3 12d8e0ef38 Fixed path to param.sfo 2014-11-29 23:59:16 +02:00
S Gopal Rajagopal ce0f713f03 PPU: Implement more instructions in the recompiler. Fix some instructions in the interpreter. 2014-11-30 02:46:29 +05:30
Nekotekina 9fc7197c4f cellGameContentPermit: extremely DANGEROUS bug fixed
And few tiny changes.
2014-11-29 20:41:18 +03:00
Raul Tambre 6aff1545c2 Merge remote-tracking branch 'upstream/master'
Conflicts:
	rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp

Update from master
2014-11-29 19:05:49 +02:00
Raul Tambre bfff7ff5f9 Fix CellVideoOut values, formatting fixes 2014-11-29 19:01:04 +02:00
DHrpcs3 d9b0b56e3e Using strcmp instead stricmp 2014-11-29 17:15:26 +02:00
DHrpcs3 6d3c4e6efc Fixed compilation 2014-11-29 16:54:32 +02:00
DHrpcs3 47df9eb156 Fixed loading unknown modules 2014-11-29 16:50:59 +02:00
DHrpcs3 2b7f984de8 Fixed GameViewer
Disabled pause on null rsx instruction
2014-11-29 16:16:48 +02:00
DHrpcs3 95ce623da4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-29 15:17:34 +02:00
DHrpcs3 a59cf50f03 Improved LLE Manager
Improved VFS
2014-11-29 15:16:53 +02:00
S Gopal Rajagopal 6ea50567b6 PPU: Implemented some instructions in the recompiler. Fixed some bugs in the interpreter. 2014-11-29 01:39:59 +05:30
Nekotekina a7e659abd1 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-28 22:06:45 +03:00
Nekotekina 936aeed0a5 SPU loader fix 2014-11-28 21:56:16 +03:00
S Gopal Rajagopal 205e1d88b3 PPU LLVM recompiler: Implement more instructions 2014-11-26 00:53:24 +05:30
S Gopal Rajagopal 631675fdd6 Merge remote-tracking branch 'upstream/master'
Conflicts:
	rpcs3/Emu/Cell/PPUInterpreter.h
2014-11-25 23:26:16 +05:30
Alexandro Sánchez Bach a8c9898253 Merge pull request #874 from devmapal/master
Fixes compilation error
2014-11-24 22:15:08 +01:00
Fabian Schaffert ad01829b23 Fixes compilation error 2014-11-24 22:06:21 +01:00
S Gopal Rajagopal a9645eda73 Implement some more FP instructions in the PPU LLVM recompiler 2014-11-25 02:14:12 +05:30
Nekotekina ea1bad8724 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-24 22:51:01 +03:00
S Gopal Rajagopal bb1e08a6be Remove code left in comments from the PPU LLVM recompiler. Also cause the emulator to pause if unsupported instructions are required to be compiled. 2014-11-24 23:49:06 +05:30
DHrpcs3 795729a0b7 Fixed vm_ptr
Improved elf64 loader.
Minor improvements to vm.
Added hotkeys to MainFrame.
2014-11-24 20:12:04 +02:00
S Gopal Rajagopal d92344f383 Implement more instructions in the PPU LLVM recompiler 2014-11-24 01:41:25 +05:30
S Gopal Rajagopal 5934132b55 Implemented VPK* 2014-11-23 20:47:00 +05:30
S Gopal Rajagopal 921ee1464b Implemented some vector instructions 2014-11-23 19:06:20 +05:30
Nekotekina 8df2c3d707 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-22 19:49:54 +03:00
Hykem c846e33a10 Merge pull request #873 from tambry/TravisFix
Fix Travis compiling
2014-11-21 15:58:16 +00:00
Raul Tambre 16b4b9bf40 Fix Travis compiling 2014-11-21 15:52:01 +02:00
DHrpcs3 cdfef3bf9e Fixed compilation errors
Implemented converter_le_be
2014-11-20 21:41:04 +02:00
S Gopal Rajagopal 5addbcbbb0 Direct UT output to PPULLVMRecompiler.log 2014-11-21 00:04:59 +05:30
S Gopal Rajagopal 6661018691 Fixed the unit test framework for the PPU LLVM recompiler. Added tests for ANDC. Fixed an issues that prevented LMW/STMW from being generated properly. 2014-11-20 23:38:10 +05:30
S Gopal Rajagopal 13acb06d1a Implemented ANDC and also added support for TB and TBH in MFSPR 2014-11-20 01:03:51 +05:30
S Gopal Rajagopal e8582c8655 Improved the logic that detects which functions should be recompiled 2014-11-20 00:42:07 +05:30
Hykem 28aaa94022 Merge pull request #871 from raven02/patch-9
Check contentInfoPath && usrdirPath is not null for cellGameContentPermi...
2014-11-19 16:13:38 +00:00
raven02 06f3df0ff4 Check contentInfoPath && usrdirPath is not null for cellGameContentPermit 2014-11-19 23:17:29 +08:00
DHrpcs3 598d929aba Implemented LLE Modules Manager (draft)
Improved loader core.
Implemented *_thread wrappers.
Minor fixes.
Temporary disabled ELF Compiler & DisAsm frame.
2014-11-19 16:16:30 +02:00
Hykem 1d61484992 Merge pull request #870 from tambry/SPRFixes
Fix for TB SPR and disable writing to TB SPR
2014-11-18 17:29:50 +00:00
Hykem b019ee09c6 Merge pull request #866 from Dante38490/master
Update rpcs3.sln
2014-11-18 17:29:40 +00:00
Raul Tambre f99353f649 Fix for TB SPR and disable writing to TB SPR
Now use get_time() like MFTB instead of reading for the time-based SPR.
2014-11-18 18:03:49 +02:00
Alexandro Sánchez Bach 11d9642639 Merge pull request #869 from raven02/patch-8
Minor fix
2014-11-18 09:01:04 +01:00
raven02 cd347fa110 Minor fix 2014-11-18 14:44:37 +08:00
Alexandro Sánchez Bach 427fd58ef2 Merge pull request #868 from devmapal/master
Fixes issues in sys_semaphore_create() and sys_event_flag_(create/get)()
2014-11-17 04:29:39 +01:00
Fabian Schaffert e9ab9f51fc Fixes segfaults for sys_event_flag_(create/get)
Neither sys_event_flag_create() nor sys_event_flag_get() checked for
NULL pointers in their arguments, which caused the corresponding test
from ps3autotests to segfault.
2014-11-16 21:16:49 +01:00
Fabian Schaffert 00e0e85793 Fixes return value of sys_semaphore_create()
In case of att.addr() being NULL, CELL_EFAULT must be returnd and not
CELL_EINVAL, according to the corresponding ps3autotest.
2014-11-16 14:45:58 +01:00
Alexandro Sánchez Bach 1ef01be4b5 Merge pull request #867 from raven02/patch-7
Check address is not null for cellGcmAddressToOffset
2014-11-16 12:46:36 +01:00
raven02 25ba18e8a7 Check address is not null for cellGcmAddressToOffset 2014-11-16 19:05:41 +08:00
Zangetsu 05f91dc293 Update SLN Delete version express and Update Number for VS2013 Update 4 2014-11-16 05:40:02 +01:00
Hykem 0e094f6618 Merge pull request #864 from devmapal/master
Fixes build in Debug mode on linux
2014-11-15 21:51:31 +00:00
Fabian Schaffert f507724b5c Fixes build in Debug mode on linux
The changes introduced in commit 80294e1 makes the mcdisassembler
component of LLVM necessary in debug mode to successfully link rpcs3.
2014-11-15 21:30:01 +01:00
Hykem 4fe4e589fb Merge pull request #863 from raven02/patch-6
Check pSelf->pAddr is not NULL before setup pAddr pointer
2014-11-15 15:19:50 +00:00
Hykem 19d1a6babc Merge pull request #858 from gopalsr83/ppu_llvm_recompiler
Improved tracer for the PPU recompiler
2014-11-15 15:19:40 +00:00
Alexandro Sánchez Bach 2e40123557 Merge pull request #862 from tambry/Fixes
cellSail fixes, split GetRegBySPR into ReadSPR and WriteSPR, added 0x10c case for them
2014-11-15 15:49:20 +01:00
raven02 3b31a9233d Check pSelf->pAddr is not NULL before setup pAddr pointer 2014-11-15 22:47:30 +08:00
Raul Tambre 3af57957d5 cellSail fixes and GetRegBySPR split up
* Fixed cellSailPlayerAddDescriptor
* Fixed cellSailDescriptorSetAutoSelection
* Fixed cellSailDescriptorIsAutoSelection
* Split GetRegBySPR into ReadSPR and WriteSPR
* Added 0x10c for ReadSPR and WriteSPR (Time-based register)
2014-11-15 16:45:02 +02:00
Alexandro Sánchez Bach 4f30e014a4 Merge pull request #861 from devmapal/master
Fixes segmentation fault on exiting rpcs3
2014-11-15 01:41:47 +01:00
Fabian Schaffert 6906d146bb Adds copy constructor for class InstrBase
A copy constructor is necessarry for `class InstrBase`, as the implicit
copy constructor simply copies the pointer `m_args`. This results in a
double delete of the same memory region, causing a segmentation fault
when rpcs3 exited.
2014-11-15 00:16:17 +01:00
Alexandro Sánchez Bach 7904d87ddd Merge pull request #860 from devmapal/master
Fixes segfault described in #794
2014-11-12 23:40:04 +01:00
Fabian Schaffert 4185c1e422 Fixes segfault described in #794
Fixes bug in sys_semaphore_create() when a NULL pointer address is
passed in sem or attr.

Fixes bug in sys_semaphore_get_value() when a NULL pointer address is
passed in count.
2014-11-12 23:25:27 +01:00
Nekotekina 220384997f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-11 16:04:16 +03:00
B1ackDaemon 831ff350f2 Merge pull request #859 from tambry/RSXLogging
Added RSX logging option
2014-11-10 22:47:43 +02:00
Raul Tambre 9ee7471bd5 Added RSX logging option
Also some minor fixes to cellSail
2014-11-10 22:18:46 +02:00
S Gopal Rajagopal 1568d2d602 Fixed some more gcc/clang compilation errors 2014-11-10 14:32:41 +05:30
S Gopal Rajagopal 87accc624f Fixed some errors thrown by gcc/clang 2014-11-10 12:49:48 +05:30
S Gopal Rajagopal 18251b784f Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler 2014-11-10 11:30:44 +05:30
Nekotekina c8d4193f08 PSV: sceKernelCreateThread and sceKernelStartThread
Some fixes in callback manager
2014-11-10 03:21:50 +03:00
raven02 ea7ec448dd WIN32: set timer resolution clock to 1 ms 2014-11-10 07:34:28 +08:00
S Gopal Rajagopal 06a4c301cd Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler
Conflicts:
	rpcs3/Emu/Cell/PPUInterpreter.h
	rpcs3/Emu/Cell/PPULLVMRecompiler.cpp
	rpcs3/Emu/Cell/PPULLVMRecompiler.h
	rpcs3/Emu/Cell/PPUThread.cpp
	rpcs3/emucore.vcxproj.filters
	rpcs3/rpcs3.vcxproj
2014-11-10 02:31:35 +05:30
S Gopal Rajagopal c12a98510c Utilize idle time to combine blocks 2014-11-10 01:04:21 +05:30
S Gopal Rajagopal 71c12360c7 Always inline functions 2014-11-09 14:03:36 +05:30
S Gopal Rajagopal 5c468d7591 Disabled call stack tracing when using the PPU LLVM recompiler 2014-11-09 11:50:01 +05:30
S Gopal Rajagopal 80294e1034 Fixed some bugs 2014-11-09 02:00:19 +05:30
Nekotekina ac20cf0060 cellGcmCallback modified 2014-11-08 19:58:51 +03:00
S Gopal Rajagopal 34e34910fd Integrated execution engine, tracer, recompilation engine and compiler 2014-11-08 09:52:23 +05:30
Nekotekina 27c35174bc ARMv7: ADD*, LSL*, shifts fixed 2014-11-07 22:30:04 +03:00
S Gopal Rajagopal ee6a239679 Generate code from a CFG 2014-11-07 16:24:59 +05:30
B1ackDaemon 2fb0911e2a Merge pull request #855 from Nekotekina/master
Various progress
2014-11-06 20:39:31 +02:00
Nekotekina 0503f08f67 Hmm... 2014-11-06 19:20:29 +03:00
Nekotekina 5ba772df93 Some errors 2014-11-06 19:09:54 +03:00
Nekotekina 8ad141de6f sceLibc: memcpy, stack arguments 2014-11-06 18:29:14 +03:00
Nekotekina af0ab4e8ad Bugfix 2014-11-06 03:57:34 +03:00
Nekotekina 7172154da7 ARMv7: CMP_IMM, SUB_IMM, null HLE function 2014-11-06 03:22:48 +03:00
Nekotekina 1749b95b57 sceRefs reading algorithm modified 2014-11-05 21:53:54 +03:00
Nekotekina 5d63c6b526 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-05 19:20:44 +03:00
Nekotekina 7a2cd15173 sceLibm, sceLibKernel drafts 2014-11-05 19:07:34 +03:00
S Gopal Rajagopal 7c3c5ae08e Construct CFG from execution traces 2014-11-05 01:01:20 +05:30
Hykem a4e5751cff Merge branch 'gopalsr83-master' 2014-11-04 16:49:02 +00:00
Hykem e14fbda502 Merge branch 'master' of https://github.com/gopalsr83/rpcs3 into gopalsr83-master 2014-11-04 16:48:45 +00:00
Hykem 5a27a84f5a Merge branch 'master' of https://github.com/gopalsr83/rpcs3 into gopalsr83-master 2014-11-04 16:45:25 +00:00
Hykem 321c29fe1c Merge pull request #851 from Bigpet/cmakeless
remove dependency on CMake and python under Windows
2014-11-04 16:30:09 +00:00
Nekotekina c5858de567 sceLibstdcxx draft 2014-11-04 03:51:26 +03:00
Nekotekina 43382a0ac6 Something is wrong with entry points... 2014-11-03 14:35:50 +03:00
gopalsr83 af78355570 Fixed linux compilation 2014-11-03 11:58:50 +05:30
S Gopal Rajagopal c2743e6dad Removed LLVM and PPU LLVM Recompiler from Debug, Release and 'Debug - MemLeak' build configurations. Added 'Release - LLVM' and 'Debug - LLVM' which include LLVM and PPU LLVM Recompiler. 2014-11-02 21:25:51 +05:30
Nekotekina df72f5e37c ARMv7: CMP_REG, LDR_IMM, LDR_LIT, STR_REG, SUB_REG
sceLibc: exit and printf drafts
This actually allows to display hello world.
2014-11-02 18:50:20 +03:00
Nekotekina 31c71b4a48 Compilation fix 2014-11-02 04:18:02 +03:00
Nekotekina ddbd590bef Small fix 2014-11-02 03:28:53 +03:00
Nekotekina 61e6d8af96 Compilation fix 2014-11-02 02:45:07 +03:00
Nekotekina 3bdfc6b499 ARMv7: more opcodes, some changes in loader 2014-11-02 02:19:14 +03:00
Hykem 8ff9b44abb Merge pull request #853 from tambry/OpenGLUpdate
Update OpenGL definitions to 4.5 specification
2014-11-01 13:12:10 +00:00
Nekotekina 536c5a900a ARMv7: more opcodes + STR 2014-11-01 01:00:36 +03:00
S Gopal Rajagopal 7846fa5829 Made changes to tracer so that it understand compiled blocks 2014-11-01 01:22:39 +05:30
Nekotekina 3895c083cb ARMv7: BX, MOV_IMM, IT (ITSTATE register) 2014-10-31 04:12:07 +03:00
Nekotekina de156c59e4 ARMv7: more opcodes 2014-10-30 23:07:47 +03:00
Raul Tambre 633078004a Update OpenGL definitions to 4.5 specification 2014-10-30 22:02:49 +02:00
Nekotekina 7aeda3b0c7 ARMv7: more opcodes 2014-10-30 18:17:51 +03:00
Nekotekina 94213bb398 ARMv7: more opcodes 2014-10-29 18:30:35 +03:00
Nekotekina bf6415accd Tiny ARMv7 interpreter update 2014-10-29 07:13:34 +03:00
Nekotekina 0f602e0e13 Bugfix 2014-10-28 19:46:14 +03:00
Nekotekina 65ddf980e0 Small fix 2014-10-28 15:30:37 +03:00
Nekotekina 09a4d14f8f cellAdec improved 2014-10-28 00:24:11 +03:00
Peter Tissen 1af2f5b214 remove dependency on CMake and python 2014-10-26 17:59:08 +01:00
Alexandro Sánchez Bach 7258ddc318 Merge pull request #850 from raven02/patch-4
Stub DCBI instruction
2014-10-26 11:59:39 +01:00
raven02 f54a5c6591 Stub DCBI instruction 2014-10-26 06:30:43 +08:00
Hykem d26f7f696d Merge pull request #848 from Dante38490/patch-1
Update README.md
2014-10-25 18:59:33 +01:00
S Gopal Rajagopal 160b58cf61 Fixed compilation issues 2014-10-25 06:56:57 +05:30
S Gopal Rajagopal 6bc0ce8046 Intial commit for advanced tracer 2014-10-25 06:38:47 +05:30
B1ackDaemon a180e90a6d Merge pull request #849 from raven02/patch-3
Support FCTID/FCTIW instructions
2014-10-25 02:30:52 +03:00
Nekotekina ffda60996d Compilation fix 2014-10-24 23:13:47 +04:00
Nekotekina 6df5ddb973 Few warnings fixed 2014-10-24 17:24:09 +04:00
raven02 4eb4186b5c Support FCTID/FCTIW instructions 2014-10-24 08:46:14 +08:00
Nekotekina 973e3f8f7e Few instructions simplified 2014-10-24 02:06:15 +04:00
Dante38490 2c99aa4ea9 Update README.md
Update now Compile With PPU GIT (LLVM)
2014-10-23 06:09:31 +02:00
Nekotekina 7777be6fc1 Some things simplified 2014-10-23 02:53:44 +04:00
Alexandro Sánchez Bach 5d1cafdebc Merge pull request #847 from gopalsr83/ppu_llvm_recompiler
PPU Recompiler (LLVM)
2014-10-22 15:13:26 +02:00
S Gopal Rajagopal ce21a9d250 Cleanup some files 2014-10-22 01:12:15 +05:30
S Gopal Rajagopal dfd3425e65 Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler
Conflicts:
	Utilities/BEType.h
	rpcs3/Emu/Cell/PPUInterpreter.h
	rpcs3/emucore.vcxproj.filters
2014-10-22 00:01:16 +05:30
S Gopal Rajagopal 8cfc9c7493 Merge pull request #1 from raven02/patch-2
Support FSQRT/FSQRTS instructions
2014-10-21 23:46:37 +05:30
raven02 00486d39e2 Add test against interpreter 2014-10-21 22:43:46 +08:00
raven02 20a5bf424f Support FSQRT/FSQRTS instructions 2014-10-21 22:20:52 +08:00
gopalsr83 1446e5bb50 Made changes for compiling in Linux 2014-10-21 16:06:10 +05:30
S Gopal Rajagopal 4514fc12bd Updated Travis CI configuration to compile LLVM 2014-10-21 02:17:00 +05:30
Hykem ab0a907c7a Merge pull request #846 from gopalsr83/master
Fixed the implementation of LSWI and STSWI. Simplified the implementation of VSL and VSR.
2014-10-20 16:43:20 +01:00
S Gopal Rajagopal 7e1413badf Fixed the implementation of LSWI and STSWI. Simplified the implementation
of VSL and VSR.
2014-10-20 17:19:01 +05:30
S Gopal Rajagopal 024c15d4d3 Some cleanup 2014-10-20 01:16:35 +05:30
Alexandro Sánchez Bach 6a163b8cc5 Merge pull request #844 from Nekotekina/master
Some fixes in cellAdec, cellVdec, cellDmux
2014-10-19 00:45:31 +02:00
S Gopal Rajagopal 8a7ba5a709 Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler
Conflicts:
	Utilities/BEType.h
	rpcs3/Emu/Cell/PPUInterpreter.h
	rpcs3/emucore.vcxproj.filters
2014-10-19 02:36:26 +05:30
S Gopal Rajagopal ce4d04290e Support more instructions 2014-10-19 01:57:54 +05:30
Alexandro Sánchez Bach 59c8def566 Merge pull request #845 from Survanium90/master
Various changes in CellGem, SceNP and CellMic
2014-10-18 21:11:26 +02:00
Survanium90 f1168f7c59 Initial CellMic implementation 2014-10-18 22:22:52 +04:00
Survanium90 7fd3dd9ebf Implemented sceNpManagerGetContentRatingFlag 2014-10-18 22:20:37 +04:00
Survanium90 220e4ad8a6 Added initialization checks in CellGem 2014-10-18 22:14:16 +04:00
Nekotekina 81474be103 AV decoding minor cleanup 2014-10-18 21:00:21 +04:00
Nekotekina 318d06efda cellAdecClose, cellVdecClose fix 2014-10-18 02:20:03 +04:00
Nekotekina 18930a43f2 waiter_map_t small fix 2014-10-18 00:13:25 +04:00
B1ackDaemon 9c8666573b Merge pull request #842 from tambry/ChangesAndAdditions
Initial cellSail implementation
2014-10-17 18:43:46 +03:00
Raul Tambre b96037f160 Fixes
Fixed vm::vars missing be_t in a lot of cases and disabled a part of
cellSailCreateDescriptor for now.
2014-10-17 18:14:58 +03:00
Raul Tambre d58beb8f4c Initial cellSail implementation
Also a TODOs for frequencies
2014-10-17 16:20:40 +03:00
B1ackDaemon 3d415d653b Merge pull request #841 from Nekotekina/master
Small cellSpurs / cellSync update
2014-10-17 01:13:27 +03:00
B1ackDaemon d5a8675d1e Merge pull request #839 from gopalsr83/master
Minor fixes to PPU interpreter.
2014-10-17 01:13:20 +03:00
Nekotekina 5de059789d waiter_map_t for syncRwm and syncQueue 2014-10-16 23:34:17 +04:00
Nekotekina f839713a94 Bugfix 2014-10-16 21:07:41 +04:00
Nekotekina 18b69cac99 waiter_map_t : concept changed
Purpose-specific waiter_map_t objects instead of global one. SM_Sleep()
removed.
2014-10-16 20:29:41 +04:00
S Gopal Rajagopal 817947e373 Made minor fixes to some instructions in the PPU interpreter. Also changed the implementation of MFTB so that it always increments at a constant rate. 2014-10-16 17:03:46 +05:30
S Gopal Rajagopal 35a0e0c625 Support more instructions 2014-10-16 15:28:57 +05:30
S Gopal Rajagopal b95cddb0c7 Fix compilation errors caused by rebase 2014-10-14 14:23:50 +05:30
S Gopal Rajagopal cd154ad357 Support more instructions 2014-10-13 15:40:42 +05:30
S Gopal Rajagopal 143f542bd6 Fixed some bugs 2014-10-13 15:40:42 +05:30
S Gopal Rajagopal 9c99fc7bb1 Disabled unit tests 2014-10-13 15:40:41 +05:30
S Gopal Rajagopal 3e7d42b023 Support some instructions 2014-10-13 15:40:41 +05:30
S Gopal Rajagopal 1bd235616f Implemented branch instructions and some basic block combining. 2014-10-13 15:40:40 +05:30
gopalsr83 d5e86f7190 Fixed compilation in Linux. Have not tested it though. 2014-10-13 15:40:39 +05:30
S Gopal Rajagopal f210180aa6 Disabled the use of BMI instructions since older processors do not support it 2014-10-13 15:40:39 +05:30
S Gopal Rajagopal e687a91243 Implemented some FP instructions but did not add support for updating the FPSCR. Many misc changes. 2014-10-13 15:40:38 +05:30
S Gopal Rajagopal ccc37b5dc5 Print disassembly to log 2014-10-13 15:40:38 +05:30
S Gopal Rajagopal a029e70863 More changes to get the build to work properly 2014-10-13 15:38:03 +05:30
S Gopal Rajagopal 2ff8b9fb20 Remove unneeded files 2014-10-13 15:36:24 +05:30
S Gopal Rajagopal d35d00f301 Remove unneeded LLVM files 2014-10-13 15:36:23 +05:30
S Gopal Rajagopal 170439f91c LLVM VS project files that were part of the reposiory have been removed. These files will now be auto-generated. It should now be possbile to build from any directory and not just D:\Projects\rpcs3. 2014-10-13 15:35:03 +05:30
S Gopal Rajagopal c72d97c64a Implemented LF*, STF*, RL* and a few more instructions 2014-10-13 15:30:58 +05:30
S Gopal Rajagopal e485047a10 Enabled some LLVM analysis/transform passes
Implement mul, neg, nor, subf
2014-10-13 15:26:10 +05:30
S Gopal Rajagopal d69de9c332 Fixed some bugs that prevented the recompiler from terminating properly 2014-10-13 15:26:09 +05:30
S Gopal Rajagopal 840ae2f86b Run recompilation in the background 2014-10-13 15:26:09 +05:30
S Gopal Rajagopal 1f3a117744 Disabled tests 2014-10-13 15:26:08 +05:30
S Gopal Rajagopal f5188cdb32 Some refactoring. Added support for some load/store instructions. 2014-10-13 15:26:08 +05:30
S Gopal Rajagopal 1be5222e66 Made changes so that there is a single LLVM context instead of one per PPU. If separate LLVM contexts are used per PPU and if different PPUs execute the same address then the address will have to compiled once per PPU. 2014-10-13 15:26:07 +05:30
S Gopal Rajagopal a4bb9eaa55 Made changes so that the recompiler output may be verfied against that of the interpreter. This seems to be a better strategy for testing the recompiler. The best strategy would be to verify its output against a real PPU core but I dont have access to one. 2014-10-13 15:26:07 +05:30
S Gopal Rajagopal 791f8e3b9a Compilation Fix 2014-10-13 15:25:02 +05:30
S Gopal Rajagopal 02d1c9f6d2 Added LLVM as a submodule 2014-10-13 15:24:24 +05:30
S Gopal Rajagopal 6135b450c2 Implemented fallback to PPU Interpreter 2014-10-13 15:22:39 +05:30
S Gopal Rajagopal aa614e83f2 Refactoring + new instructions 2014-10-13 15:22:39 +05:30
S Gopal Rajagopal 878926f57c Support few more instructions 2014-10-13 15:22:38 +05:30
S Gopal Rajagopal ac86ee8fa9 Added support for MULLI 2014-10-13 15:22:38 +05:30
S Gopal Rajagopal eaa644dc20 Added support for a few more vector instructions 2014-10-13 15:22:37 +05:30
S Gopal Rajagopal d8d0c0d2fe Added support for 3 more instructions 2014-10-13 15:21:25 +05:30
S Gopal Rajagopal 659a3d88c6 Added more tests 2014-10-13 15:21:24 +05:30
S Gopal Rajagopal 66d0b25448 Moved tests to a new file 2014-10-13 15:21:24 +05:30
S Gopal Rajagopal 2ea881301a Implemented a basic UT framework for PPULLVMRecompiler 2014-10-13 15:18:53 +05:30
S Gopal Rajagopal 2bb63ad051 LLVM based PPU Recompiler. Intial commit 2014-10-13 15:18:17 +05:30
Raul Tambre 9e5403aeb3 Remove unneeded be_t 2014-10-11 20:20:01 +03:00
Nekotekina 48eb66383b waiter_reg_t, cellSyncBarrier improved 2014-10-11 02:37:20 +04:00
Nekotekina 3c2e0fff07 waiter_op() and waiter_signal() basis
Simplified signaling on condition variables without using them directly.
2014-10-11 01:33:57 +04:00
Nekotekina 446993eaa6 Atomic intrinsics for u128 type
cellSpursGetSpuThreadGroupId
cellSpursGetNumSpuThread
cellSpursGetSpuThreadId
2014-10-10 22:41:57 +04:00
Nekotekina 09fbda603c Atomic intrinsics refactoring 2014-10-10 22:19:14 +04:00
Raul Tambre d92b44e93f Update ASMJIT 2014-10-10 17:24:37 +03:00
Raul Tambre 9bcaa1e498 Disable pausing when a null command occurs 2014-10-10 17:24:28 +03:00
Nekotekina b0da8319b7 SPURS kernel v2 2014-10-10 01:39:03 +04:00
Nekotekina b7d0bfa972 SPU branch D/E flags workaround 2014-10-10 01:38:02 +04:00
Nekotekina 1dac13be16 RSXIO memory mapping with strict ordering (draft) 2014-10-10 01:26:04 +04:00
Nekotekina 266c3d4753 Small fixes 2014-10-08 18:26:08 +04:00
Nekotekina 9a02add930 Bugfix 2014-10-08 16:29:29 +04:00
Arkaran99 d9a95aae09 Avoid giving arguments by value for log. 2014-10-08 01:35:19 +02:00
Nekotekina fd7da9d61a Compilation fix 2014-10-08 01:53:50 +04:00
Nekotekina 94c30924dd Some things for u128 2014-10-08 01:37:04 +04:00
Nekotekina 237ab974dd SPURS kernel v1 2014-10-07 17:35:44 +04:00
B1ackDaemon 67bc9acbe0 Merge pull request #836 from raven02/patch-1
Small RSX fix
2014-10-06 18:08:50 +03:00
raven02 b13a8ab4e3 Small RSX fix 2014-10-06 21:39:25 +08:00
Alexandro Sánchez Bach 9c3981bc8e Merge pull request #835 from Nekotekina/master
Notification for encrypted SPU modules
2014-10-06 00:17:38 +02:00
Nekotekina ed0918d097 Notification for encrypted SPU modules 2014-10-06 01:21:00 +04:00
B1ackDaemon 5e954f4f76 Merge pull request #834 from Nekotekina/master
RSXDebugger fix
2014-10-05 11:36:35 +03:00
Nekotekina 4273c52efc RSXDebugger fix 2014-10-05 12:25:54 +04:00
B1ackDaemon 4a2d61bc84 Merge pull request #833 from Nekotekina/master
RSX fix
2014-10-05 11:07:14 +03:00
Nekotekina 5f46534b72 RSX fix
Forgot to rollback these lines.
2014-10-05 12:03:14 +04:00
B1ackDaemon f38fb61c62 Merge pull request #830 from Nekotekina/master
Various changes
2014-10-04 18:15:16 +03:00
Nekotekina 6c8d6aaf71 Damned conflicts fixed 2014-10-04 18:57:53 +04:00
Nekotekina 74007d5e5d Small changes in memory and RSXIOMem
Some bugs fixed, some other changes.
2014-10-04 18:43:46 +04:00
Alexandro Sánchez Bach ad4b0f092b Merge pull request #828 from Survanium90/master
Added initialization checks in SceNpClans module
2014-10-04 15:51:34 +02:00
Survanium90 b02225dd80 Added initialization and termination for SceNpTus Module
Also added initialization checks
2014-10-04 11:38:38 +04:00
Survanium90 70e5068e37 Added more initializations in cellCamera 2014-10-04 11:31:27 +04:00
Survanium90 aed76b2a0a Fix 2 for "Added initialization checks in SceNpClans module" 2014-10-04 01:09:40 +04:00
Survanium90 18d40102f7 Fix for "Added initialization checks in SceNpClans module" 2014-10-03 23:07:05 +04:00
Survanium90 5b467ff82a Added initialization checks in SceNpClans module 2014-10-03 17:39:34 +04:00
Alexandro Sánchez Bach e4eecd247c Merge pull request #827 from Bigpet/master
change initial value of sys_lwmutex_t::waiter
2014-10-02 19:19:21 +02:00
Peter Tissen f11c6c3cf4 change initial value of sys_lwmutex_t::waiter 2014-10-02 15:13:44 +02:00
Nekotekina 6b0857dcff Conflicts fixed 2014-10-02 16:19:52 +04:00
Nekotekina 752449bbc0 Small update 2014-10-02 14:29:20 +04:00
DHrpcs3 77076191c7 Fixed fix_import function in Modules.cpp 2014-10-02 08:13:35 +03:00
Hykem faeedf1355 Fixed compilation errors. 2014-10-01 15:15:04 +01:00
Hykem 4978af50e4 Merge pull request #825 from Survanium90/master
Added initialization for SceNpUtilBandwidthTestInitStart
2014-10-01 14:58:10 +01:00
Hykem 6d6c1a9672 Updated the Crypto Engine:
- Fixed several bugs in unedat;
- Improved EDAT/SDAT file decryption.
2014-10-01 14:57:44 +01:00
Nekotekina 4a6779469c Memory fixes 2014-10-01 17:18:38 +04:00
DHrpcs3 eada1fe12c Improved be_t
Fixed NV4097_SET_TWO_SIDE_LIGHT_EN
Added LIS, ORI, NOP & BLR to PPU Jit
2014-10-01 12:45:43 +03:00
Survanium90 1ded37d253 Added initialization for SceNpUtilBandwidthTestInitStart
Also added initialization checks
2014-10-01 13:25:06 +04:00
Hykem 64158b1b10 Merge pull request #824 from Nmzik/master
Adjusted attributes, added better log messages and an initialization check in the sceNP module
2014-09-30 21:01:58 +01:00
Nekotekina ce97a7e7a6 Channel<> rewritten 2014-09-30 23:06:04 +04:00
nmzik c0b53d6b48 Adjusted attributes, added better log messages and an initialization check in the sceNP module 2014-09-30 22:42:15 +04:00
Nekotekina 68cdc95da5 Some fixes 2014-09-30 02:28:02 +04:00
Nekotekina 6b53479ac3 _cellSpursWorkloadFlagReceiver, cellSpursReadyCountStore 2014-09-29 19:39:44 +04:00
Nekotekina 7d95311a01 Some %x fixed 2014-09-29 19:38:04 +04:00
Nekotekina c53a822c4e spursAddWorkload 2014-09-28 23:10:13 +04:00
Hykem 5b18e90cac Merge pull request #822 from tambry/cellAvconfExtAndVideoOut
Add cellAvconfExt and cellVideoOutGetScreenSize
2014-09-28 17:54:47 +01:00
Raul Tambre 2e29348b9c Removed wx implementation and added Windows only implementation 2014-09-28 19:42:37 +03:00
Raul Tambre b9e7e46198 Also remove couple unneeded be_t 2014-09-28 18:24:34 +03:00
Raul Tambre 879e2d920c Add cellAvconfExt and cellVideoOutGetScreenSize
Also added a flag to RSX debugger showing if two sided lighting is
enabled, a 3D Monitor option and fixed a ")" missing in TODO printout
for sys_spu_elf_get_information.
2014-09-28 18:21:45 +03:00
Nekotekina ae17ef4d68 vm::atomic -> atomic_t 2014-09-27 22:49:33 +04:00
Nekotekina e40776ba79 cellSpursWakeUp, CellSpursWorkloadAttribute
+vm_atomic update (8bit type)
2014-09-26 01:41:35 +04:00
Alexandro Sánchez Bach 13b7df5d39 Merge pull request #821 from tambry/sys_get_random_number-Fix
Fix sys_get_random_number
2014-09-25 23:23:06 +02:00
Raul Tambre 1f870af5cf Fix sys_get_random_number
Thanks @Nekotekina
2014-09-25 22:27:40 +03:00
B1ackDaemon 9bef0a8683 Merge pull request #820 from tambry/SceNpAdditionsAndOtherFixes
Implemented sceNpBasicGetEvent, sceNpLookupInit and sceNpLookupTerm
2014-09-25 22:08:21 +03:00
Raul Tambre c87c75a45b Fix some things 2014-09-25 21:51:52 +03:00
Raul Tambre b5fa247eb3 Updated ASMJIT 2014-09-25 20:16:23 +03:00
Raul Tambre d17322948d Implemented sceNpBasicGetEvent, sceNpLookupInit and sceNpLookupTerm
Updated writing to pointers for sys_get_random_number,
sceNpBasicGetFriendListEntryCount and sceNpBasicGetMessageEntryCount.
Fixed some pointers and TODOs in cellNetCtl.
2014-09-25 20:07:06 +03:00
Nekotekina 05a7466a5a m_custom_task thread member 2014-09-24 22:44:26 +04:00
Nekotekina a4a4e572a0 vm::atomic update, small fixes 2014-09-23 18:27:18 +04:00
Nekotekina e5a485e50b More changes 2014-09-23 03:07:40 +04:00
Alexandro Sánchez Bach c329942482 Merge pull request #819 from tambry/ProofedUnloadingOfSomeModules
Added sceNpTrophyTerm and proofed some unloadings
2014-09-23 00:12:23 +02:00
Raul Tambre 790a8bf814 Added sceNpTrophyTerm and proofed some unloadings
Made cellNetCtl, cellGem, cellCamera, sceNp, sceNpCommerce2 and
sceNpTrophy properly unload if termination function wasn't called.
2014-09-22 22:00:28 +03:00
Nekotekina 449e7c1049 Small fix 2014-09-21 19:14:13 +04:00
B1ackDaemon f1e2446f17 Merge pull request #818 from tambry/SceNpCleanupAndCommerce2Additions
Huge sceNp cleanup and added sceNpCommerce2Init and sceNpCommerce2Term
2014-09-21 17:44:56 +03:00
Raul Tambre 4a998e5374 Huge sceNp cleanup, added sceNpCommerce2Init and sceNpCommerce2Term 2014-09-21 17:26:21 +03:00
Nekotekina c9ad88b3ff ...+CellSyncQueue 2014-09-21 17:02:05 +04:00
Nekotekina 3ab08e0d7a vm::atomic update (or, and, xor)
CellSyncMutex, CellSyncBarrier, CellSyncRwm refactoring
2014-09-21 03:29:42 +04:00
Nekotekina 169c8c47c0 vm::atomic update 2014-09-21 01:00:55 +04:00
Alexandro Sánchez Bach 2234d0fe0a Merge pull request #817 from tambry/sceNpAdditionModuleFix
Added sceNpBasicGetFriendListEntryCount and sceNpBasicGetMessageEntryCount
2014-09-20 18:47:24 +02:00
Raul Tambre 6360ef1790 Added sceNpBasicGetFriendListEntryCount and sceNpBasicGetMessageEntryCount
Fixed (?) sometimes functions being unloaded when they shouldn't.
Also reverted the SPUThread hack.
2014-09-20 19:09:18 +03:00
Nekotekina 89da242cd2 Warning fix 2014-09-20 04:08:12 +04:00
Nekotekina 66000240ac vm::atomic update, be_t update
1) MakeFromLE replaced with make(), MakeFromBE removed. Compiler seems
to be able to optimize it anyway.
2) be_t<> conversion operator temporarily replaced with conversion
through LE because it can't work with all possible numeric conversions
(float<>int for example)
2014-09-20 03:16:11 +04:00
Nekotekina 0baf295c1b to_be() 2014-09-19 23:12:31 +04:00
Nekotekina b6f8700b8b vm::atomic initial structure 2014-09-19 23:11:43 +04:00
Nekotekina dbd49a55c6 CellSpurs initialization 2014-09-19 15:27:51 +04:00
Nekotekina 5ad68cfe30 Compilation fix 2014-09-19 04:24:06 +04:00
Nekotekina bb77249ac8 CellSpurs initialization 2014-09-19 04:19:22 +04:00
B1ackDaemon df84e89d46 Merge pull request #816 from tambry/CameraAndOptimizations
Added a camera option
2014-09-18 21:33:14 +03:00
Raul Tambre fcfdd1551b Added a camera option
Also a couple minor optimizations
2014-09-18 21:19:10 +03:00
Oil 9d1a2dd376 Minor changes 2014-09-17 23:51:02 +04:00
Alexandro Sánchez Bach 279ec3d8a3 Merge pull request #814 from Nekotekina/master
declCPU removed, PPUThread& is passed as argument
2014-09-17 17:31:45 +02:00
Nekotekina 0044141631 sys_process_is_spu_lock_line_reservation_address
Formatting changed a bit
2014-09-17 17:15:17 +04:00
Nekotekina 626133c0eb declCPU removed, PPUThread& is passed as argument
Added experimental feature: passing PPUThread& to syscall
2014-09-16 21:49:50 +04:00
B1ackDaemon 8cc09d1c91 Merge pull request #813 from tambry/ArkedoCrashFix
Fix crash in Arkedo games (that I created)
2014-09-16 19:31:29 +03:00
Raul Tambre b7a6c93e96 Fix crash in Arkedo games (that I created) 2014-09-16 19:28:21 +03:00
B1ackDaemon ef1c5af608 Merge pull request #812 from Nekotekina/master
cellSpursAttributeEnableSystemWorkload
2014-09-16 18:08:37 +03:00
Nekotekina b600cba180 CB_FUNC / SC_FUNC small update 2014-09-16 17:56:27 +04:00
Nekotekina 667da92934 Merge branch 'master' of https://github.com/Nekotekina/rpcs3 2014-09-16 17:31:03 +04:00
Nekotekina 3730c53c9e cellSpursAttributeEnableSystemWorkload 2014-09-16 17:29:58 +04:00
Bigpet 96c86580f0 define templates outside of block scope 2014-09-16 15:03:57 +02:00
DHrpcs3 b0569639a9 Improved to_be_t
Fixed cellCameraGetType
Removed be_array_t
Improved cb_caller
2014-09-16 14:23:58 +03:00
Nekotekina 76418fe1b4 cellSpursAttributeEnableSystemWorkload 2014-09-16 02:58:56 +04:00
B1ackDaemon 29c2e84fa1 Merge pull request #810 from Nekotekina/master
Some code removed, CellSpursAttribute implemented
2014-09-15 22:13:54 +03:00
Nekotekina 5f1253598c Fix formatting 2014-09-15 23:04:18 +04:00
Nekotekina c9132a4bdb Compilation fix + CellSpursAttribute 2014-09-15 22:17:30 +04:00
Nekotekina 201f0f3a9f Basic stack argument support for callbacks 2014-09-15 19:04:09 +04:00
Nekotekina 4243558319 Compilation fix 3 2014-09-15 02:52:22 +04:00
Nekotekina 38746a5ef9 Compilation fix 2 2014-09-15 02:34:59 +04:00
Nekotekina dfaa668b31 Compilation fix 2014-09-15 02:27:30 +04:00
Nekotekina 597d07bf24 Small refactoring 2014-09-15 02:17:24 +04:00
B1ackDaemon 8f1a8450be Merge pull request #807 from O1L/master
More information in KernelExplorer.
2014-09-14 20:31:14 +03:00
B1ackDaemon bd1f413481 Merge pull request #806 from Arkaran99/master
Small refactor
2014-09-14 20:31:08 +03:00
O1L 2b7a00d42d Fixed typo 2014-09-14 00:50:38 +04:00
O1L dc7e143de5 More information in KernelExplorer. 2014-09-14 00:40:12 +04:00
Arkaran99 3caff5a107 Change ModuleManager::init function.
First step to help refactor Module management.
Add every module in the static ModuleInfo list. Module without id are assigned
to 0xffff.
The init function is called after constructor and take a pointer to Module
as an input.
This pointer is used to set the Module's global pointer in its file.
2014-09-13 22:00:17 +02:00
Arkaran99 7dafb164e8 Remove unused include and very small refactoring.
Unused include in unself.h, ELF.h.
New line after an if to enable debugging.
Rewrite strange boolean expression in ELF.cpp.
2014-09-13 20:38:18 +02:00
Arkaran99 9834fc7f70 Update gitignore to ignore x64 folders. 2014-09-13 20:38:16 +02:00
B1ackDaemon 3775d28d24 Merge pull request #805 from Nekotekina/master
CallbackManager rewritten
2014-09-13 19:45:45 +03:00
Nekotekina 860d7bd3f1 Small fix 2 2014-09-13 18:25:02 +04:00
Nekotekina 0df3e955c8 Small fix 2014-09-13 01:50:50 +04:00
Nekotekina 10e9d383d4 ExecAsCallback() removed 2014-09-13 01:14:48 +04:00
Nekotekina c1da446653 FastCall() removed 2014-09-12 23:27:33 +04:00
Alexandro Sánchez Bach 20186b5049 Merge pull request #802 from tambry/sys_get_random_number
Implemented sys_get_random_number
2014-09-12 17:25:09 +02:00
Raul Tambre 1098edea98 Fixed assigning of the generated number 2014-09-12 18:11:04 +03:00
Alexandro Sánchez Bach 3d910a9a42 Merge pull request #803 from tambry/InitilizationsAndTerminations
Added more initializations and terminations
2014-09-12 16:43:33 +02:00
Raul Tambre c74c592dd3 Added more initializations and terminations 2014-09-12 17:28:02 +03:00
Nekotekina 5a4aa9096b Float/vector arg support for callbacks 2014-09-12 17:08:24 +04:00
Raul Tambre 6d0fae09c5 Implemented sys_get_random_number 2014-09-12 15:18:27 +03:00
Nekotekina 85f2009175 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-09-12 01:16:57 +04:00
Nekotekina 3e1c04b356 Small fix 2014-09-12 01:10:44 +04:00
Nekotekina 8cde1c18c4 Cb fix 2014-09-12 00:46:11 +04:00
Nekotekina ed55011ede Compilation fix 2 2014-09-11 23:40:50 +04:00
Nekotekina fe53f6f2d7 Compilation fix 2014-09-11 23:33:20 +04:00
Nekotekina cd39256361 CallbackManager rewritten 2014-09-11 23:18:19 +04:00
B1ackDaemon 98c67389b0 Merge pull request #801 from tambry/TwoSidedLight
Implemented NV4097_SET_TWO_SIDE_LIGHT_EN
2014-09-11 19:13:46 +03:00
Raul Tambre 88cc03b9e2 Implemented NV4097_SET_TWO_SIDE_LIGHT_EN 2014-09-11 18:59:42 +03:00
B1ackDaemon ff29320a34 Merge pull request #800 from darkf/stread
implement cellFsStRead (does *not* use ringbuffers)
2014-09-10 08:02:25 +03:00
darkf 145e0aa827 implement cellFsStRead (does *not* use ringbuffers) 2014-09-09 21:54:51 -07:00
Alexandro Sánchez Bach b881e095e9 Fixed cellFsStReadInit issue
* Disabled automatic HLEExitOnStop option when the ELF file argument is
provided.
* Reverted some changes of last pull.
2014-09-09 23:18:21 +02:00
B1ackDaemon 218399afcb Merge pull request #799 from tambry/cellCameraAndGemAndOtherUpdates
Cell camera and gem and other updates
2014-09-09 19:35:10 +03:00
Raul Tambre dc51630803 Comment fix 2014-09-09 19:08:13 +03:00
Raul Tambre 089a6ee07d Minor cellSysutil fix 2014-09-09 18:49:12 +03:00
Raul Tambre 6029cc40f2 Added new things, updated others
+ Tab in settings for cellCamera and cellGem related things, currently
includes setting camera type
+ cellCamera and cellGem initilization
+ Added cellCameraGetType
* Updated asmjit and ffmpeg
* Some minor optimizations
2014-09-09 18:44:02 +03:00
Nekotekina 3b71721a33 It was overcomplicated 2014-09-09 16:13:38 +04:00
Alexandro Sánchez Bach a99c8e3c7c Merge pull request #796 from O1L/master
PPU / SPU / RawSPU threads in KernelExplorer.
2014-09-08 23:16:10 +02:00
Nekotekina c79b52b334 bugfix 2014-09-08 21:06:08 +04:00
Nekotekina 5d951451c5 cellPngDec (nothing changed) 2014-09-08 18:56:47 +04:00
B1ackDaemon c2563da820 Merge pull request #797 from tambry/cellCameraAndOvis
Re-enabled cellCamera and cellOvis, added cellCamera enums and structs
2014-09-08 16:00:23 +03:00
Nekotekina 311a3b3e47 Compilation fix 2014-09-08 14:20:25 +04:00
Nekotekina 470afd78d5 WIP (cellPngDec refactoring) 2014-09-08 04:54:17 +04:00
Raul Tambre 16727a9c5e Re-enabled cellCamera and cellOvis, added cellCamera enums and structs
Also some fixes to ordering in emucore.vcxproj.filters
2014-09-07 18:53:13 +03:00
O1L 54106f6f9b Removed unnecessary newlines. 2014-09-07 18:05:29 +04:00
O1L 402199d70f Add PPU / SPU / RawSPU threads in KernelExplorer, and some coding style changes. 2014-09-07 17:47:53 +04:00
O1L 339e40d423 Fixed conflicts 2014-09-07 15:13:29 +04:00
Alexandro Sánchez Bach e65676ffa9 Merge pull request #795 from Arkaran99/master
Fix compile errors in Debug - MemLeak.
2014-09-07 11:04:15 +02:00
Arkaran99 1e60319be2 Fix compile errors in Debug - MemLeak.
Add rpcs3/define_new_memleakdetect.h to save and replace new operator with Visual Studio Memory Leak Detection's operator.
Add rpcs3/restore_new.h to restore new operator to a previous saved state.
2014-09-07 10:43:25 +02:00
Alexandro Sánchez Bach ec9740e747 Merge pull request #793 from Nekotekina/master
vm:: replacement 3
2014-09-07 02:11:13 +02:00
Nekotekina 58f436e749 Small fix 2014-09-07 03:35:48 +04:00
Nekotekina 6c01854fec Well, vector argument support in SC_FUNC 2014-09-06 21:30:50 +04:00
Nekotekina 82433d946e u128
Only useful as vector type anyway.
2014-09-06 20:30:13 +04:00
Nekotekina 43a61d0ab9 Memory.Write*/Read* replaced 2014-09-06 17:33:01 +04:00
B1ackDaemon 1b499a6fd5 Merge pull request #792 from Nekotekina/master
cellSync2* fixes
2014-09-06 14:10:53 +03:00
Nekotekina b5e7724e76 ++ 2014-09-06 14:58:56 +04:00
Nekotekina 95734b8b9a cellSync2 fixes 2014-09-06 14:52:22 +04:00
Alexandro Sánchez Bach 7e758970cf Merge pull request #791 from Nekotekina/master
vm:: replacement 2
2014-09-06 02:09:16 +02:00
Nekotekina b0d9fba418 Conflicts fixed 2014-09-06 02:54:42 +04:00
Nekotekina 12becc6120 MemoryBase::operator[] replaced 2014-09-06 02:12:10 +04:00
Nekotekina db9cbe6cdd MemoryBase::operator+ replaced 2014-09-06 00:26:36 +04:00
Nekotekina feec20ac3e Compilation fix, be_t fix
+ CellWebBrowserConfig2 struct
2014-09-05 21:54:06 +04:00
Nekotekina 225dba754d GetMemFromAddr, VirtualToRealAddr replaced
Some arg types changed
2014-09-05 21:23:00 +04:00
Nekotekina f298d0451e Attempt to fix some warnings 2014-09-05 15:24:37 +04:00
Nekotekina 964c1bfd6c WriteString replaced
strcpy_trunc (defined in GNU.h) is better for fixed-length char arrays
2014-09-05 03:23:36 +04:00
Alexandro Sánchez Bach 3ffc0edac9 Merge pull request #790 from tambry/cellPamfAccessViolationFix
Fix cellPamfReaderGetPresentationStartTime access violation
2014-09-04 22:03:16 +02:00
Nekotekina 27b24132a0 sys_ppu_thread_create fix 2014-09-04 23:55:06 +04:00
Raul Tambre cef2c59ae2 Fix cellPamfReaderGetPresentationStartTime access violation
Should also fix access violations for other cellPamf functions
2014-09-04 22:39:08 +03:00
Nekotekina 4346514b9d Compilation fix 2014-09-04 21:39:02 +04:00
Nekotekina 9f2afffca1 Some functions removed 2014-09-04 21:32:20 +04:00
B1ackDaemon 2084665cc1 Merge pull request #789 from tambry/cellSync2InitAndEstimate
Added cellSync2 attribute initilization
2014-09-04 18:36:06 +03:00
Raul Tambre e6ab29346e Added cellSync2 attribute initilization
Also added checks for EstimateBufferSize functions
2014-09-04 18:27:19 +03:00
Nekotekina 05cebd1017 re() removed, added be_t<const T> specialization 2014-09-04 13:21:23 +04:00
Nekotekina 4b49d57f97 Small fix 2014-09-03 21:09:10 +04:00
Nekotekina 1337cf4f04 Some memory functions removed 2014-09-03 20:33:30 +04:00
B1ackDaemon c51e52614e Merge pull request #787 from Bigpet/unixtypo
unix preprocessor define typo fixed
2014-09-03 13:20:22 +03:00
Peter Tissen 383f6aff2b unix preprocessor define typo fixed 2014-09-03 12:12:50 +02:00
Nekotekina d0e532e7ce DynamicMemoryBlockBase.h removed
Map() and Unmap(): roughly rewritten.
I checked every memory-related syscall and I'm sure that they don't
really need any mirroring. Some unused code deleted.
2014-09-03 01:48:44 +04:00
B1ackDaemon 82f31b6436 Merge pull request #786 from tambry/cellSaveDataFixes
Removed cellSaveDataListAutoSave and cellSaveDataListAutoLoad until they can be fixed
2014-09-02 22:04:36 +03:00
Raul Tambre e6595f05bc Removed cellSaveDataListAutoSave and cellSaveDataListAutoLoad until they can be fixed
Also added a lot of TODO printouts for other save data functions.
2014-09-02 19:58:42 +03:00
B1ackDaemon 505dacf152 Merge pull request #785 from Nekotekina/master
vm:: global replacement
2014-09-02 16:03:07 +03:00
Nekotekina fa43e80206 Small mistake 2014-09-02 16:50:19 +04:00
Nekotekina 47ee010b64 Another little bug 2014-09-02 16:45:53 +04:00
Nekotekina 30d7fcd288 Small mistake 2014-09-02 16:18:50 +04:00
Nekotekina 5a20d41fb2 Conflicts fixed 2014-09-02 05:25:57 +04:00
Nekotekina 1626df7e46 Compilation fix 2014-09-02 05:14:24 +04:00
Nekotekina b952017a3a mem_ptr_t replaced 2014-09-02 05:05:13 +04:00
Nekotekina bd9775e0eb Callbacks fix + TODO 2014-09-02 02:59:46 +04:00
Nekotekina 6e02477fc6 Some warnings fixed 2014-09-02 02:35:10 +04:00
Nekotekina 9c94a6943d mem_bptr_t replaced 2014-09-02 02:22:13 +04:00
Nekotekina 37da5589e4 Compilation fix 6 2014-09-02 01:46:02 +04:00
Nekotekina 51ea1e3bed Compilation fix 5 2014-09-02 01:41:36 +04:00
Nekotekina 73555c1df1 Compilation fix 4 2014-09-02 01:22:07 +04:00
Alexandro Sánchez Bach 294d94a2d9 Merge pull request #784 from tambry/cellNetCtlNetStart
Added cellNetCtlNetStartDialogLoadAsync and cellNetCtlNetStartDialogUnloadAsync
2014-09-01 21:38:12 +02:00
Nekotekina 4f6a407393 Compilation fix 3 2014-09-01 22:29:51 +04:00
Nekotekina 09022b1000 Compilation fix 2 + callback fix 2014-09-01 21:38:55 +04:00
Raul Tambre 9ef074c7ef Added cellNetCtlNetStartDialogLoadAsync and cellNetCtlNetStartDialogUnloadAsync 2014-09-01 19:52:36 +03:00
Nekotekina 3b764d45f2 Compilation fix 2014-09-01 20:45:22 +04:00
Nekotekina 774b5be7d7 Patch from DH applied 2014-09-01 20:16:44 +04:00
Nekotekina f31ed4e9f2 mem_func_ptr_t replaced 2014-09-01 16:47:26 +04:00
Nekotekina 9501869aa1 mem32_t replaced 2014-09-01 04:51:48 +04:00
Nekotekina 0b5ef1d8f9 mem64_t replaced
Added conversion from vm::var to vm::ptr of the same type.
2014-09-01 02:58:08 +04:00
Nekotekina 0d94c78e63 mem16_t replaced
I think it's not bad to use pointer type when possible, because it's
often originally pointer, not reference.
2014-09-01 01:55:38 +04:00
Alexandro Sánchez Bach 6fa75cf993 Merge pull request #783 from lioncash/consts
Core: Apply const to some functions
2014-08-31 22:56:39 +02:00
Lioncash 82840282fb Core: Apply const to some functions 2014-08-31 16:12:09 -04:00
Nekotekina 49b295e332 Bugs fixed 2014-08-31 23:38:03 +04:00
Nekotekina 06486b6537 Bug fixed 2014-08-31 21:13:21 +04:00
Nekotekina 96d7034c96 Compilation fix 3 2014-08-31 19:48:45 +04:00
Nekotekina f6f58b7615 Compilation fix 2 2014-08-31 19:39:01 +04:00
Nekotekina 8e5980b307 Compilation fix 2014-08-31 19:31:26 +04:00
Nekotekina a8cfefac07 vm::ptr for u8/char types, mem_list_ptr_t removed 2014-08-31 19:01:48 +04:00
Nekotekina ebc4fa3e81 Compilation fix 2014-08-31 15:18:32 +04:00
Nekotekina 571bd63644 Test 2014-08-31 13:54:12 +04:00
Nekotekina 26e03fa794 Compilation fix 3 2014-08-31 03:38:55 +04:00
Nekotekina 140d40b5bc Compilation fix 2 2014-08-31 03:19:10 +04:00
Nekotekina ff3df64a26 Compilation fix 2014-08-31 03:06:43 +04:00
Nekotekina 367b8e7129 memory-wip branch merged 2014-08-31 02:15:11 +04:00
Nekotekina 9e2bb9e9d2 Some warnings fixed 2014-08-31 00:41:01 +04:00
B1ackDaemon 5a043ddacb Merge pull request #780 from tambry/minorFixes
Minor shortening in Resc
2014-08-30 22:11:42 +03:00
Nekotekina fb1d7d3982 Some warnings fixed 2014-08-30 22:35:18 +04:00
Nekotekina 3269c88d02 Some warnings fixed, some code removed 2014-08-30 21:51:00 +04:00
Nekotekina 8dfe7138df (nothing, really) 2014-08-30 17:52:12 +04:00
B1ackDaemon d99ae7b21c Merge pull request #781 from Nekotekina/master
wxRemoval©
2014-08-30 13:19:00 +03:00
Nekotekina d14f22d059 Compilation fix 2 2014-08-30 00:26:27 +04:00
Nekotekina 6cb2518a81 Compilation fix 2014-08-29 23:59:17 +04:00
Nekotekina 120c3261b4 <wx/math.h> excluded, wxString forwarded 2014-08-29 23:51:11 +04:00
Nekotekina 56ba26ab24 cellMsgDialog code moved 2014-08-29 22:30:21 +04:00
Nekotekina 21e254d05f Compilation fix 5 2014-08-29 17:25:01 +04:00
Nekotekina 2c8b485ba0 Compilation fix 4 2014-08-29 17:06:58 +04:00
Nekotekina 851ae920b9 Compilation fix 3 2014-08-29 16:27:25 +04:00
Nekotekina 12f4f35cfa Compilation fix 2 2014-08-29 16:21:23 +04:00
Nekotekina 0be2728e19 Compilation fix 2014-08-29 16:07:50 +04:00
Nekotekina 028ce2dd9f stdafx_gui.h created, wx removed from stdafx.h 2014-08-29 02:49:26 +04:00
Nekotekina 693e7a38fa Some std include moved 2014-08-28 20:29:05 +04:00
Nekotekina b37f3e1b93 mem_class_t eliminated
It didn't work for some reasons anyway,
2014-08-28 05:18:35 +04:00
Nekotekina f6bb62a76c cellFiber stub activated 2014-08-28 02:14:24 +04:00
Nekotekina d5aa7aae43 sys_spu_thread_group_exit 2014-08-28 01:04:55 +04:00
Nekotekina 1065eb17de sys_memory_get_page_attribute faked correctly 2014-08-27 23:05:46 +04:00
Nekotekina 6a996fcd0a cellSpursJq stub 2014-08-27 18:37:51 +04:00
Nekotekina 0fb45cccbc cellSync2 stub 2014-08-27 17:11:34 +04:00
Nekotekina bbf7508d41 cellSync2 stub activated 2014-08-27 02:44:32 +04:00
Nekotekina 36e691c2db Small fix 2014-08-27 01:09:50 +04:00
Raul Tambre 0d6386f391 Minor shortening in Resc 2014-08-26 21:07:05 +03:00
Alexandro Sánchez Bach 0b52abeaf8 Merge pull request #779 from Nekotekina/master
SC_FUNC fix
2014-08-26 19:54:17 +02:00
Nekotekina d7fd8e3ca6 Small fix 2014-08-26 20:45:43 +04:00
Nekotekina 5d3a612003 SC_FUNC.h rewritten
Now float arguments should work correctly
2014-08-26 18:38:14 +04:00
Nekotekina 9eda0aa245 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-26 04:52:28 +04:00
Alexandro Sánchez Bach 08f192ee0e Merge pull request #778 from DHrpcs3/gcm-wip
cellGcmSys and lv2 updates
2014-08-26 01:58:10 +02:00
Nekotekina 78cbb90ef6 Some leaks fixed 2014-08-26 03:55:37 +04:00
Alexandro Sánchez Bach 5bd85bd4eb Minor lv2 / GCM updates and double-click loading 2014-08-26 01:45:15 +02:00
Alexandro Sánchez Bach 13fec1cd9a GCM Report/Notify and sys_rsx functions 2014-08-25 23:41:57 +02:00
Nekotekina 455bdc3819 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-26 00:52:26 +04:00
Alexandro Sánchez Bach 472a71fb8f Merge pull request #777 from tambry/contentErrorDialogFix
Fix access violation when directory name is not given
2014-08-25 21:15:51 +02:00
Raul Tambre 6397640df8 Fix access violation when directory name is not given
Instead now displays it as "Unknown"
2014-08-25 21:59:15 +03:00
Nekotekina 04c67c3f4b Compilation fix 2014-08-25 22:50:24 +04:00
Nekotekina a74e07dc40 Some cleanup 2014-08-25 22:09:48 +04:00
Nekotekina f6ba1eaebd SPU spr name table 2014-08-25 21:01:40 +04:00
Nekotekina 61c4a88ab4 rFile.h, Thread.h, IdManager.h includes moved 2014-08-25 18:56:13 +04:00
Alexandro Sánchez Bach 3c562afd49 Merge pull request #776 from Nekotekina/master
GUI callbacks
2014-08-25 04:39:38 +02:00
Nekotekina bed3260e45 Compilation fix 2014-08-25 03:38:11 +04:00
Nekotekina a324b58145 Compilation fix (?) 2014-08-25 03:08:25 +04:00
Nekotekina 84c5899faf Abstract GSFrameBase class and callback 2014-08-25 02:23:26 +04:00
Nekotekina 50b5d72bb2 Include cleaning 2014-08-24 21:42:19 +04:00
Alexandro Sánchez Bach 6f0531b3f7 Merge pull request #775 from Nekotekina/master
Many changez
2014-08-24 01:00:16 +02:00
Nekotekina 11f618fdef Compilation fix 2014-08-24 02:34:04 +04:00
Nekotekina 7c7782cd4c Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-24 02:20:05 +04:00
Alexandro Sánchez Bach 23fb4734ea Merge pull request #774 from tambry/cellSailThings
Added cellSail structures and callbacks
2014-08-24 00:04:22 +02:00
Nekotekina e353c39522 cellGem bug fixed 2014-08-24 00:42:49 +04:00
Nekotekina 4ffd03fe3e Include clearing 2014-08-24 00:40:04 +04:00
Raul Tambre 31131c17ef Added cellSail structures and callbacks 2014-08-23 22:41:22 +03:00
Nekotekina b005ee3cda Log include fixes 2014-08-23 18:51:51 +04:00
Alexandro Sánchez Bach c71ed13f1a Merge pull request #770 from tambry/cellNetCtlImprovements
More improvements and small additions to cellNetCtl
2014-08-23 15:28:57 +02:00
Raul Tambre 9d2fd7a27f More improvements and small additions to cellNetCtl 2014-08-23 16:27:25 +03:00
Alexandro Sánchez Bach 889e7807cb Merge pull request #771 from tambry/cellSaveDataListAuto
Added Added cellSaveDataListAutoSave and AutoLoad
2014-08-23 15:11:39 +02:00
Alexandro Sánchez Bach 0d4c10b56c Merge pull request #773 from tambry/OverwriteFix
Fix overwriting, when installing PKG files
2014-08-23 14:57:21 +02:00
Raul Tambre 7a7264db33 Use std::string for installing PKG files
Also now only refreshes, when it could open the PKG file.
2014-08-23 10:50:34 +03:00
Raul Tambre ae47cdaad8 Fix overwriting, when installing PKG files
Now properly removes the directory and tries to continue installation.
2014-08-23 10:30:26 +03:00
Nekotekina efa538f9d7 include clearing 2014-08-23 04:16:54 +04:00
Nekotekina 0d15fc35d7 Compilation fix 2014-08-23 01:31:39 +04:00
Nekotekina 861ce9e733 include clearing 2014-08-23 01:15:02 +04:00
Raul Tambre 9c6b935770 Added Added cellSaveDataListAutoSave and AutoLoad
Also fixed logging of container argument for all other save data
functions.
2014-08-22 22:34:43 +03:00
Nekotekina 102f8cf993 Compilation fix 2014-08-22 20:54:53 +04:00
Nekotekina 652c5901f8 Another try 2014-08-22 20:36:27 +04:00
Nekotekina a8b5912340 Compilation fix 2 (not sure) 2014-08-22 19:33:01 +04:00
Nekotekina 52cf911c60 Compilation fix 2014-08-22 18:58:50 +04:00
Nekotekina 7a466b7fb7 Conflicts fixed 2014-08-22 18:30:39 +04:00
Nekotekina 5abd3fabfa Attempt to remove some includes 2014-08-22 18:21:55 +04:00
Nekotekina a169c5bcac Reservation global struct removed
It wasn't solving anything, unfortunately.
2014-08-22 01:37:45 +04:00
Nekotekina 184007e1e0 sys_spu_thread_throw_event 2014-08-21 16:55:28 +04:00
Nekotekina 4760ec63e2 cellSpurs: debug preparations
Almost all functions registered
2014-08-21 13:56:02 +04:00
Nekotekina f153143c9d still FSCRRD 2014-08-21 06:20:41 +04:00
Nekotekina 1f3f6f4664 sys_event_flag_set_bit_impatient 2014-08-21 05:31:45 +04:00
Nekotekina 1941f3d916 Interrupt handling changed 2014-08-21 05:02:55 +04:00
Nekotekina 126b636edf Light hack for FSCRRD and FSCRWR
SPU_*Event* channels implemented for LR event
MFC_RdTagMask implemented
2014-08-21 02:12:56 +04:00
Nekotekina 9eb280c367 SetCurrentNamedThread() 2014-08-20 18:23:48 +04:00
Nekotekina dd9df4f36f _sys_spu_printf_initialize
_sys_spu_printf_finalize
_sys_spu_printf_attach_group
_sys_spu_printf_detach_group
_sys_spu_printf_attach_thread
_sys_spu_printf_detach_thread
2014-08-20 14:21:39 +04:00
Nekotekina ffa258d334 Some fixes 2014-08-20 04:32:25 +04:00
Nekotekina 0a0ccb54bf Small fix 2014-08-19 23:28:50 +04:00
Nekotekina 89b944c397 REG_FUNC macros
And some auxiliary changes
2014-08-19 22:17:20 +04:00
Hykem 0d43c822cd Merge pull request #769 from lioncash/ini
Ini: Remove dead code
2014-08-19 15:44:47 +01:00
Lioncash 46a472acf9 Ini: Remove dead code 2014-08-19 10:25:13 -04:00
Alexandro Sánchez Bach 29a7a619bc Merge pull request #766 from DHrpcs3/prx_loader
Kernel Explorer implemented
2014-08-19 14:03:59 +02:00
Alexandro Sánchez Bach a010f802ca Linux compilation fixes 2014-08-19 13:57:05 +02:00
Alexandro Sánchez Bach c273c0e42b Minor sys_prx update 2014-08-19 13:19:24 +02:00
Alexandro Sánchez Bach d3e9e1296c Kernel Explorer implemented 2014-08-19 13:19:22 +02:00
Alexandro Sánchez Bach d53327f8bb Updated IDManager
ID member m_flags has been replaced with m_type, which stores the type
of the object referenced by the ID and added std::set<IDType> to the ID
manager to group relevant IDs in order to use them later in some
lv2/sys_process functions and the Kernel Explorer.
2014-08-19 13:10:41 +02:00
Alexandro Sánchez Bach 475fb0d8c8 Merge pull request #767 from lioncash/logical
GLGSRender: Fix always false error condition
2014-08-19 11:25:31 +02:00
Alexandro Sánchez Bach 6cd67be087 Merge pull request #768 from lioncash/delete
cellL10n: Fix mismatching delete call, should be delete[]
2014-08-19 11:23:36 +02:00
Nekotekina 4446aa5d17 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-19 12:32:00 +04:00
Lioncash 2e6ce1c94a cellL10n: Fix mismatching delete call, should be delete[] 2014-08-19 03:07:18 -04:00
Lioncash 538498f21f GLGSRender: Fix always false error condition 2014-08-19 02:48:11 -04:00
Alexandro Sánchez Bach 529d0dbbbe Vertex Data base offset/index
Fixed incorrect default value in RSXTexture.
2014-08-19 02:10:29 +02:00
Nekotekina afe984ca29 Small fix 2014-08-19 02:33:21 +04:00
Nekotekina 293f276f87 Some headers defined 2014-08-19 01:16:48 +04:00
Alexandro Sánchez Bach cf9769fe65 Fragment Shader recompiler comments
Don't expect changes due to this commit.
2014-08-18 22:07:52 +02:00
Nekotekina 9ba553643c cellSyncLFQueueClear
cellSyncLFQueueSize
cellSyncLFQueueDepth
_cellSyncLFQueueGetSignalAddress
cellSyncLFQueueGetDirection
cellSyncLFQueueGetEntrySize
2014-08-18 20:12:03 +04:00
Alexandro Sánchez Bach b23a5f2312 RSXVertexData bugs fixed
* Some extra info on sys_rsx syscalls
* Code cleaned in GLGSRender.cpp
2014-08-18 16:37:23 +02:00
Alexandro Sánchez Bach f71780609d Merge pull request #765 from Syphurith/patch-L10nConvertStr-rebuilt
L10nConvertStr
2014-08-18 12:36:53 +02:00
luxsie 7bbf4bbaeb Implemented L10nConvertStr as only char* -> char* (type).
This may be used in other l10n functions, since it was designed to receive void* pointer.
Find sizeof(size_t) is 4 (uint32_t?) in Guided Fate Paradox. Thank @B1ackDaemon for testing.
Changed log content for this function. Also fixed many typos..
Need windows sdk for code page transformation on windows. Need iconv to build on Linux/Mac.
Original source for char to char codepage transformation is already tested using codeblocks and vs.
Noticed l10n_conv_t is omitted in reference, which may be replaced by iconv_t or simply other function.
Modified .travis.yml to apt-get install libc6-dev and removed -liconv from CMakeFile.txt.
2014-08-18 17:47:54 +08:00
Nekotekina 07a5720c17 SPU: some instructions removed
They can't be used on PS3.
Bitfields for interrupt flags added.
2014-08-18 04:23:05 +04:00
Nekotekina 8a785fefc2 SPR are not used 2014-08-18 02:46:39 +04:00
Nekotekina 55ee7065be SPR removed from SPU 2014-08-18 02:39:25 +04:00
Nekotekina 64935ccee6 syncLFQueueCompletePopPointer + bugfix 2014-08-18 01:35:10 +04:00
Alexandro Sánchez Bach f691746771 Merge pull request #763 from DHrpcs3/gcm-wip
cellGcmSys and sys_rsx changes
2014-08-17 22:11:58 +02:00
Nekotekina cf5dbdbdb5 syncLFQueueGetPopPointer + bugfix 2014-08-17 19:08:26 +04:00
Nekotekina db676256d7 cellPadSetPortSetting fix 2014-08-17 18:59:28 +04:00
Nekotekina e1ac43e1b8 sys_spu_thread_group_join fix 2014-08-17 18:46:21 +04:00
Alexandro Sánchez Bach bb1749d3da cellGcmSys changes and minor fixes 2014-08-17 11:22:36 +02:00
B1ackDaemon 8236b3d034 Merge pull request #762 from tambry/GrammaticalFixes
Fixed some grammatical mistakes
2014-08-17 11:00:49 +03:00
Raul Tambre 9b1a2e50f2 Fixed some grammatical mistakes 2014-08-17 10:53:09 +03:00
B1ackDaemon d9b5cafdee Merge pull request #761 from tambry/cellLoadingFixes
Fix sceNpClans, sceNpCommerce2, sceNpSns and sceNpTus functions not being registered
2014-08-17 09:29:06 +03:00
Raul Tambre 0489f9c342 Fix sceNpClans, sceNpCommerce2, sceNpSns and sceNpTus functions not being registered 2014-08-17 09:18:53 +03:00
Alexandro Sánchez Bach b7be8b19ef Updates in sys_rsx and CellGcmDisplayInfo
Thanks a lot to @3141card for all the relevant information about RSX
related lv2 syscalls.
2014-08-16 23:45:56 +02:00
Nekotekina 50fb51dd0d syncLFQueueGetPushPointer, syncLFQueueCompletePushPointer 2014-08-17 01:39:01 +04:00
B1ackDaemon 2b4f44c0b2 Merge pull request #760 from Syphurith/patch-UI
UI: Clear command for Log Console
2014-08-16 21:09:22 +03:00
B1ackDaemon 95a66afbe6 Merge pull request #759 from tambry/cellGem
Enabled cellGem and added cellGemGetMemorySize
2014-08-16 21:09:12 +03:00
luxsie b82d2caa6b typo fix: added missing header. really sorry for that. 2014-08-17 00:33:24 +08:00
Raul Tambre 1e4f95dee3 Enabled cellGem and added cellGemGetMemorySize 2014-08-16 19:20:16 +03:00
luxsie e360746265 Give Log Console (ConLogFrame) a Context Menu with Copy and Clear actions. 2014-08-17 00:03:31 +08:00
Nekotekina 152c2b87a4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-16 19:01:25 +04:00
Hykem bf8b066d97 Merge pull request #757 from tambry/SceNpImprovements
Huge SceNp header additions and splitting
2014-08-15 18:27:15 +01:00
Hykem b78d0a8e5b Merge pull request #756 from Syphurith/patch-UI
Added Save Data Utility UI (stub)
2014-08-15 18:26:40 +01:00
Raul Tambre d36580f1dc Huge SceNp header additions and splitting
TUS, SNS, Commerce and Clans modules are now in seperate files.
Added a lot of headers and structures.
2014-08-15 17:57:55 +03:00
luxsie d949ef1b8a Removed checking <0 on unsigned int. (lol) 2014-08-15 21:36:20 +08:00
luxsie 9e59ccd9af Typo Fix. Bind submenu items. 2014-08-15 21:02:18 +08:00
Nekotekina cb58a773c9 Some hack 2014-08-15 16:50:59 +04:00
luxsie 5531a615e6 Added Save Data Utility UI (stub).
May be connected to real data after those related save data list get implemented, with those data sent to UI decided.
Also removed some comments from Auto-Pause.
2014-08-15 19:44:16 +08:00
luxsie 98cdbb759b Make Auto-Pause UI better. 2014-08-15 15:02:36 +08:00
B1ackDaemon 4d88cfed95 Merge pull request #755 from Syphurith/patch-AutoPause
Typo fix for Auto-Pause GUI.
2014-08-14 19:54:52 +03:00
luxsie b9b9eb7fb2 Typo fix for checking input against what program get. 2014-08-15 00:04:32 +08:00
Hykem d1e74044f9 Merge pull request #754 from Syphurith/patch-AutoPause
Auto-Pause GUI Configuration
2014-08-14 16:39:35 +01:00
Hykem 004df937ed Merge pull request #752 from Syphurith/patch-syscall-177
SysCalls 177 sys_spu_thread_group_terminate
2014-08-14 16:36:53 +01:00
luxsie 069aa9fb2a Added GUI Configuration for Auto-Pause.
You can easily configure it as what you do for VHD/VFS.
To disable/enable Auto-Pause, find the configuration checkboxes from HLE/Misc panel in Config->Setting of rpcs3.
2014-08-14 23:22:13 +08:00
Nekotekina 9f0c5899d6 Little fix (forbids pointer arithmetic in some places) 2014-08-14 16:15:04 +04:00
Nekotekina c9cd80c089 Memory bugs fixed 2014-08-14 16:02:01 +04:00
Nekotekina 369c667faa syncLFQueueCompletePushPointer 2014-08-14 01:39:54 +04:00
Nekotekina 8ec47b7e27 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-14 01:03:01 +04:00
B1ackDaemon 27403162ad Merge pull request #753 from tambry/NpDrmIsAvailable2
Implement sceNpDrmIsAvailable2
2014-08-13 22:40:23 +03:00
Raul Tambre 91b4596c0b Implement sceNpDrmIsAvailable2 2014-08-13 22:29:38 +03:00
B1ackDaemon d7a4f3ed20 Merge pull request #751 from tambry/RWLockFix
Actually fix sys_rwlock_create
2014-08-13 22:06:28 +03:00
Nekotekina 4b72ecda0d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-13 22:22:44 +04:00
Raul Tambre 63088515b4 Actually fix sys_rwlock_create 2014-08-13 21:01:09 +03:00
luxsie 2d29023931 Implemented Syscalls 177. Not tested (having nothing to trigger it)
Added State changes for sys_spu_thread_group_* calls.
Does almost nothing for 176 and skips the EPERM check for 177.
2014-08-14 01:55:35 +08:00
B1ackDaemon 618d2c85ab Merge pull request #750 from Syphurith/patch-AutoPause
Auto-Pause At Function Call and System Call
2014-08-13 20:22:44 +03:00
Hykem 351d6eabb8 Merge pull request #747 from tambry/FlipImmediate
Somewhat implemented cellGcmSetFlipImmediate
2014-08-13 16:48:30 +01:00
Hykem b005d2fbd7 Merge pull request #746 from tambry/DrmAvailableViolationFix
License isn't always needed, fixes access violation
2014-08-13 16:48:02 +01:00
Hykem 1b41cb0e80 Merge pull request #745 from tambry/DirNameFix
Fix redeclaration
2014-08-13 16:47:45 +01:00
Hykem 60cb52bd23 Merge pull request #743 from tambry/DefaultRWLock
Create RWLock with default attributes, when attributes is a null pointer
2014-08-13 16:47:28 +01:00
Raul Tambre 134ee1eff0 Somewhat implemented cellGcmSetFlipImmediate
Also a small change (optimization?) in cellGcmSetPrepareFlip()
2014-08-13 17:00:37 +03:00
luxsie ea00c3a07f Auto-Pause At Function Call and System Call.
Would have a configuration window (with create the list, and enable/disable, being something similar to VFSManger and etc).
Move the code to Debug::AutoPause in AutoPause.cpp and AutoPause.h
It triggers currently in GameViewer, and would finally change to somewhere else.
Well and now it is all enabled (Function call + System call) by default.
2014-08-13 20:54:27 +08:00
Raul Tambre 8f4d8f82ed License isn't always needed, fixes access violation 2014-08-13 15:25:13 +03:00
Raul Tambre 03747e3106 Fix redeclaration 2014-08-13 13:53:21 +03:00
B1ackDaemon 36ab30d3e9 Merge pull request #744 from tambry/DataPatchCheckFix
Don't set game's size info in Patch and Data check
2014-08-13 12:53:29 +03:00
B1ackDaemon ae1fc37eeb Merge pull request #742 from archshift/gitignore
Add build directory to .gitignore
2014-08-13 12:53:14 +03:00
Raul Tambre 1a92526ba0 Don't set game's size info in Patch and Data check 2014-08-13 10:57:55 +03:00
Raul Tambre 3095d01144 Create RWLock with default attributes, when attributes is a null pointer 2014-08-13 10:46:17 +03:00
archshift 1570bee4b8 Add build directory to .gitignore
Many people prefer to build out-of-source, especially in the ./build directory. This prevents it from being tracked by git.
2014-08-13 00:43:11 -07:00
B1ackDaemon 22d018c4cd Merge pull request #741 from tambry/RefixCellGame
Re-fixed content error dialogs
2014-08-13 10:04:18 +03:00
Raul Tambre 980dfc8f4b Re-fixed content error dialogs 2014-08-13 09:39:45 +03:00
B1ackDaemon 72f1206585 Merge pull request #740 from tambry/ErrorDialogFix
Improve content errors and fix access violation
2014-08-13 00:23:52 +03:00
B1ackDaemon 5b89d137fc Merge pull request #739 from tambry/BootCheckFix
Don't set game's size info when it's a null pointer
2014-08-13 00:23:42 +03:00
Raul Tambre 7dc48425c1 Improve content errors and fix access violation 2014-08-12 23:27:13 +03:00
Raul Tambre 8095c34e49 Don't set game's size info when it's a null pointer 2014-08-12 20:44:28 +03:00
Nekotekina ce0a7fda5c syncLFQueueGetPushPointer 2014-08-12 19:46:22 +04:00
Nekotekina 8002295397 Merge branch 'master' of https://github.com/Nekotekina/rpcs3 2014-08-12 13:05:45 +04:00
Nekotekina fb80c1419c Endianness fix (I'm idiot) 2014-08-12 13:05:07 +04:00
Nekotekina 24019fa7b2 CellSyncLFQueue draft 2014-08-12 13:05:05 +04:00
Nekotekina 6383288311 syncLFQueueInitialize 2014-08-12 13:05:03 +04:00
B1ackDaemon 7645f9a3dd Merge pull request #738 from Syphurith/patch-1
Auto-Pause at specified function call.
2014-08-12 01:18:45 +03:00
Nekotekina 99b4b36935 Endianness fix (I'm idiot) 2014-08-12 01:10:18 +04:00
luxsie fcab9b2f8e typo fix. 2014-08-12 04:24:12 +08:00
luxsie e9ee084231 Automatic-Pause at specified function calls, can be set up using "pause.bin" with rpcs3.
You would need to find the function ids you wanna play with and write them reversed with Hex Editor.
That's quite pity i have no knowledge about wxWidgets so there is no GUI to set up this.
2014-08-12 04:15:20 +08:00
Nekotekina 641efa9b34 CellSyncLFQueue draft 2014-08-11 22:35:34 +04:00
Nekotekina aed250d3b0 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-11 13:48:36 +04:00
B1ackDaemon bbb7435041 Merge pull request #737 from tambry/LastSyscallName
Log name of syscall, when access violation occurs
2014-08-10 23:18:02 +03:00
Raul Tambre 54839b293b Log name of syscall, when access violation occurs 2014-08-10 22:56:42 +03:00
B1ackDaemon 2fbd9453dd Merge pull request #736 from tambry/cellSpursTasksetAttribute2
Added TasksetAttribute2 initilization and fixed wrong TODO message
2014-08-10 22:16:02 +03:00
Raul Tambre 0aed6d8c19 Add TaskAttribute2 initilization 2014-08-10 22:06:51 +03:00
Raul Tambre 51dd8cb5c3 Add TasksetAttribute2 initilization, fix wrong TODO
Also fixed cellSpurs.h formatting
2014-08-10 19:05:41 +03:00
B1ackDaemon b8c0b3af73 Merge pull request #735 from raven02/patch-4
Damn typo
2014-08-10 02:18:53 +03:00
raven02 e948842faa Damn typo 2014-08-10 07:10:44 +08:00
Nekotekina c7e77730fe syncLFQueueInitialize 2014-08-09 23:39:56 +04:00
B1ackDaemon 6bd45f9697 Merge pull request #734 from Nekotekina/master
Logging last syscall code for memory error
2014-08-09 20:19:23 +03:00
Nekotekina dadd93bb84 Revert "Return CELL_EFAULT if specified address is invalid"
This reverts commit 15fa50f24e.
2014-08-09 20:39:28 +04:00
Nekotekina 4c29c93283 Merge remote-tracking branch 'origin/master' 2014-08-09 20:29:05 +04:00
Nekotekina c3bba76d32 cellSyncLFQueueInitialize preparations 2014-08-09 20:27:13 +04:00
Nekotekina b09412a79a sys_process_get_sdk_version rough implementation 2014-08-09 20:27:11 +04:00
Nekotekina 18e1799980 Last syscall registering 2014-08-09 20:25:05 +04:00
Nekotekina b4615f2452 cellSyncLFQueueInitialize preparations 2014-08-09 20:23:53 +04:00
B1ackDaemon e9835d4a2c Merge pull request #733 from raven02/patch-3
Show game title and ID in log
2014-08-09 19:10:42 +03:00
B1ackDaemon e69744c7ca Merge pull request #732 from raven02/patch-2
Return CELL_EFAULT if specified address is invalid
2014-08-09 19:10:37 +03:00
B1ackDaemon 228c33d44d Merge pull request #731 from raven02/patch-1
FS: add cellFsChmod/SdataOpenByFd/Fsync & cellFsAioWrite
2014-08-09 19:10:34 +03:00
Nekotekina b7ea1f4d44 sys_process_get_sdk_version rough implementation 2014-08-09 20:04:53 +04:00
Nekotekina 6f8fb71d15 Last syscall registering 2014-08-09 20:01:55 +04:00
raven02 e49fcd4b21 Fix typo 2014-08-09 23:31:21 +08:00
raven02 b9ae34cc3b Show game title and ID in log 2014-08-09 23:16:21 +08:00
raven02 15fa50f24e Return CELL_EFAULT if specified address is invalid 2014-08-09 20:36:24 +08:00
raven02 3f65b54a1e cellFsSdataOpenByFd 2014-08-09 17:17:23 +08:00
raven02 6a0ad1b001 cellFsFsync 2014-08-09 16:44:27 +08:00
raven02 1521eea324 Misc cleanup 2014-08-09 16:27:59 +08:00
raven02 ae96537b8d FS: add cellFsChmod & cellFsAioWrite 2014-08-09 15:11:30 +08:00
B1ackDaemon 3d47c8ab9f Merge pull request #730 from Nekotekina/master
Commit collection
2014-08-09 00:27:44 +03:00
Nekotekina c3d84c8f05 Log fix 2014-08-09 00:39:15 +04:00
Nekotekina f0eadc783d Oops. 2014-08-08 22:52:11 +04:00
Nekotekina 231de946a0 Renaming (2) 2014-08-08 22:25:45 +04:00
Nekotekina 7f5ae1cdc2 Renaming (1) 2014-08-08 22:23:30 +04:00
Nekotekina dfd5fd388e Little cleanup 2014-08-08 22:13:17 +04:00
Nekotekina b00e0fcf69 sys_event_flag.cpp restored 2014-08-08 19:55:12 +04:00
Nekotekina b89c4fec3e cellSyncLFQueue moved, cellSpursQueue cleared 2014-08-08 18:50:42 +04:00
Nekotekina 9b24db3a76 cellSyncQueuePeek 2014-08-08 17:54:46 +04:00
Nekotekina 9b24ca7a28 Broken comments 2014-08-08 16:55:51 +04:00
Nekotekina 8169a8e4bb cellSyncRwmWrite 2014-08-08 01:34:56 +04:00
Nekotekina 6568a94b0e cellSyncBarrierWait 2014-08-07 23:16:29 +04:00
Nekotekina fb448461df cellSyncBarrierNotify 2014-08-07 11:59:56 +04:00
Nekotekina 270c851645 vfsLocalDir::IsOpened() implemented 2014-08-06 02:34:26 +04:00
Nekotekina 36f76bf288 Some missing logs 2014-08-06 02:19:33 +04:00
Nekotekina facb412e62 ... 2014-08-05 21:47:07 +04:00
Nekotekina 5621258b9d edat patch 2014-08-05 21:47:05 +04:00
Sacha 9f268065de Fix infinite loop in rMkpath 2014-08-05 21:47:03 +04:00
Nekotekina e7ae71bd73 Copy(To)(From)(Real) elimination
It was nothing but a crutch
2014-08-05 21:33:02 +04:00
B1ackDaemon cb22cbca62 Merge pull request #725 from Nekotekina/edat-fix
edat patch from sent stuff (fixes shit)
2014-08-05 19:37:02 +03:00
B1ackDaemon 6864a3ebcd Merge pull request #724 from xsacha/rFile
Fix infinite loop in rMkpath
2014-08-05 19:36:56 +03:00
Nekotekina 83948a298c ... 2014-08-05 18:41:32 +04:00
Nekotekina d2bb2c71b4 edat patch 2014-08-05 18:36:16 +04:00
Nekotekina 021656d821 Some missing logs 2014-08-05 18:06:40 +04:00
Sacha e1b7380bc6 Fix infinite loop in rMkpath 2014-08-05 22:14:08 +10:00
Nekotekina bdc263bc34 sys_time fix 2014-08-05 14:29:00 +04:00
Nekotekina 8f04ab07ed IsGood() check elimination
Reasons: 1) It's unsafe - we cannot guarantee that address is still good
while it is used. 2) It's wrong in many modules which are usually just
compare pointer with zero.
2014-08-05 14:18:22 +04:00
Nekotekina 48514b0e93 It doesn't hurt if we list all the imports? 2014-08-05 00:25:25 +04:00
Nekotekina 424d5e22d2 GetCount for Out_IntrMBox 2014-08-04 22:43:42 +04:00
Nekotekina f5b3c38c27 Arrgh, wrong checks!!! 2014-08-04 22:33:17 +04:00
Alexandro Sánchez Bach 2fb95556a5 Merge pull request #723 from raven02/patch-3
Remove duplicate
2014-08-04 13:57:32 +02:00
raven02 d48de0afb0 Remove duplicate 2014-08-04 18:36:32 +08:00
Alexandro Sánchez Bach 9223174c0c Merge pull request #722 from DHrpcs3/gcm-wip
Some GCM-related changes
2014-08-04 01:54:44 +02:00
Alexandro Sánchez Bach 90d0e69a56 Fixed error of pull request #714 2014-08-04 01:52:36 +02:00
Alexandro Sánchez Bach f07c35d9ae Renamed Emu/GS -> Emu/RSX 2014-08-04 01:37:23 +02:00
Alexandro Sánchez Bach 48a339fd17 cellGcmSys updated
* cellGcmGetTiledPitchSize (thanks 3141card), cellGcmFunc15.
* sysPrxForUser: _sys_memset
* Created headers cellGcmSys.h and sysPrxForUser.h
* int, int32_t -> s32 and uint32_t -> u32.
2014-08-04 01:37:21 +02:00
Alexandro Sánchez Bach e3d38f704f Merge pull request #714 from xsacha/rFile
More rFile cleanups and fixes.
2014-08-04 01:07:09 +02:00
raven02 7f5cc96842 RSX : fix opengl error 0x505 2014-08-04 00:27:49 +02:00
raven02 fa2fa5b4bf Init cellSail module 2014-08-04 00:09:37 +02:00
Alexandro Sánchez Bach 35b00bf8bc Fixed error of pull request #719 2014-08-04 00:07:50 +02:00
Alexandro Sánchez Bach fc122630d4 Merge pull request #719 from tambry/cellnetctl
Additions and improvements to cellNetCtl
2014-08-03 23:37:50 +02:00
Dante38490 18918db012 Remove the Soft_OAL line
Because now that the file is integrated with git it so it became unnecessary.
2014-08-03 23:29:52 +02:00
Raul Tambre f405395f97 Additions and improvements to cellNetCtl 2014-08-03 09:30:45 +03:00
DHrpcs3 7411012db9 Fixed compilation errors
Implemented vm::ptr & vm::ref
2014-08-01 19:27:48 +03:00
Sacha e8525a6f14 More rFile cleanups and fixes.
Was using fileExists/dirExists before when really should have just been exists. File or Dir doesn't matter and would only create false negatives.
Current working directory shouldn't really be used at all. This is just the folder the application is run from (not even where the .exe resides).
Some of the infos required by vfsLocalDir such as executable may not be portable. Not sure of their intended function as they are never used.
2014-08-01 04:20:00 +10:00
DHrpcs3 cd33be1491 Implemented vm::var.
MemoryAllocator replaced with vm::var
2014-07-31 19:08:02 +03:00
Alexandro Sánchez Bach 6cb083be1a Merge pull request #713 from raven02/patch-2
Fix PBO no initialization
2014-07-30 15:53:58 +02:00
raven02 f52c644af7 Update GLGSRender.cpp 2014-07-30 21:31:55 +08:00
Alexandro Sánchez Bach e56c6914d2 Merge pull request #712 from raven02/patch-17
EDAT: list the edat files name
2014-07-29 23:50:22 +02:00
raven02 33559ca0ea Minor change 2014-07-30 05:48:58 +08:00
raven02 ebec856a36 EDAT: list the edat files name 2014-07-30 05:45:23 +08:00
B1ackDaemon 03627a62eb Merge pull request #711 from raven02/patch-17
RSX: cleanup PBO
2014-07-29 22:49:32 +03:00
raven02 90dd215b8c RSX: cleanup PBO 2014-07-30 03:33:44 +08:00
Alexandro Sánchez Bach 08d22a8033 Merge pull request #710 from tambry/debuggererrorfix
Fix debugger startup error
2014-07-29 14:38:36 +02:00
Raul Tambre 8c6622dd82 Fix debugger startup error 2014-07-29 11:28:15 +03:00
B1ackDaemon b98b3241e7 Merge pull request #709 from Nekotekina/master
Various fixes, new functions
2014-07-29 07:14:01 +03:00
Nekotekina 9d2d5102f6 Conflict fixed 2014-07-29 05:48:29 +04:00
Nekotekina 143a75616c Conflicts fixed 2014-07-29 00:29:38 +04:00
Alexandro Sánchez Bach 9ccc36382b Merge pull request #707 from tambry/newsyscalls
Prepared new SysCalls, made nicer
2014-07-28 17:53:21 +02:00
Raul Tambre 329520168b Prepared new SysCalls, made nicer 2014-07-28 18:40:06 +03:00
Alexandro Sánchez Bach d1343f5415 Merge pull request #706 from raven02/patch-16
Fix spacing
2014-07-28 14:51:54 +02:00
raven02 dbc8f76b52 Add sceNpSignalingDestroyCtx() 2014-07-28 19:15:28 +08:00
raven02 b22ba86183 Fix spacing 2014-07-28 14:10:50 +08:00
B1ackDaemon b2b8cb17cd Merge pull request #702 from raven02/patch-14
RSX: detach shader when clear program buffer
2014-07-27 22:06:29 +03:00
B1ackDaemon 0aae7a5168 Merge pull request #703 from raven02/patch-15
Stub bunch of sceNP functions
2014-07-27 20:52:57 +03:00
raven02 caf5a57875 Stub all remaining sceNP functions 2014-07-28 01:30:25 +08:00
raven02 726760a38e RSX: detach shader when clear program buffer 2014-07-27 22:18:53 +08:00
B1ackDaemon bacc193638 Merge pull request #700 from raven02/patch-13
Regression fix #697
2014-07-27 07:38:45 +03:00
raven02 a7bc421137 Regression fix https://github.com/DHrpcs3/rpcs3/issues/697 2014-07-27 09:24:06 +08:00
B1ackDaemon c41be3a964 Merge pull request #698 from raven02/patch-12
RSX: checkForGlError for Stencil/Depth/Color
2014-07-26 08:50:58 +03:00
raven02 76fb1d9db0 RSX: checkForGlError for Stencil/Depth/Color misc 2014-07-26 12:58:33 +08:00
Alexandro Sánchez Bach c6cac4b205 Cleanup in RSXThread::DoCmd
Some RSX commands added.
Moved unused commands to the bottom of the big switch/case.
2014-07-25 21:03:08 +02:00
Alexandro Sánchez Bach 1d0071302a Merge pull request #696 from raven02/patch-11
Fix flip control gcm sample
2014-07-25 11:11:43 +02:00
Alexandro Sánchez Bach 665aaa0ef5 Merge pull request #695 from raven02/patch-10
RSX : add missing NV4097 method names
2014-07-25 11:10:44 +02:00
raven02 2a16f50f7f Fix flip control gcm sample 2014-07-25 16:43:38 +08:00
raven02 1ac0ae8172 RSX : add missing NV4097 method names 2014-07-25 16:41:59 +08:00
Nekotekina 9d0bd55ec0 cellSyncQueueTryPush, cellSyncQueueTryPop 2014-07-25 12:35:37 +04:00
Alexandro Sánchez Bach c497de1963 Merge pull request #594 from Dante38490/patch-1
Version rpcs3 Update to 0.0.0.5 After create Tag 0.0.0.5
2014-07-25 10:34:28 +02:00
Nekotekina 74e18dc8c9 cellSyncQueuePop...
cellSyncQueueSize,
cellSyncQueueClear implemented
2014-07-24 19:02:04 +04:00
Nekotekina f8d9242743 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-24 17:26:50 +04:00
Dante38490 c28747aef6 Version change to 0.0.0.5 After create Tag 0.0.0.5 2014-07-24 02:54:08 +02:00
Nekotekina 3d184b3a59 cellSyncQueuePush implemented 2014-07-24 01:51:57 +04:00
Alexandro Sánchez Bach 65ecaab2c4 Merge pull request #593 from DHrpcs3/wip
GUI and RSX updates
2014-07-23 20:52:30 +02:00
Alexandro Sánchez Bach 58421029c4 Merge pull request #591 from Bigpet/cmakefix
use a include directory relative to the lists file
2014-07-23 20:40:38 +02:00
Alexandro Sánchez Bach 3689560617 Minor fixes and changes 2014-07-23 20:36:57 +02:00
Peter Tissen afe493f187 use a include directory relatie to the lists file 2014-07-23 19:51:41 +02:00
Alexandro Sánchez Bach 602c436e1c Removed "Boot game and start" entry
There is already a setting on the menu (Settings > HLE > Always start
after boot) to do that. Make it active by default since disabling it is
only useful for debugging purposes.
2014-07-23 12:38:08 +02:00
Alexandro Sánchez Bach abbd3ae239 RSX method naming modified
GCM commands (e.g. cellGcmSet*) are not the same as RSX methods (e.g.
NV4097_*). The name has to be changed.
2014-07-23 00:50:45 +02:00
Alexandro Sánchez Bach 713bff01e1 Flipping / padding on .JPG and .GIF decoding
* Changes in cellJpgDec and cellGifDec come from cellPngDec.
2014-07-22 21:37:45 +02:00
Nekotekina f55afc27a9 cellSyncQueue draft 2014-07-22 23:02:45 +04:00
Alexandro Sánchez Bach fe46a45915 Fixed memory exception on cellJpgDec & cellGifDec
* Added support for CELL_JPGDEC_BUFFER and CELL_GIFDEC_BUFFER.
2014-07-22 17:16:15 +02:00
Nekotekina 1c32a284e1 cellSyncRwmInitialize implemented
cellSyncRwmRead implemented (SPU sample works)
2014-07-22 18:46:31 +04:00
Nekotekina 356904d198 .gitignore updated 2014-07-22 01:55:02 +04:00
Nekotekina 2a5506dae6 cellSyncBarrierInitialize implemented
(SPU sample works)
2014-07-21 23:05:58 +04:00
Nekotekina fa5311718e Small SPU cleanup 2014-07-21 22:35:44 +04:00
Nekotekina e3fbfc4bda Logging option restored 2014-07-21 20:39:00 +04:00
Nekotekina 5c84ad30a1 LogBase class for both SysCallBase and Module 2014-07-21 19:58:03 +04:00
Nekotekina 0865fca90a Fix for SysCallBase 2014-07-21 18:49:56 +04:00
Nekotekina 640de81571 Variadic templates for module logs
Two new module log types: Todo() and Notice()
2014-07-21 18:42:43 +04:00
Nekotekina da8194d659 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-21 14:37:42 +04:00
DHrpcs3 6651795f6d Merge pull request #586 from DHrpcs3/revert-582-patch-7
Revert "Regression fix #343"
2014-07-21 13:30:47 +03:00
DHrpcs3 9c2fe3b25d Revert "Regression fix #343" 2014-07-21 09:57:07 +00:00
Nekotekina fe49046a96 sys_spinlock fixed 2014-07-21 02:30:16 +04:00
Nekotekina 1f64087a3b Fix of fix (damned crutch) 2014-07-20 21:59:59 +04:00
Nekotekina bba74b9056 Compilation fix 2014-07-20 21:52:27 +04:00
B1ackDaemon 1a2da9d608 Merge pull request #585 from raven02/patch-8
Make a spelling difference consistent
2014-07-20 20:23:45 +03:00
Nekotekina 883885dc0b cellSyncMutex fixed 2014-07-20 21:14:04 +04:00
Nekotekina 3d74112aa3 sys_process_is_stack fixed 2014-07-20 21:13:35 +04:00
Nekotekina 25aeb2e086 SysCall table fixes 2014-07-20 21:13:07 +04:00
Nekotekina 41495e5d2a sys_ppu_thread_exit fix 2014-07-20 21:05:48 +04:00
Nekotekina 1f46098b23 Name fix (SPU JIT)
Unnecessary check removed
2014-07-20 21:03:41 +04:00
raven02 5f3ea1005a Make a spelling difference consistent 2014-07-20 14:55:33 +08:00
DH 8b9a46bb39 RSX: fixed scissor 2014-07-19 18:39:47 +03:00
Peter Tissen 0fe32fa0d3 fix a typo in the packaging batch file
the soft_oal.dll was written with a dash which is clearly wrong
2014-07-19 15:09:39 +02:00
DH 68078427aa Fixed LOOP & REP instructions in FragmentShaderDecompiler 2014-07-19 14:58:32 +03:00
DH 7433a021db Improved RSX emulation
- Fixed NV4097_SET_SHADER_CONTROL
- Vertex Shader: SCA instructions don't override VEC result
2014-07-19 12:24:15 +03:00
B1ackDaemon bd04990af3 Merge pull request #583 from DHrpcs3/revert-579-patch-4
Revert "Fix a dst_reg typo for tc9"
2014-07-19 10:06:17 +03:00
B1ackDaemon a7f3b6fd57 Revert "Fix a dst_reg typo for tc9" 2014-07-19 10:04:33 +03:00
Alexandro Sánchez Bach 222750b846 Merge pull request #582 from raven02/patch-7
Regression fix #343
2014-07-18 23:15:06 +02:00
raven02 1a36a2d759 Regression fix #2 2014-07-19 04:33:08 +08:00
B1ackDaemon 9989988cb7 Merge pull request #581 from boxingcow/master
Fix small Clang warning about parenthesis
2014-07-18 21:40:39 +03:00
B1ackDaemon 4e55be9762 Merge pull request #580 from raven02/patch-6
GUI : Boot elf and run at start
2014-07-18 21:31:02 +03:00
boxingcow c7e4c90cb5 Merge git://github.com/DHrpcs3/rpcs3 2014-07-18 19:13:27 +01:00
raven02 f151ba7c53 GUI : Boot elf and run at start 2014-07-19 02:07:50 +08:00
B1ackDaemon e7ad52ee9f Merge pull request #579 from raven02/patch-4
Fix a dst_reg typo for tc9
2014-07-18 20:56:06 +03:00
B1ackDaemon b97ce7732b Merge pull request #578 from Nekotekina/master
Elimination of be_t<> constructors
2014-07-18 20:51:29 +03:00
raven02 d058ef769c Fix a dst_reg typo for tc9 2014-07-19 01:47:58 +08:00
Nekotekina 5f55afda0f Little fix 2 2014-07-18 21:30:22 +04:00
Nekotekina f69337be65 Little fix 2014-07-18 21:04:12 +04:00
B1ackDaemon 2eb73e5b4b Merge pull request #576 from raven02/patch-2
Fix compiler warning
2014-07-18 19:59:14 +03:00
Nekotekina 74914c5916 be_t<> constructor elimination 2014-07-18 20:55:26 +04:00
DHrpcs3 1cfd2c4475 Merge pull request #577 from raven02/patch-3
Regression fix #1
2014-07-18 19:44:31 +03:00
raven02 4856066a81 Regression fix #1 2014-07-18 23:03:39 +08:00
raven02 f729f21e6c Fix compiler warning 2014-07-18 22:19:37 +08:00
Hykem a7971b55ee Merge pull request #574 from Nekotekina/SРU
SPU Fixes
2014-07-17 13:41:15 +01:00
Hykem e6a660a200 Merge pull request #573 from Aslaville/UI
fix broken commit (2267c84d6a)
2014-07-17 13:40:52 +01:00
Nekotekina 7816843dfb Little fix 2014-07-16 22:29:26 +04:00
boxingcow c37c90613f Fix small clang warning 2014-07-16 17:45:54 +01:00
Nekotekina c3e0669435 Time functions fixed 2014-07-16 20:21:09 +04:00
Nekotekina ecbc9d1b08 RawSPU cleanup 2014-07-16 20:10:18 +04:00
Nekotekina 694a2b774e SPU Recompiler fix 2014-07-16 16:15:20 +04:00
Nekotekina 3d0983e7d0 SPU Interpreter fix
(these bugs weren't in SPURecompiler)
2014-07-16 16:13:11 +04:00
Nekotekina 3d9c76a80d RawSPU initialization fix 2014-07-16 16:09:43 +04:00
Nekotekina d94ce7094e Rounding mode set 2014-07-16 16:09:20 +04:00
Nekotekina e1a9f08a91 sys_raw_spu_destroy implemented 2014-07-16 16:07:38 +04:00
Nekotekina b487dcee27 RawSPU initialization fix 2014-07-16 16:06:58 +04:00
Nekotekina 8e19af530b .gitignore fix 2014-07-16 16:03:54 +04:00
David Kiarie 78aef474a5 rename some functions as per their function 2014-07-15 18:29:48 +03:00
David Kiarie dbfd07f11e fix broken commit (2267c84d6a) 2014-07-15 18:04:37 +03:00
Alexandro Sánchez Bach 75e81bc969 Merge pull request #572 from Nekotekina/master
Update
2014-07-15 01:06:53 +02:00
Nekotekina 51f64049ab Callback header fix 2014-07-15 01:33:35 +04:00
Nekotekina 51b54a4d6b SSE4.1 detection 2014-07-15 01:32:32 +04:00
Peter Tissen 38333f01e3 Merge remote-tracking branch 'origin/pr/571' 2014-07-14 22:02:26 +02:00
Sacha 26e1418897 Fix rFile 2014-07-15 05:42:41 +10:00
Nekotekina 01aa74e4a8 IsGoodAddr() bug fixed 2014-07-14 23:15:30 +04:00
B1ackDaemon 73491d4ffa Merge pull request #570 from xsacha/video-fix
Fix issue from #567 that stopped videos from working. Clean up some code...
2014-07-14 21:02:01 +03:00
Sacha 82536b298c Fix issue from #567 that stopped videos from working. Clean up some code. 2014-07-15 03:21:24 +10:00
Hykem 62d3dcaf64 Merge pull request #567 from xsacha/master
c++11 cleanup
2014-07-14 12:04:57 +01:00
Hykem 09d0d81a43 Merge pull request #566 from lioncash/assignments
RSXThread: Remove some redundant assignments
2014-07-14 12:04:22 +01:00
Hykem 17d400f72a Merge pull request #565 from boxingcow/master
Fix the OS X build fixes...
2014-07-14 12:03:57 +01:00
Hykem b930b874fe Merge pull request #557 from Aslaville/ui
rpcs3/Gui:minor gui  fixes
2014-07-14 12:03:19 +01:00
Nekotekina a71053ae15 Asmjit updated 2014-07-14 13:24:10 +04:00
boxingcow ebf713c5a6 Update Memory.h
To remove extraneous code.
2014-07-14 09:18:45 +01:00
Sacha 6bd044f9be c++11 fixups. Initialise to zero where possible. note: cellAudio looks quite messed up. 2014-07-14 17:26:31 +10:00
Lioncash 3c04f2fef9 RSXThread: Remove some redundant assignments 2014-07-14 00:06:15 -04:00
Nekotekina dab3d6c6d6 Callbacks 2014-07-13 23:05:28 +04:00
Nekotekina 1dbbbc55f6 Little fix 2014-07-13 22:59:54 +04:00
Nekotekina 2eafb235ba spu_printf fixed 2014-07-13 22:55:14 +04:00
boxingcow 10647890ef There is a special place in hell for 'Smart Dashes' 2014-07-13 18:51:19 +01:00
Nekotekina 7370c49ff3 Forgotten memory check + PSV stuff fixed 2014-07-13 16:26:38 +04:00
boxingcow 3c8084b2c7 Stupid mistake. 2014-07-13 09:31:11 +01:00
B1ackDaemon 582825934c Merge pull request #563 from Nekotekina/master
Fixed mkdir (PKG Install issue)
2014-07-13 02:21:42 +03:00
Nekotekina 2c7de61027 Compilation fix 2014-07-13 02:56:52 +04:00
Nekotekina 21aedb518c PKG Installing fixed 2014-07-13 02:39:43 +04:00
B1ackDaemon fc962de3dd Merge pull request #562 from boxingcow/master
Fix OS X build
2014-07-13 01:08:31 +03:00
B1ackDaemon f240690ff5 Merge pull request #558 from Bigpet/modunload
unload modules upon stopping
2014-07-13 01:08:25 +03:00
boxingcow b7b3761c09 Add include path for XQuartz on OS X 2014-07-12 22:10:49 +01:00
boxingcow a4f73bc705 Fix broken OS X build with isnan and MAP_ANONYMOUS 2014-07-12 22:06:43 +01:00
boxingcow 634a1f3162 Add .DS_Store to .gitignore 2014-07-12 22:01:41 +01:00
B1ackDaemon b523c2810e Merge pull request #560 from Nekotekina/master
Little fix
2014-07-12 19:53:32 +03:00
Nekotekina 2331c5991a Little fix 2014-07-12 20:38:37 +04:00
Alexandro Sánchez Bach 5835669dd9 Merge pull request #559 from Nekotekina/master
Build fix
2014-07-12 18:07:43 +02:00
Nekotekina a94d0771fe Compilation fix 2 2014-07-12 19:40:52 +04:00
Nekotekina 9b5a3fd2b6 Compilation fix 2014-07-12 19:30:07 +04:00
Nekotekina 1908842255 Build fix
Non-ASCII characters replaced in PPUThread.h
Some cleanup
2014-07-12 18:53:36 +04:00
Alexandro Sánchez Bach 64754a08b4 Merge pull request #417 from xsacha/master
Stdafx: More header cleaning.
2014-07-12 14:03:21 +02:00
Peter Tissen f75a3c8f60 unload modules upon stopping I guess we won't find out what's wrong if we don't let it fail 2014-07-12 13:52:37 +02:00
David Kiarie 2267c84d6a rpcs3/Gui:minor gui fixes
Enable uses to go back after using VHDDManager or
VFSManager by providing Ok and Cancel buttons otherwise I
have to kill rpcs3

signed-off-by: asla<davidkiarie4@gmail.com>
2014-07-12 12:48:58 +03:00
Sacha a1158c9515 Remove some indirect headers. 2014-07-12 17:46:14 +10:00
Sacha 9816ec3aa0 Fix conflicts. 2014-07-12 17:02:39 +10:00
Sacha c09b0f511e More header changes. 2014-07-12 16:33:04 +10:00
Sacha 6e06fdf638 Stdafx: Major header cleanup 2014-07-12 16:33:04 +10:00
Alexandro Sánchez Bach 14050c7302 Removed: "Ignore R/W memory errors" option
Very small commit to take care of one thing missing in #409.

Reasons for that change:
<Nekoteki>AlexAltea: it's fatal error that shouldn't be ignored
<Nekoteki>AlexAltea: the second reason, ps3 can handle page faults by
itself
2014-07-11 18:18:12 +02:00
Alexandro Sánchez Bach 3642b267a0 Merge pull request #409 from Nekotekina/master
Memory system improved
2014-07-11 15:14:26 +02:00
Nekotekina c16daed87d Compilation fix 2014-07-11 16:50:50 +04:00
Nekotekina 2203cb1dcf F|_|C|< the speed, we need some checks 2014-07-11 16:22:56 +04:00
Nekotekina 2fe52451e1 Exceptions fixed 2014-07-11 15:32:34 +04:00
Nekotekina ad524798fa Compilation fix 2014-07-11 13:39:51 +04:00
Nekotekina 125359e30e Some fixes 2014-07-11 13:18:23 +04:00
Nekotekina 259b57c64a Fixed conflicts 2014-07-11 10:09:38 +04:00
Nekotekina cb9c1030a9 Warning fix 2014-07-11 10:01:23 +04:00
Alexandro Sánchez Bach ca3f621b3b Merge pull request #415 from xsacha/master
Stdafx: more cleanup
2014-07-10 23:29:07 +02:00
Sacha 51bb9dced4 Optimise travis a bit more. Use Cmake 3.0. Also drop rPlatform from stdafx. 2014-07-11 07:13:45 +10:00
Sacha 8793d75811 Stdafx: More cleanup 2014-07-11 06:54:12 +10:00
B1ackDaemon 1a1fb622fa Merge pull request #414 from xsacha/master
Use a standard config dir on non-Windows. Fixes #192
2014-07-10 22:56:24 +03:00
Sacha 3737993bb2 Use a standard config dir on non-Windows. Fixes #192
Also remove WindowInfo::GetDefault which was redundant.
2014-07-11 05:45:07 +10:00
B1ackDaemon 313af89d36 Merge pull request #413 from xsacha/master
Warnings: Fix several warnings.
2014-07-10 22:26:57 +03:00
Sacha f256153a2b Warnings: Fix several warnings. 2014-07-11 05:08:05 +10:00
B1ackDaemon 2bd8db5f7a Merge pull request #412 from raven02/patch-23
Remove m_alpha_func sanity check
2014-07-10 21:58:43 +03:00
raven02 8cacbe3567 Remove m_alpha_func sanity check 2014-07-11 02:41:48 +08:00
B1ackDaemon d1533b606b Merge pull request #411 from raven02/patch-22
RSX : set default values using opengl one.
2014-07-10 21:06:47 +03:00
B1ackDaemon c03677bd96 Merge pull request #410 from xsacha/master
CMake and stdafx improvements
2014-07-10 20:28:20 +03:00
raven02 a8480f66e0 RSX : set bunch of default values using opengl one 2014-07-11 01:23:36 +08:00
Sacha 6b148d1d4c CMake: Improve to support build type. Default to release. 2014-07-11 02:46:10 +10:00
Nekotekina 0dfbb5de73 Compilation fix 2014-07-10 18:29:38 +04:00
Sacha ab7a45aede stdafx: move out some uncommon includes 2014-07-11 00:16:26 +10:00
Nekotekina 22b9afdb60 Some cleanup 2 2014-07-10 04:13:04 +04:00
Nekotekina b5f376f834 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-10 02:07:53 +04:00
Alexandro Sánchez Bach 59d0b1da4e Merge pull request #408 from raven02/patch-21
Fix crash in Battle fantasia/Crystal defenders
2014-07-10 00:05:14 +02:00
raven02 96fb8b968f Fix crash in Battle fantasia/Crystal defenders 2014-07-10 05:50:25 +08:00
Alexandro Sánchez Bach 470ffaf167 Merge pull request #407 from Bigpet/appveyorbuild3
Appveyorbuild
2014-07-09 23:05:11 +02:00
Alexandro Sánchez Bach 2e06e8152e Merge pull request #405 from xsacha/master
wxRemoval: Ini.cpp
2014-07-09 22:57:40 +02:00
Sacha 80dbe1a67f Use an alternative to sregex. 2014-07-10 06:49:24 +10:00
Nekotekina 3fdeb72999 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-10 00:02:45 +04:00
Nekotekina bb0695e76c Using recursive mutex 2014-07-10 00:02:21 +04:00
Sacha 711f9eadc5 Revert some changes until GCC 4.9 is available. 2014-07-10 05:16:17 +10:00
Peter Tissen 10d9c3e412 add back /Y flag on xcopy
to make sure no stdin input is requuired
2014-07-09 17:27:20 +02:00
Peter Tissen dd382b2afc add files to allow for packaging on teamcity
add initial appveyor script

add submodule update before build

add msbuild cmd

remove msbuild cmd

make script runnable locally

add solution without wxwdigets

add initial appveyor script

add submodule update before build

add msbuild cmd

remove msbuild cmd

add packaging step to appveyor

add ftp upload test

use msbuild explicitly

doesn't seem to work otherwise

temporarily remove deploy script

temporarily remove build script

remove non-essential stuff

add back some stuff

set artifact path

update artifact stuff

try to add back deploy

add build step again, *sigh*

add some more build settings

add build sript style build again

download wxwidgets instead of building

remove quite flag for debugging

add cert igonre to download

dont redundantly add folder

use a seperate solution without wxwidgets dependencies

only use the rpcs3 7z as artifact

to avoid re-packaging wxwidgets, also comment out deployment, since I don't have acccess to the main account to add secure strings

Conflicts:
	package.bat
2014-07-09 17:18:23 +02:00
Nekotekina 123c4ba1a8 Some bugs fixed 2014-07-09 03:04:36 +04:00
Sacha 0299ab7660 wxRemoval: Ini.cpp 2014-07-09 06:34:10 +10:00
B1ackDaemon f232351720 Merge pull request #404 from xsacha/master
Qt update
2014-07-08 20:18:44 +03:00
Nekotekina 6e77f80d5f Small fix 2 2014-07-08 21:18:12 +04:00
Nekotekina 34590bc884 Small fix 2014-07-08 21:08:56 +04:00
Sacha 2ba5ada9f8 Qt: Update to match rest of emu. 2014-07-09 02:26:31 +10:00
Sacha ba3838f54c Qt: Update to Qt 5.2 code base. Makes the code much simpler! 2014-07-09 02:25:17 +10:00
B1ackDaemon 3c7d48933f Merge pull request #403 from raven02/patch-20
RSX: simplify recale native resolution code
2014-07-08 19:18:27 +03:00
raven02 52112006d4 RSX: simplify recale native resolution 2014-07-08 23:25:02 +08:00
Nekotekina 50b42f8593 ifdefs and linux (posix) version (not tested) 2014-07-08 18:26:49 +04:00
Nekotekina d1fff053c2 Some cleanup 2014-07-07 21:22:36 +04:00
B1ackDaemon cd8f286791 Merge pull request #401 from raven02/patch-19
RSX : add rescale support for native 960x1080 & 1024x768
2014-07-07 18:48:08 +03:00
raven02 38e41e0ea8 RSX : add rescale support for native 960x1080 & 1024x768 2014-07-07 22:16:59 +08:00
Alexandro Sánchez Bach bbf3c80d04 Merge pull request #400 from SiPlus/patch-1
Change vec2(float, 0.0).xxxx to vec4(float)
2014-07-07 10:25:31 +02:00
SiPlus bf8e6dbc8e Change vec2(float, 0.0).xxxx to vec4(float) in FS 2014-07-07 10:57:03 +04:00
SiPlus 8a305b19af Change vec2(float, 0.0).xxxx to vec4(float) in VS 2014-07-07 10:53:47 +04:00
Nekotekina faab4ed6db Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-07 03:36:26 +04:00
Nekotekina 19db12e090 Memory allocation changes 2014-07-07 03:36:07 +04:00
B1ackDaemon a26bc227d8 Merge pull request #399 from raven02/patch-18
cellPamf : add error log for CELL_PAMF_ERROR_INVALID_ARG
2014-07-06 22:39:37 +03:00
raven02 d751e350c6 cellPamf : add error log for CELL_PAMF_ERROR_INVALID_ARG 2014-07-07 02:26:05 +08:00
Alexandro Sánchez Bach e55c8410b4 Merge pull request #398 from Bigpet/slnfix
fix compile error on the Debug - Memleak config
2014-07-06 20:12:47 +02:00
Peter Tissen ad83fb325c fix compile error on the Debug - Memleak config 2014-07-06 19:40:51 +02:00
Alexandro Sánchez Bach d0b7c9a9af Merge pull request #396 from DHrpcs3/prx_loader
Changes for modules and lv2 sycalls
2014-07-06 19:02:50 +02:00
Alexandro Sánchez Bach 230ba0d360 Fixed conflicts and minor changes (2) 2014-07-06 18:05:52 +02:00
Alexandro Sánchez Bach 0002cc0af3 Removed old / unnecessary code
* Removed Plugins.h file as I assume setting up a plugin hell is a bad
idea (does anyone disagree?).
* Removed FnIdGenerator, and moved FnIdGenerator::GenerateFnId to
getFunctionId in Modules.cpp
* Disabled RSX Debugger and Memory Viewer when the emulator is stopped.
* ELF64Loader::LoadPhdrData refactored.
2014-07-06 16:44:56 +02:00
Alexandro Sánchez Bach 08d61163ea Removed external functions from SysCalls.h
* Replace `int` with `s32` as return type for syscalls.
* Renamed `SC_Something.*` files with the proper lv2 name
`sys_something.*`.
* Moving away from the lv2, those functions and folders that doesn't
correspond to lv2 functions. E.g. module functions from sys_io,
sysPrxForUser, cellGcmSys.
* Splitted some files (memory -> memory+mmapper) and merged other ones
(event+event_flag ->event, spu+spu_thread -> spu), according to common
sense, PSDevWiki docs, and checking firmware files.
* Removed external functions from `SysCalls.h`.

NOTE: What should we do about: cellGcmCallback? It's not a lv2 syscall
but it appears on the sc_table and it is actually called in games. Is
this some kind of hack?
2014-07-06 16:23:37 +02:00
B1ackDaemon 7218ccfe66 Merge pull request #394 from raven02/patch-17
RSX blending MRT and cellResc 512MB io address space changes
2014-07-06 03:15:39 +03:00
Alexandro Sánchez Bach 98787ddb3b Merge pull request #395 from Nekotekina/master
SPU Decrementer, cellSSPlayer functions
2014-07-05 22:29:56 +02:00
Nekotekina b0ce69f1e1 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-05 23:24:54 +04:00
Nekotekina 60f3ed3543 SSPlayer funcs in libmixer 2014-07-05 23:24:14 +04:00
Nekotekina d16953d392 SPU Decrementer 2014-07-05 23:23:34 +04:00
raven02 9ede2d6753 RSX blending MRT and cellResc 512MB io address space changes 2014-07-06 01:33:04 +08:00
B1ackDaemon c4360ee834 Merge pull request #393 from raven02/patch-16
RSX : comment out code for NV4097_SET_SCULL_CONTROL and add LOG_WARNING
2014-07-05 01:13:28 +03:00
raven02 1fc3654ca4 Comment style change 2014-07-05 04:07:15 +08:00
raven02 6a6fbea5ee RSX : comment out code for NV4097_SET_SCULL_CONTROL and add LOG_WARNING 2014-07-05 04:01:49 +08:00
Peter Tissen 061fe50835 don't prompt for xcopy
don't ask whether to override files when copying them for packaging
2014-07-04 13:13:47 +02:00
Peter Tissen c5e780ffb2 Merge pull request #392 from Bigpet/master
make package script runnable locally
2014-07-04 12:19:01 +02:00
Peter Tissen ba29a19e82 make script runnable locally 2014-07-04 12:15:43 +02:00
Peter Tissen d84c619882 Merge pull request #391 from Bigpet/master
add files to allow for packaging  on teamcity
2014-07-04 10:32:02 +02:00
Peter Tissen 69c9d95f10 add files to allow for packaging on teamcity 2014-07-04 10:29:31 +02:00
Alexandro Sánchez Bach 072dfc600c Merge pull request #390 from Nekotekina/master
cellMsgDialog functions improved
2014-07-04 01:24:14 +02:00
B1ackDaemon f3cbdcd59d Merge pull request #388 from raven02/patch-13
RSX: sanity check m_alpha_func
2014-07-04 02:07:11 +03:00
B1ackDaemon e22e9993d7 Merge pull request #389 from raven02/patch-14
cellResc : SetVBlankHandler() & SetFlipHandler()
2014-07-04 02:06:55 +03:00
Nekotekina abbbaa222b cellMsgDialog functions improved
Callback can return result now
2014-07-04 02:52:43 +04:00
raven02 feb241439e Few changes and comment 2014-07-04 06:19:23 +08:00
raven02 4d57af9ed2 cellResc : SetVBlankHandler() & SetFlipHandler() 2014-07-04 03:10:30 +08:00
raven02 8b9a454e2f Sanity check m_alpha_func 2014-07-03 13:29:54 +08:00
Alexandro Sánchez Bach e29a1ddef7 Merge pull request #386 from raven02/patch-11
Obsolete option "480p downscale" and make it auto rescale whenever appro...
2014-07-02 19:20:09 +02:00
raven02 b7be0dc633 Obsolete option "480p downscale" and make it auto rescale whenever approriate 2014-07-03 00:48:44 +08:00
Alexandro Sánchez Bach cb61112490 Merge pull request #385 from raven02/patch-10
RSX : check packed before memcpy when writing color/depth buffers
2014-07-02 10:42:53 +02:00
raven02 82a28d3365 RSX : check packed before memcpy when writing color/depth buffers 2014-07-02 16:30:56 +08:00
B1ackDaemon 6d870cb558 Merge pull request #383 from raven02/patch-9
Indentation fix
2014-07-02 01:58:50 +03:00
Alexandro Sánchez Bach 3d4be9aee3 Merge pull request #384 from raven02/skippamf
Obsolete skipPamf option
2014-07-01 23:19:13 +02:00
raven02 3019122685 Obsolete skipPamf option 2014-07-02 04:42:53 +08:00
raven02 1eb66198c0 Indentation fix 2014-07-02 04:29:16 +08:00
B1ackDaemon fd56797b77 Merge pull request #381 from Nekotekina/master
Nekotekina's stuff
2014-07-01 22:06:52 +03:00
Nekotekina 77458e5795 Compilation fix 6 2014-07-01 22:42:05 +04:00
Nekotekina fdc8479635 Compilation fix 5 2014-07-01 22:06:15 +04:00
Nekotekina 7f5f67163b Compilation fix 4 2014-07-01 21:50:57 +04:00
Nekotekina 8736a14599 Compilation fix 3 2014-07-01 21:39:03 +04:00
Alexandro Sánchez Bach 97e31c8873 Merge pull request #382 from raven02/patch-8
Implement Polygon Stipple
2014-07-01 18:27:55 +02:00
raven02 7aefdd3e1f Implement Polygon Stipple 2014-07-02 00:09:24 +08:00
Nekotekina 5f6a236550 Compilation fix 2 2014-07-01 20:04:58 +04:00
Nekotekina 2eeab1feb0 Compilation fix 2014-07-01 19:34:25 +04:00
Nekotekina f3b61f58ef Fixed conflicts 2014-07-01 17:29:47 +04:00
Nekotekina 2d1409c706 FileExists() fixed 2014-07-01 16:21:55 +04:00
B1ackDaemon f0468a145f Merge pull request #380 from raven02/patch-6
cellResc : few more stuff init and cleanup
2014-07-01 05:51:12 +03:00
raven02 a7bac1f084 cellResc : few more stuff init and cleanup 2014-07-01 10:20:30 +08:00
B1ackDaemon 2037068428 Merge pull request #379 from raven02/patch-7
Cross-check and validate all NV0406E/4097/3089/3062/308A functions with ...
2014-07-01 03:31:35 +03:00
raven02 8d1d227dac Cross-check and validate all NV0406E/4097/3089/3062/308A functions with gcm_method.h 2014-07-01 07:57:49 +08:00
Nekotekina 017e44cf4d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-01 02:54:36 +04:00
Nekotekina 06868cb694 cellGameDataCheckCreate2 implemented 2014-07-01 02:53:29 +04:00
B1ackDaemon 0a4cffd759 Merge pull request #378 from raven02/patch-5
Implement cellRescCreateInterlaceTable()
2014-06-30 06:45:58 +03:00
raven02 0f1606fbd3 Build fix 2014-06-30 10:38:24 +08:00
raven02 347f6f20b7 Implement cellRescCreateInterlaceTable() 2014-06-30 06:11:00 +08:00
Nekotekina cf98ddf979 Small fixes 2014-06-30 01:08:56 +04:00
Alexandro Sánchez Bach 42424618af Merge pull request #377 from raven02/patch-4
cellResc : InitMembers , InitSurfaces and few stuffs for InitRSXContext
2014-06-29 21:32:28 +02:00
raven02 26c77fbaa0 cellResc : InitMembers , InitSurfaces and few stuffs for InitRSXContext 2014-06-30 03:15:37 +08:00
Nekotekina 6f1efc851f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-29 07:22:39 +04:00
Nekotekina 8987350b5b Small changes 2 2014-06-29 07:21:57 +04:00
Alexandro Sánchez Bach 0c53c00325 Merge pull request #373 from raven02/remove
Remove obsolete option "Hide Debug Console"
2014-06-28 18:00:47 +02:00
raven02 fb8ced95b0 Remove obsolete option "Hide Debug Console" and move skipPamf to HLE section 2014-06-28 23:58:20 +08:00
Alexandro Sánchez Bach 57a288a242 Merge pull request #376 from raven02/patch-3
Fix texture MAG filter and add max anisotropy
2014-06-28 16:51:43 +02:00
raven02 382af8437c Fix texture MAG filter and add max anisotropy 2014-06-28 21:12:14 +08:00
Nekotekina b11e086589 Small changes 2014-06-28 05:19:44 +04:00
B1ackDaemon 2d862da540 Merge pull request #375 from raven02/patch-2
Fix CELL_GCM_TEXTURE_DEPTH24_D8 and detail trace for GLTexture::Init()
2014-06-28 03:03:51 +03:00
raven02 a1db96d70d Fix CELL_GCM_TEXTURE_DEPTH24_D8 and detail trace for GLTexture::Init() 2014-06-28 07:30:12 +08:00
Nekotekina a4308b96f6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-27 20:05:17 +04:00
Alexandro Sánchez Bach f8a0225b33 Merge pull request #372 from Bigpet/logsimpler
Don't use two sets of logging functions
2014-06-27 17:22:15 +02:00
Peter Tissen 95f1a0e645 use only one set of logging macros instead of two and don't use free() as a function name 2014-06-27 15:28:17 +02:00
Nekotekina e6a4ef9eb8 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-27 17:03:28 +04:00
Nekotekina 5ef3b80596 cellSysutilBgmPlayback fix 2014-06-27 15:11:56 +04:00
Alexandro Sánchez Bach afad6daa7d Merge pull request #371 from Bigpet/newlogtemp
Logging system rework
2014-06-27 12:09:44 +02:00
Peter Tissen ae472e9e67 use a more compact method to add and remove listeners t o all channels 2014-06-27 09:22:00 +02:00
Peter Tissen 1ad4380fab rename conlog gui file and set the logbuffer-consumed flag sooner 2014-06-27 06:01:40 +02:00
Peter Tissen 21da317453 Logging system rework
* use one central unified log with channels/priorities ad-hoc listener registration and de-registration
* disable buffering by default
* add multi-threaded ringbuffer implementation
* use buffered listener for the gui (using the ringbuffer)
2014-06-26 17:34:28 +02:00
Nekotekina 458322e548 SC_Event_flag: test passed 2014-06-26 18:17:07 +04:00
B1ackDaemon 394b698e92 Merge pull request #370 from Nekotekina/master
Fixed some samples freeze
2014-06-26 01:37:21 +03:00
Nekotekina eca7339a67 Some freezing fixed 2014-06-26 01:59:23 +04:00
B1ackDaemon 4cbbbec8b3 Merge pull request #369 from raven02/patch-8
Log error when flag 0x3c/0x3d EDAT files detected
2014-06-25 22:07:41 +03:00
raven02 0ed518a85d Add EDAT_FLAG_0x3C/0x3D 2014-06-26 00:11:10 +08:00
raven02 eb7128bcc1 Log error when flag 0x3c/0x3d EDAT files detected 2014-06-26 00:10:17 +08:00
Nekotekina 2200e6f4d9 Small fixes 2014-06-25 02:16:44 +04:00
B1ackDaemon 336442eeba Merge pull request #368 from raven02/patch-7
Gameviewer : fix wrong category
2014-06-24 19:23:27 +03:00
raven02 6f3b3f11c8 Gameviewer : fix wrong category 2014-06-24 23:03:27 +08:00
Alexandro Sánchez Bach eb3e18ac7e Added some lv2 syscalls for sys_prx 2014-06-23 19:41:22 +02:00
B1ackDaemon d0fd6eedf6 Merge pull request #366 from raven02/patch-6
RSX: Use blit for MRT as well
2014-06-23 20:05:40 +03:00
raven02 677bc4c553 RSX: Use blit for MRT as well 2014-06-24 00:42:57 +08:00
Hykem 2e668cd2b6 Merge pull request #364 from raven02/patch-5
RSX : delete PBOs when exit thread
2014-06-23 03:41:26 +01:00
Hykem 35b57fc78e Merge pull request #365 from Nekotekina/master
Work on RawSPU: interrupt mailbox
2014-06-23 03:41:11 +01:00
Nekotekina f9c592098f Work on RawSPU: interrupt mailbox
Achievement unlocked: run spu_test!
2014-06-23 05:03:16 +04:00
raven02 fe74f97d44 RSX : delete PBO when exit thread 2014-06-23 03:45:32 +08:00
B1ackDaemon 77e11d670a Merge pull request #361 from raven02/patch-4
RSX: asynchronous glReadPixels with PBO for writing color/depth buffers
2014-06-22 19:27:59 +03:00
Alexandro Sánchez Bach 5a1d702e3d Merge pull request #362 from Nekotekina/master
rCriticalSection & rSemaphore removed
2014-06-22 13:23:37 +02:00
Nekotekina 30b8e51234 rCriticalSection & rSemaphore removed
SC_Semaphore errors fixed
Room for interrupt threads
2014-06-22 14:59:28 +04:00
raven02 a99061127f RSX: asynchronous glReadPixels with PBO for writing color/depth buffers 2014-06-22 18:44:22 +08:00
B1ackDaemon 69cb8349e6 Merge pull request #360 from raven02/patch-3
Paritally revert #359
2014-06-22 02:04:18 +03:00
raven02 f5813bf2cd Paritally revert #359 2014-06-22 06:55:02 +08:00
B1ackDaemon 6bf4695721 Merge pull request #359 from raven02/patch-2
FP: flush m_code_level & check emptyness of m_end_offsets
2014-06-22 00:41:51 +03:00
raven02 2f2a0c8fbc FP: flush m_code_level & check emptyness of m_end_offsets 2014-06-22 05:23:24 +08:00
B1ackDaemon 5912953152 Merge pull request #357 from Nekotekina/master
SC_Semaphore improved and detached from (r)wxSemaphore
2014-06-21 21:57:05 +03:00
Nekotekina 2fad8039f5 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-21 18:40:35 +04:00
B1ackDaemon b9bfd7af80 Merge pull request #356 from raven02/patch-1
Set rendering width/height to buffer width/height
2014-06-21 17:27:54 +03:00
Nekotekina 54cdc41ac8 Small workaround 2014-06-21 18:26:37 +04:00
Nekotekina 5da33c6243 SC_Semaphore rewritten 2014-06-21 18:24:27 +04:00
raven02 4e55e6abbd Set rendering width/height to buffer width/height 2014-06-21 18:04:59 +08:00
B1ackDaemon 283c1f64e7 Merge pull request #354 from raven02/patch-34
RSX: matrix offset fix and use original buffer width/height for writing color/depth
2014-06-21 07:58:11 +03:00
raven02 c3960b7f43 Misc thread started/ended/aborted aligment 2014-06-21 12:29:17 +08:00
raven02 12f217aba9 RSX: matrix offset fix and use original buffer width for writing color/depth 2014-06-21 12:02:11 +08:00
B1ackDaemon dc8b0b09c6 Merge pull request #353 from Nekotekina/master
Tried to replace semaphore
2014-06-21 01:03:46 +03:00
Nekotekina e79236a97f SQueue little improvement 2014-06-20 23:57:28 +04:00
Nekotekina 1c4ae999d6 SSemaphore basic implementation
Set for RSX
2014-06-20 23:56:19 +04:00
Nekotekina 7fca980887 sys_ppu_thread_create threadname workaround 2014-06-20 23:54:04 +04:00
B1ackDaemon 52eaf10d93 Merge pull request #352 from raven02/patch-33
Downscale small bug fix
2014-06-20 22:04:09 +03:00
raven02 fda97f25a0 Downscale small bug fix 2014-06-21 02:25:32 +08:00
Hykem 9048bab305 Merge pull request #350 from Nekotekina/master
Some crash avoidance
2014-06-20 14:47:59 +01:00
Hykem 6e3289f392 Merge pull request #351 from raven02/patch-32
Option allow downscaling 720p/1080p to 480p
2014-06-20 14:47:49 +01:00
Nekotekina 568e99d4d3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-20 17:13:51 +04:00
Nekotekina 90b9861043 SMutex partially replaced with std::mutex
SPURecompiler.h: SETcc bug fixed
2014-06-20 15:00:36 +04:00
raven02 efffc7e6bc Option allow downscaling 720p/1080p to 480p 2014-06-20 17:49:22 +08:00
Nekotekina 237e7989b4 Tried to avoid glDeleteShader crash 2014-06-20 00:34:09 +04:00
Alexandro Sánchez Bach f131f134a5 Minor changes
* Removed old lv2Process* functions
* Function name is displayed again in unimplemented syscalls
* Minor changes that won't affect the emulator.
2014-06-19 20:15:53 +02:00
Nekotekina ccfaabd1d7 Defined thread_local for MSVC
Updated asmjit project
Tried to fix crash on exit
Fixed hypothetical issue when pausing already stopped emulator
2014-06-19 17:50:18 +04:00
B1ackDaemon bf6507e9be Merge pull request #348 from raven02/patch-31
Fix 1024x768 resolution not being saved
2014-06-19 00:39:04 +03:00
raven02 07006fd093 Add comment 2014-06-19 05:20:27 +08:00
raven02 4f4ab4c81a Fix 1024x768 resolution not being saved 2014-06-19 05:02:04 +08:00
B1ackDaemon 4930d8785b Merge pull request #346 from raven02/patch-29
Remove glDetachShader for vp and fp
2014-06-17 19:52:41 +03:00
raven02 79d34afb96 Remove glDetachShader for vp and fp 2014-06-18 00:21:40 +08:00
B1ackDaemon ba08d25517 Merge pull request #345 from raven02/patch-28
Drop off  scissor test enable on OnInitThread()
2014-06-16 07:35:56 +03:00
raven02 0541482ee4 Drop off glEnable(GL_SCISSOR_TEST) 2014-06-16 06:32:11 +08:00
B1ackDaemon 95cc6fb3bc Merge pull request #342 from raven02/patch-28
Paritally fix depth read elf
2014-06-15 22:22:20 +03:00
raven02 ee58ba9fd9 Paritally fix depth read elf 2014-06-16 03:05:28 +08:00
Alexandro Sánchez Bach a6bca0ecc5 Merge pull request #340 from raven02/patch-26
RSX: set default m_line_stipple_pattern as 0xffff
2014-06-15 12:27:37 +02:00
raven02 64044173c6 set default m_line_stipple_pattern as 0xffff 2014-06-15 12:25:09 +08:00
B1ackDaemon aafa3351da Merge pull request #339 from raven02/patch-25
RSX : implement line stipple [NV4097_SET_LINE_STIPPLE/PATTERN]
2014-06-15 01:06:34 +03:00
raven02 76c8eedb25 RSX : implement line stipple 2014-06-15 05:53:26 +08:00
Alexandro Sánchez Bach a4c5c4d5f9 Merge pull request #338 from raven02/patch-24
RSX: fix line width
2014-06-14 20:31:16 +02:00
raven02 44dd770cec RSX: fix line width 2014-06-15 02:29:27 +08:00
B1ackDaemon aaf60a1869 Merge pull request #337 from raven02/patch-23
Regression fix : restore point size functionality
2014-06-14 20:18:36 +03:00
raven02 5007d62e27 Regresion fix : restore point size functionality 2014-06-15 00:59:16 +08:00
B1ackDaemon f7c0c6fd34 Merge pull request #336 from raven02/patch-22
Gameviewer : name category HG as HDD game and DG as Disc game
2014-06-14 16:40:06 +03:00
raven02 f471857a25 Gameviewer : name category HG as HDD game and DG as Disc game 2014-06-14 14:16:23 +08:00
B1ackDaemon 49c9e0f3e2 Merge pull request #335 from raven02/patch-21
Fix line width conversion and comment out point size which already done ...
2014-06-14 00:11:34 +03:00
raven02 bf456d5d16 Build fix 2014-06-14 04:44:53 +08:00
raven02 469faf43aa Fix line width conversion and comment out point size which already done in vertex shader 2014-06-14 04:14:04 +08:00
B1ackDaemon c5a244c669 Merge pull request #334 from raven02/patch-20
Fix point size/line_width/poly_offset
2014-06-12 21:35:55 +03:00
raven02 8112440a27 Fix point size/line_width/poly_offset_scale_factor/bias 2014-06-13 02:18:12 +08:00
B1ackDaemon ada0b31295 Merge pull request #332 from raven02/patch-18
Fix vertex program decompile function
2014-06-12 17:27:23 +03:00
B1ackDaemon 49e2d0528c Merge pull request #333 from raven02/patch-19
Gameviewer : read PARAM.SFO for blu-ray disc copy
2014-06-12 17:27:06 +03:00
raven02 9b951d5d3f Gameviewer : read PARAM.SFO for blue-ray disc 2014-06-12 09:27:27 +08:00
raven02 70f6871363 Fix vertex program decompile function 2014-06-12 04:22:32 +08:00
B1ackDaemon 52a1860f0a Merge pull request #327 from raven02/patch-17
cellSysUtil : stub remaining BGM playback functions
2014-06-09 20:01:12 +03:00
raven02 a28ad25221 cellSysUtil : stub remaining BGM playback functions 2014-06-10 00:28:52 +08:00
B1ackDaemon c9dec7b118 Merge pull request #326 from Nekotekina/master
cellSysmoduleLoadModule modified
2014-06-09 17:42:58 +03:00
Nekotekina 4fedf5749e cellSysmoduleLoadModule modified
cellSysutilEnableBgmPlayback draft
cellSurMixerGetCurrentBlockTag
cellSurMixerGetTimestamp
Interval.h draft
2014-06-09 17:35:35 +04:00
Bigpet 0d42fcf536 Merge pull request #325 from Bigpet/master
add dependency on asmjit to rpcs3 project
2014-06-09 05:39:12 +02:00
Peter Tissen 779117d129 fix machine specific path, sorry about that one 2014-06-09 05:37:12 +02:00
Peter Tissen 2382f3b69e add dependency on asmjit to rpcs3 project, might fix the buildbot 2014-06-09 03:36:26 +02:00
Alexandro Sánchez Bach e050b7fd1e Merge pull request #324 from Bigpet/splitfixups
remove unexplained commented out code that I added myself with the last PR
2014-06-09 03:08:22 +02:00
Peter Tissen e85abdeb2c remove unexplained commented out code that I added myself with the last PR
* remove unexplained commented out code that I added myself
* revert asmjit settings change that was meant to only be local for me
2014-06-09 02:55:16 +02:00
Hykem bd6837f2f9 Merge pull request #216 from UnconventionalT/binary-dir-fix
Set build independent binary output dir
2014-06-09 01:36:15 +01:00
Hykem 93481fe27d Merge pull request #239 from Bigpet/splitproj
Split gui and emulation core into seperate projects
2014-06-09 01:22:04 +01:00
Peter Tissen 33d82e0d6e reset debug output directory 2014-06-08 23:23:36 +02:00
Peter Tissen ed10ea7544 add back fused gui log classes, this needs to be redone another way
also, add back wx requirement for strfmt
2014-06-08 23:16:08 +02:00
Peter Tissen 10e10de98d add xinput pad handler to the windows emucore 2014-06-08 23:16:07 +02:00
Peter Tissen 314307b840 Fix building with precompiled headers
add the unimplemented modules to the emucore project

fix a bug in the rXml wrapper that didn't consider the possiblity of functions returning null pointers
2014-06-08 23:16:06 +02:00
Peter Tissen c37905e465 initial start to eliminate static func init, not compilable atm
move module initialization into a module manager, still has some issues like stopping not working and debug crashing

add #idef 0 to modules that aren't in the windows project

don't double initialize and don't de-initialize for now, since many modules don't expect it and it leads to many errors

remove duplicate module lists for empty modules and implemented ones, make Module non-copyable but movable

add secondary project, no real use for it now

add some memleak config to the emucore and add asmjit path to rpcs3

small rebase error fixed to get it to compile again

add filters for emucore

re-add the module manager and static file

WIP commit, linker errors abound

some more abstraction layer stuff

fix the remaining linker errors, re-enable platform specific mouse, pad and keyboard handlers

rebasing

fix memset undefined and re() usage of se_t before declaration

Add wxGUI define by default for cmake builds

fix copy constructors of Datetime header

fix copy constructors of other wx interface classes

remove static declarations of global variables

make wxGLCanvas constructor non-ambiguous even with wx2.8. compat mode, fix wrong std::exception constructor calls

remove duplicate definition for FromUTF8 and ToUTF8

temp changes
2014-06-08 23:16:06 +02:00
B1ackDaemon c4e3ec825e Merge pull request #322 from raven02/patch-16
cellSpurs : create new taskset using attr
2014-06-08 19:36:58 +03:00
raven02 f051011fd1 cellSpurs: create new taskset using attr 2014-06-08 23:29:16 +08:00
Alexandro Sánchez Bach d6f71ee2b3 Merge pull request #323 from Bigpet/master
enable full precompiled headers for non-Windows Platforms
2014-06-08 17:26:01 +02:00
Peter Tissen 4d84507c96 try include guards to circumvent a weird error with gcc and unity builds 2014-06-08 16:58:40 +02:00
DH 3c8815cc06 Improved Vertex Shader Decompiler
- Fixed condition register selection
- Implemented LIT
- Fixed RCP
2014-06-08 17:52:35 +03:00
Peter Tissen 982ea35d44 enable full precompiled headers for non-Windows Platforms for now to make people not guess all the time what to include 2014-06-08 16:43:53 +02:00
DH 7bb966ba82 Improved PPU Interpreter
- Fixed UpdateCR0
- Fixed XER.CA updating
2014-06-08 08:27:57 +03:00
DH 03d2798dba Fragment Shader Decompiler: fixed condition registers. 2014-06-07 19:20:39 +03:00
DH e0046671f1 Improved Fragment Shader Decompiler
- Fixed KIL
- Added all regs to reg_table
2014-06-07 18:52:25 +03:00
DH afcbeb3713 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-07 18:32:42 +03:00
DH 1b1ce85b32 Fixed small error in Fragment Shader Decompiler 2014-06-07 18:32:15 +03:00
Alexandro Sánchez Bach 125b71d2c5 Reverted remaining .ToBE() deletions & small fix
And fixed wrong comparison on: `_cellSpursEventFlagInitialize`.
2014-06-07 17:18:40 +02:00
DH a4740d5f09 Improved unknown HLE functions logging
Fixed Fragment Shader Decompiler
2014-06-07 18:08:14 +03:00
DH f8e8e2f624 Improved Fragment Shader Decompiler
- Implemented LIT, RFL, LIF, BRK, IF, LOOP, REP
- Fixed KIL, RCP, RSQ, DP2A

Implemented fmt::replace_first & fmt::replace_all
2014-06-07 17:15:49 +03:00
Alexandro Sánchez Bach 30a1516d19 Merge pull request #318 from raven02/patch-14
Centre the game list panel
2014-06-07 15:40:34 +02:00
Alexandro Sánchez Bach 4f5f600ef6 Merge pull request #319 from raven02/patch-15
cellSpurs : initialize eventFlag
2014-06-07 15:23:12 +02:00
raven02 7855ebcd9f cellSpurs : initialize eventFlag 2014-06-07 20:31:07 +08:00
raven02 219e048922 Centre the game list panel 2014-06-07 16:08:02 +08:00
Alexandro Sánchez Bach 5ed77a3ca9 Reverted BE <-> LE comp. changes in some lv2 SCs 2014-06-07 09:08:16 +02:00
Alexandro Sánchez Bach 2534216971 Improvements in SC_Process and other lv2 syscalls
* Splitted the file in SC_Process.h and SC_Process.cpp.
* Some argument data types modified on sys_process_* functions.
* Implemented sys_process_get_number_of_object and sys_process_get_id.
* Added dummy versions of other sys_process_* functions based on the old
SysCalls::lv2Process* code (which I deleted).
* Improved BE <-> LE comparisons on SC_Mutex, SC_Lwmutex and SC_Lwcond.
* Updated some SC_Memory functions to use mem_ptr_t<T>.

NOTE: There are probably better ways to get the active objects that
don't imply creating a new data type filled with std::set<u32>'s.

TODO: For some types, the corresponding std::set<u32> isn't being
updated when an object is created/destroyed. I'll take care of this
soon.
2014-06-07 08:34:36 +02:00
Alexandro Sánchez Bach 5e00dfb5c3 GcmZcullInfo::Pack and removed 32-bit OAL dll 2014-06-07 04:22:29 +02:00
Alexandro Sánchez Bach 4ac8061240 Merge pull request #315 from Bigpet/simplestdafx
Reduce stdafx.h under Linux for better build-times
2014-06-06 04:17:15 +02:00
Peter Tissen 8da681eab2 enable cotire for better build-times 2014-06-06 03:33:24 +02:00
Peter Tissen 40add8f9a2 Seperate ConLog.h and ConLogFrame.h (for now only seperate headers)
make precompiled header slimmer under Linux to increase CI and dev-machine build-times

make sure unused modules don't compile
add unused modules to the VS project to easier keep track of them
2014-06-06 02:50:22 +02:00
B1ackDaemon 283f290f47 Merge pull request #314 from raven02/patch-11
cellGcmSys: fill out some stuffs for zCulling
2014-06-05 23:19:45 +03:00
Oil 268e2eee4c Changed default LogFrame position. 2014-06-05 22:17:53 +04:00
Alexandro Sánchez Bach 4f36ecc681 Merge pull request #312 from raven02/patch-10
cellResc : add those unimplemented and error logging
2014-06-05 19:56:41 +02:00
raven02 b9a055f1c8 cellGcmSys: fill out some stuffs for zCulling 2014-06-06 01:50:48 +08:00
raven02 26fc29c1a9 cellResc : add those unimplemented and error logging 2014-06-06 00:19:23 +08:00
Oil 49295f8eff Fixed a scrollbar issue. 2014-06-05 19:21:06 +04:00
Oil b6ac09aa1a Improved LogFrame. 2014-06-05 18:08:44 +04:00
Alexandro Sánchez Bach af219bb415 cellGcmSys: Report retrieval functions 2014-06-05 00:04:11 +02:00
Alexandro Sánchez Bach 53b650e88f Merge pull request #311 from raven02/patch-9
cellGcmSys : add those unimplemented and error logging
2014-06-04 23:01:30 +02:00
raven02 44d762fc60 cellGcmSys : add those unimplemented and error logging 2014-06-05 04:51:17 +08:00
Alexandro Sánchez Bach a61c4f6bb0 Merge pull request #310 from raven02/patch-8
enum for vertex data type/antialias & cellSpurs error code fixes
2014-06-04 21:57:17 +02:00
raven02 1827b91882 Check 8-byte and 128-byte alignment for spurs 2014-06-05 02:52:30 +08:00
raven02 7c137cc482 Build fix 2014-06-05 00:53:37 +08:00
raven02 c7b26f1372 cellSpurs task error code fixes and plus bunch of new functions add 2014-06-05 00:03:31 +08:00
raven02 ba91345984 enum for vertex data type 2014-06-04 23:59:46 +08:00
Alexandro Sánchez Bach 585ac5a748 Fixed cellSaveDataAutoLoad2
Probably that's closer to what a real PS3 does. Anyway, tests are
required to be sure about that.

Issue #304 fixed.
2014-06-03 22:42:15 +02:00
B1ackDaemon 77f818fa23 Merge pull request #309 from raven02/patch-7
Fix opcodes STR/SFL for both VP and FP
2014-06-03 23:08:44 +03:00
raven02 1a37723a05 Add missing case 0x0d 2014-06-04 03:02:12 +08:00
raven02 59628960b6 Fix opcodes STR/SFL for both VP and FP 2014-06-04 02:53:06 +08:00
B1ackDaemon 650c5155df Merge pull request #303 from raven02/patch-4
Set default log level to Error
2014-06-03 16:13:52 +03:00
B1ackDaemon 4faa4d6ed9 Merge pull request #307 from raven02/patch-5
RSX: Reorganize and group revelant NV4097 functions
2014-06-03 16:13:36 +03:00
Alexandro Sánchez Bach 664d2502ca Merge pull request #308 from raven02/patch-6
Speedup write color buffers
2014-06-03 14:11:38 +02:00
raven02 8bb5da3b06 Speedup write color buffers 2014-06-03 18:32:27 +08:00
Alexandro Sánchez Bach a382b81d56 Merge pull request #305 from DHrpcs3/remove-32bit
Remove 32-bit configuration from the project
2014-06-03 00:24:33 +02:00
raven02 aac846ff74 Add NV4097_SET_FLIP
It is custom naming
2014-06-03 06:18:33 +08:00
raven02 c4075f1592 RSX: Reorganize and group revelant NV4097 functions 2014-06-03 06:17:33 +08:00
Peter Tissen e8efb8f9fb move inline definitions in header, wtf am I doing, Travis pls. 2014-06-02 22:00:05 +02:00
Peter Tissen 1bb140780b include cstdint type
add mulh like function for gcc

avoid multiple definitions of msvc intrinsic replacements
2014-06-02 21:12:35 +02:00
Peter Tissen 96e229abfa add primitive InterlockedOr64 implementation
use non msvc specific type for int64_t

add umul for gcc
2014-06-02 19:29:22 +02:00
Alexandro Sánchez Bach b05bd51216 Fixed GameViewer issue
Double-clicking an entry in the sorted list caused the corresponding
element of the unsorted list to be run. This is now fixed.
2014-06-02 16:59:50 +02:00
Alexandro Sánchez Bach 82c6d8d68b Removed 32-bit related #if(n)def's 2014-06-02 14:08:32 +02:00
Alexandro Sánchez Bach 111da4d0fd Removed 32-bit config. from .SLN and CMakeLists 2014-06-02 13:59:45 +02:00
Alexandro Sánchez Bach ab65b38d9a Merge pull request #301 from raven02/patch-2
Stub bunch of cellSpurs functions & error log null pointer
2014-06-02 10:36:28 +02:00
raven02 f7d21596a5 Set default log level to Error 2014-06-02 16:34:31 +08:00
raven02 54ede6c4e3 Fix wrong identation 2014-06-02 16:09:36 +08:00
raven02 c4522922f2 Silly typo fix 2014-06-02 15:57:34 +08:00
Alexandro Sánchez Bach a09984d210 Merge pull request #302 from raven02/patch-3
Fix 'always start after boot' not saving
2014-06-02 09:50:42 +02:00
raven02 96bcfdac7e Fix 'always start after boot' not saving 2014-06-02 15:18:01 +08:00
raven02 05d80e4994 EventFlag_add should be always present and checked 2014-06-02 14:53:13 +08:00
raven02 5597f95aba Log as error for null pointer 2014-06-02 13:42:30 +08:00
raven02 3662c4e9bf Stub cellSpurs functions 2014-06-02 12:14:00 +08:00
Alexandro Sánchez Bach cb3622176a Merge pull request #300 from Bigpet/iniReplace
use non wxIni implementation
2014-06-02 00:02:53 +02:00
Peter Tissen c216c0f2e8 revert argument order again, doesn't really need to be reversed, will just cause confusion 2014-06-01 23:07:35 +02:00
Peter Tissen 2d77415cc3 use non-wx header only Ini library in preparation of the core/gui devide 2014-06-01 22:57:50 +02:00
Alexandro Sánchez Bach a9768739eb Merge pull request #298 from Bigpet/twophasefix
help out compilers that use two phase lookup as dictated by the standard
2014-06-01 21:56:49 +02:00
Bigpet 924f117ba0 help out compilers that use two phase lookup as dictated by the standard 2014-06-01 21:28:29 +02:00
Alexandro Sánchez Bach fe0e34cbe1 Merge pull request #290 from Blaypeg/master
Add options for autoboot
2014-06-01 21:03:01 +02:00
Blaypeg dab71d01c1 Add Remove Game option to Gameviewer
Can right click game to remove from list and installation
2014-06-01 19:36:08 +01:00
B1ackDaemon c6c87b66f9 Merge pull request #297 from raven02/patch-1
Change to Error logging for null cmd
2014-06-01 21:34:50 +03:00
raven02 16d909834f Change to Error logging for null cmd 2014-06-02 02:32:00 +08:00
B1ackDaemon c231bec736 Merge pull request #296 from raven02/master
Add /dev_flash and sub-directories
2014-06-01 16:16:18 +03:00
B1ackDaemon fea95d264f Merge pull request #295 from raven02/patch-32
Fragment decompiler changes to async mode
2014-06-01 16:16:08 +03:00
Blaypeg 934856c350 Moved autostart to HLE Section 2014-06-01 14:10:26 +01:00
DH c00f4b6022 Improved mem_ptr_t.
Implemented mem_func_ptr_t.
2014-06-01 12:38:37 +03:00
raven02 d7d4cd4434 Add /dev_flash and sub-directories 2014-06-01 16:21:14 +08:00
raven02 ceeff8ae81 Fragment decompiler change to async mode 2014-06-01 14:54:56 +08:00
B1ackDaemon da2c5bbda0 Merge pull request #294 from raven02/patch-31
Opcode : Add DP2A and temporarily disable KIL instruction
2014-06-01 04:52:57 +03:00
raven02 1bff3ad6ff Opcodo : Add DP2A and temporarily disable KIL 2014-06-01 07:12:31 +08:00
Alexandro Sánchez Bach c01b5fb0db Added cellSaveDataAuto* functions
Implemented:
- cellSaveDataAutoSave2
- cellSaveDataAutoLoad2
2014-05-31 23:41:12 +02:00
Alexandro Sánchez Bach 1efa137f8f Merge pull request #291 from O1L/master
Fixed issue #276.
2014-05-31 18:03:11 +02:00
Oil 1705c5afb6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-05-31 19:19:54 +04:00
Hykem d300a50630 Merge pull request #278 from Dante38490/master
Correct name soft_oal.dll and fix sln
2014-05-31 16:12:56 +01:00
Hykem ecd87aa2b5 Merge pull request #279 from Dante38490/patch-1
Update README.md
2014-05-31 16:12:29 +01:00
Hykem 1affafe5ea Merge pull request #277 from aniruddh22/patch-1
Add 1024x768 native resolution support
2014-05-31 16:11:15 +01:00
Oil 14fae9a401 Add a option for converting audio to 16 bit. Issue #276 fixed with using this option? 2014-05-31 18:21:47 +04:00
Blaypeg 0d3b8c0808 Add Menu and INI option to autostart emulation 2014-05-31 11:40:37 +01:00
Alexandro Sánchez Bach 834f5dc9a9 Merge pull request #288 from raven02/patch-29
Implement cellSpursAttributeSetMemoryContainerForSpuThread
2014-05-31 10:53:39 +02:00
Alexandro Sánchez Bach 802a1fee7c Merge pull request #289 from raven02/patch-30
Compact duplicate draw objects routine
2014-05-31 10:52:02 +02:00
raven02 08c7ae64e3 Compact duplicate draw objects routine 2014-05-31 15:48:23 +08:00
raven02 41d0163781 cellSpursAttributeSetMemoryContainerForSpuThread() 2014-05-31 10:31:43 +08:00
Alexandro Sánchez Bach d3cb97d4e9 Merge pull request #287 from raven02/patch-28
Use be_t<u32>/<64> in struct
2014-05-31 01:40:51 +02:00
raven02 97561ff52b Use be_t<u32>/<64> 2014-05-31 06:49:19 +08:00
Alexandro Sánchez Bach a0cc3a0fb0 Merge pull request #286 from Nekotekina/master
Some bugs fixed
2014-05-31 00:20:39 +02:00
B1ackDaemon 46e61efefb Merge pull request #284 from raven02/patch-27
Fix typo for #283
2014-05-30 22:36:00 +03:00
raven02 57d4d72f60 Fix typo for #283 2014-05-31 03:28:16 +08:00
B1ackDaemon f09a358ea5 Merge pull request #283 from raven02/patch-26
Implement cellPngDecCreate/Destroy()
2014-05-30 21:17:33 +03:00
Blaypeg d455c21db5 Merge pull request #2 from DHrpcs3/master
update
2014-05-30 18:56:31 +01:00
raven02 eb61c2a960 Add struct CellPngDecMainHandle 2014-05-31 01:45:45 +08:00
raven02 141d8e20ec Implement cellPngDecCreate/Destroy() 2014-05-31 01:44:38 +08:00
Nekotekina d5d4f88c17 Small RSX fix 2014-05-30 21:16:20 +04:00
B1ackDaemon f545ba08cb Merge pull request #282 from raven02/patch-25
Cleanup and add point size/specular/point sprite
2014-05-30 17:36:39 +03:00
Nekotekina 940d71ecdb Another cellPamf issue fixed
event_flag messages changed
2014-05-30 18:13:49 +04:00
raven02 bb64684be9 Fix spacing 2014-05-30 19:25:48 +08:00
raven02 323a48d14b Cleanup and add point size/point sprite/specular 2014-05-30 19:19:26 +08:00
B1ackDaemon 69ec7a041e Merge pull request #281 from raven02/patch-24
Add few more opcode(STR/SFL) and fix KIL (discard)
2014-05-28 16:00:30 +03:00
raven02 13d68cbeeb Opcode : add STR/SFL and fix KIL (discard) 2014-05-28 11:32:56 +08:00
Alexandro Sánchez Bach c1594255a7 Merge pull request #280 from raven02/patch-23
Opcode: add KIL & LRP
2014-05-28 02:29:13 +02:00
raven02 872cbec8ba Opcode : add KIL & LRP 2014-05-28 08:03:57 +08:00
Dante38490 4f1b7bf69a Update README.md 2014-05-26 14:34:07 +02:00
Zangetsu 3de9202533 Correct name soft_oal.dll and fix sln 2014-05-26 14:30:27 +02:00
aniruddh da77ed1de3 Update sysutil_video.h 2014-05-26 17:31:07 +05:30
Alexandro Sánchez Bach b953e06622 Merge pull request #275 from Blaypeg/master
GUI Update, Game panel column headings now sortable
2014-05-25 23:30:15 +02:00
Blaypeg 42e5000c2d Remove Unused varible 2014-05-25 22:01:00 +01:00
Blaypeg f060f9e047 Set Game List columns as sortable 2014-05-25 21:59:26 +01:00
Blaypeg f1257f9e3f Change types to stop compiler warnings 2014-05-25 21:36:55 +01:00
Alexandro Sánchez Bach 40f0f80f5d Minor changes
Irrelevant modifications. None of this affects RPCS3 directly.
2014-05-25 22:31:40 +02:00
B1ackDaemon 948d4ef3a2 Merge pull request #274 from raven02/patch-22
GLGSRender: re-enable glPrimitiveRestartIndex
2014-05-25 22:39:33 +03:00
B1ackDaemon 5fda90abc6 Merge pull request #273 from raven02/patch-21
RSXDebugger : add scissor test & primitive restart
2014-05-25 22:39:28 +03:00
B1ackDaemon 6b66f77590 Merge pull request #272 from raven02/patch-20
RSXThread: add few more logging and comments
2014-05-25 22:39:22 +03:00
B1ackDaemon ddd485fdad Merge pull request #271 from raven02/patch-19
DbgConsole: hide debug console
2014-05-25 22:39:17 +03:00
B1ackDaemon 9c1ec3569f Merge pull request #268 from O1L/master
Switch to OpenAL Soft.
2014-05-25 22:39:09 +03:00
Blaypeg 95f67080f8 Attempt to make columns sortable for game list 2014-05-25 19:45:44 +01:00
raven02 29d0b1443e Add Primitve restart & scissor test 2014-05-26 01:07:16 +08:00
raven02 fe31f1be61 Re-enable glPrimitiveRestartIndex 2014-05-26 00:50:43 +08:00
raven02 c096bfce7a Add case_16(NV4097_SET_TEXTURE_FORMAT, 0x20) 2014-05-25 22:21:38 +08:00
raven02 5109065425 RSXThread: Add few more logging and comments 2014-05-25 22:08:45 +08:00
Alexandro Sánchez Bach 5d88ca2287 Merge pull request #270 from mputters/xinput
Inverted XInput Y-axis for sticks
2014-05-25 13:01:42 +02:00
raven02 2b8998af91 Hide debug console option 2014-05-25 16:05:21 +08:00
Michael Putters 6780a2f0bf Inverted XInput Y-axis for sticks 2014-05-25 09:34:06 +02:00
Oil 8a1227eaa2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-05-25 01:46:25 +04:00
Oil 6072fd2fbb Switch to OpenAL Soft (see issue #166). Use native FLOAT32 data now. Add small check in OpenALThread. 2014-05-25 01:38:29 +04:00
B1ackDaemon 33584b6668 Merge pull request #267 from mputters/xinput
Basic XInput support
2014-05-24 22:14:41 +03:00
Michael Putters 03914d60d3 Basic XInput support 2014-05-24 21:05:00 +02:00
Hykem 490d1059ac Merge pull request #250 from ItzWarty/cellPngDecDecodeData_optimizations
Optimize cellPngDecDecodeData's CELL_PNGDEC_ARGB case
2014-05-24 17:23:17 +01:00
B1ackDaemon b09560cc1c Merge pull request #266 from raven02/patch-18
Add option to skip PAMF movie
2014-05-24 18:13:53 +03:00
raven02 8a068e7fca Add option to skip PAMF 2014-05-24 21:48:54 +08:00
B1ackDaemon 59f08f9bdd Merge pull request #265 from unknownbrackets/ppu-minor
Fix the DCBZ instruction
2014-05-23 20:32:15 +03:00
Unknown W. Brackets f49d3d6a28 Fix the DCBZ instruction.
Needs to zero memory.
2014-05-23 09:57:13 -07:00
Blaypeg 360070bddb Merge pull request #1 from DHrpcs3/master
test
2014-05-23 17:31:59 +01:00
B1ackDaemon a186efded2 Merge pull request #264 from unknownbrackets/ppu-minor
Clean up LR updates in branches, remove CA update in ADD
2014-05-23 19:24:32 +03:00
Unknown W. Brackets 82d60ee48d Do not set the CA bit in ADD().
Thanks Ashe`.
2014-05-23 09:20:58 -07:00
Unknown W. Brackets 493bf93a5a Update LR only when cond passes.
It should not be updated otherwise.  In most cases, won't matter.

Also, reorder slightly so SetBranch() can safely set PC directly.
2014-05-23 09:20:57 -07:00
B1ackDaemon 0ec78e0d5e Merge pull request #263 from raven02/patch-16
Add 960x540 natvie resolution support
2014-05-23 19:02:40 +03:00
B1ackDaemon 9e4c2c1030 Merge pull request #262 from raven02/patch-15
Replace slow glReadpixels routine with glBlitframebuffer
2014-05-23 19:02:26 +03:00
raven02 6520b8f06d Add 960x540 natvie resolution support 2014-05-23 23:51:55 +08:00
raven02 a2af749e71 Replace slow glReadpixels routine with glBlitframebuffer for non-MRT 2014-05-23 22:22:32 +08:00
B1ackDaemon e2ebb09d6c Merge pull request #259 from raven02/patch-14
Code cleanup and added glPolygonOffset
2014-05-21 20:42:23 +03:00
raven02 94393ff4ea Re-enable glFrontFace with sanity check 2014-05-22 01:08:46 +08:00
raven02 3445f8a49f There is no glEnable(GL_FRONT_FACE) 2014-05-22 00:48:49 +08:00
raven02 b95667563f Code cleanup and added glPolygonOffset 2014-05-22 00:31:40 +08:00
B1ackDaemon e569de73d6 Merge pull request #248 from ItzWarty/master
virtual memory block reads/writes properly fail if address is out of bounds
2014-05-21 18:22:01 +03:00
Alexandro Sánchez Bach 38e0c62e99 Merge pull request #258 from raven02/patch-13
Enable GL_SCISSOR_TEST and add glLogicOp
2014-05-21 15:43:33 +02:00
Oil 60514cc48d Completed. 2014-05-21 17:06:02 +04:00
Oil e3a56e39d7 Restored. 2014-05-21 16:57:57 +04:00
Oil 3475912233 Some changes from previous commit restored. 2014-05-21 16:14:33 +04:00
Oil 570efab05f asmjit project moved in asmjitsrc directory. 2014-05-21 14:45:36 +04:00
raven02 967935d389 Enable GL_SCISSOR_TEST and add glLogicOp 2014-05-21 18:14:51 +08:00
Alexandro Sánchez Bach ec53f2557a Merge pull request #257 from jarveson/cellpad_fixes2
Cellpad fixes
2014-05-21 03:38:27 +02:00
Jake afc5294016 cellPad: Changes to report 0 length if theres no changes 2014-05-20 19:56:36 -05:00
Jake 233b179f65 cellPad: Fix logic error in setPressMode and setSensorMode 2014-05-20 19:54:08 -05:00
Alexandro Sánchez Bach 840e9d8ed8 Merge pull request #255 from raven02/patch-12
Set default polygon_mode as GL_FILL
2014-05-20 21:21:31 +02:00
raven02 e0f89beb7d Set default polygon_mode as GL_FILL 2014-05-21 02:08:49 +08:00
B1ackDaemon 6bb812f283 Merge pull request #254 from raven02/patch-12
Implement NV4097_SET_BACK_POLYGON_MODE
2014-05-20 17:12:02 +03:00
raven02 f67d30571b Add NV4097_SET_BACK_POLYGON_MODE 2014-05-20 22:10:14 +08:00
Alexandro Sánchez Bach 9209edc15c Merge pull request #253 from ItzWarty/memoryviewer_fixes
Improve Memory Viewer: There are bugs in text representation.
2014-05-20 00:29:03 +02:00
Michael Yu 85785b471e MEMORY: Fixed IsMyAddress bound error (GetEndAddr returns an inclusive value) 2014-05-19 14:58:01 -07:00
Michael Yu 4c02c20d84 Improve Memory Viewer: There are bugs in text representation.
Char display now only displays printable ascii characters. Anything non-printable is printed as '.' as is standard.
Additionally, displayed lines are properly delineated with newlines so that we don't wrap on spaces.
2014-05-19 14:56:58 -07:00
Alexandro Sánchez Bach 9ce9c3ce21 Merge pull request #252 from raven02/patch-11
Regression fix cellPamf
2014-05-19 19:13:18 +02:00
raven02 0ba5bb4e7a Regress fix cellPamf 2014-05-19 22:48:59 +08:00
Alexandro Sánchez Bach c312bc1b70 Merge pull request #249 from raven02/patch-9
Add support for m_surface_depth_format 0
2014-05-19 15:16:17 +02:00
raven02 4f961c9e0b Add comment for depth format 0 2014-05-19 21:14:30 +08:00
Alexandro Sánchez Bach e280d54f3f Fix pointers issue in cellUserInfoGetList
Solves GetMemFromAddr(0x0) on NPEB01894.
2014-05-19 15:05:53 +02:00
Michael Yu 3aeb0b0f95 cellPngDecDecodeData handles CELL_PNGDEC_ARGB case much faster.
Profiling done with two samples on Solar v2.1 from rpcs3 init to first frame.
Before optimization, profiler found rpcs3 in cellPngDecDecodeData 15.3% of the time.
Post-optimization, profiler finds rpcs3 in cellPngDecDecodeData 0.33% of the time for ~50x improvement.
2014-05-19 02:23:23 -07:00
Michael Yu 9bdb12e3da MEMORY: Added AppendRawBytes, which also advances the memory pointer unlike Memory.CopyFromReal 2014-05-19 02:23:23 -07:00
Michael Yu 2834697f1f MEMORY: Copy from real's destination parameter should be immutable 2014-05-19 02:23:22 -07:00
Michael Yu 346614b0da gitignore now ignores files generated by visual studio profiler, solution configured for profiling. 2014-05-19 02:23:22 -07:00
raven02 c2f3f04808 Add support for m_surface_depth_format 0 2014-05-19 15:43:41 +08:00
Michael Yu 9e791da7bd virtual memory block reads/writes properly fail if address is out of bounds.
Fixes Solar v2.1 http://puu.sh/8ScXK.jpg
2014-05-18 23:12:28 -07:00
Alexandro Sánchez Bach 0d0df4b491 Merge pull request #247 from unknownbrackets/texformats
Implement more texture formats per the test
2014-05-19 00:52:20 +02:00
Unknown W. Brackets 7948f376fb GL: Fix the compressed R8B8 / B8R8 type formats.
The not-swizzled bit is always set for them.
2014-05-18 15:24:12 -07:00
Unknown W. Brackets 612e515317 GL: Fix X16 / Y16_X16 texture formats.
Per the rsx/texture_formats test.  Not sure about pitch, may need to deal
with UNPACK_ROW_LENGTH...
2014-05-18 14:39:04 -07:00
Unknown W. Brackets 06c4c45200 GL: Fix half-float texture formats.
This matches the ps3 output/channels for these textures per the
rsx/texture_formats test.
2014-05-18 14:22:05 -07:00
Alexandro Sánchez Bach 4f63f57d26 Merge pull request #246 from Blaypeg/master
Explicit conversion to avoid compiler warning (2)
2014-05-18 15:05:06 +02:00
Blaypeg 5e36362a4c int ->size_t 2014-05-18 13:28:11 +01:00
Alexandro Sánchez Bach b4a7684344 Check pointers in cellPamf 2014-05-18 12:46:01 +02:00
B1ackDaemon 9e7f8564b6 Merge pull request #244 from raven02/patch-6
Fix wrong color effect in Disgaea 3
2014-05-18 11:08:17 +03:00
B1ackDaemon 1a6fa4aedc Merge pull request #243 from unknownbrackets/texformats
Swap R/B in a few other texture formats
2014-05-18 11:08:12 +03:00
B1ackDaemon be11bd85f6 Merge pull request #242 from unknownbrackets/pngdec
cellPngDec: Ignore bytesPerLine < width * bpp
2014-05-18 11:08:05 +03:00
raven02 c8e52a78f9 Fix wrong color effect in Disgaea 3 2014-05-18 14:57:56 +08:00
Unknown W. Brackets 07505aa9e2 GL: Fix D1R5G5B5 texture R/B components as well. 2014-05-17 23:14:42 -07:00
Unknown W. Brackets 7992115f6c GL: Swap R/B in A1R5G5B5 correctly.
Fixes Terraria, thanks @raven02.  How did I miss this, it was not passing
the test after all...
2014-05-17 23:06:26 -07:00
Unknown W. Brackets fed2998d48 cellPngDec: Ignore bytesPerLine < width * bpp.
It seems strange, but Sonic CD passes bytesPerLine = w * 3 for a 4 channel
image.  Either this is a bug elsewhere, or it ignores likely incorrect
strides.

Untested except in Sonic CD.
2014-05-17 22:32:11 -07:00
B1ackDaemon c0f55ae1e7 Merge pull request #241 from unknownbrackets/texformats
Add a few more texformats, fix cellPngDec
2014-05-18 02:19:30 +03:00
Unknown W. Brackets c8dea6b931 Typo. 2014-05-17 15:38:13 -07:00
Unknown W. Brackets 28b10157ad GL: Add Y16_X16 tex format (untested.) 2014-05-17 14:49:23 -07:00
Unknown W. Brackets 439dd9d8a3 GL: Add Y16_X16_FLOAT tex format (untested.) 2014-05-17 14:49:22 -07:00
Unknown W. Brackets cf0e116a56 GL: Add R8B8_R8G8 / B8R8_G8R8 formats, tweak G8B8.
Based on how the first two swizzle, most likely G8B8 works that way too.
2014-05-17 14:49:22 -07:00
Alexandro Sánchez Bach 0e3e4c7553 Merge pull request #236 from unknownbrackets/pngdec
cellPngDec: fix outputMode, outputBytesPerLine
2014-05-17 21:48:16 +02:00
Alexandro Sánchez Bach 921de12d93 Merge pull request #238 from unknownbrackets/texformats
Correct various texture formats in OpenGL
2014-05-17 20:56:29 +02:00
Unknown W. Brackets dbcee43567 Typo. 2014-05-17 11:32:18 -07:00
Unknown W. Brackets b58320d7dc GL: Small simplification. 2014-05-17 11:29:49 -07:00
Unknown W. Brackets 0978a1348e GL: Correct byteswapping for 565 type textures. 2014-05-17 11:15:26 -07:00
Unknown W. Brackets 86d35d58df GL: Add support for R6G5B5. 2014-05-17 11:15:26 -07:00
Unknown W. Brackets 2f8e31cddd GL: support the G8B8 tex format. 2014-05-17 11:15:25 -07:00
Unknown W. Brackets 68bc41b436 GL: Correct texture reswizzling, fix A4R4G4B4. 2014-05-17 11:15:25 -07:00
Alexandro Sánchez Bach ac65af7b62 Merge pull request #237 from raven02/patch-5
Fix wrong type for DEPTH24_D8/DEPTH16
2014-05-17 19:19:55 +02:00
raven02 ccc35176f6 Fix wrong type for DEPTH24_D8/DEPTH16 2014-05-18 00:52:48 +08:00
Unknown W. Brackets f7114cc620 cellPngDec: fix outputMode, outputBytesPerLine.
This handles CELL_PNGDEC_BOTTOM_TO_TOP and also handles reduced
outputBytesPerLine more correctly-looking.  Not actually tested against
actual behavior.
2014-05-17 09:21:25 -07:00
Alexandro Sánchez Bach d745a7bb4e Implemented CELL_GCM_TEXTURE_D1R5G5B5
Same color issue as A1R5G5B5 though.
2014-05-17 17:17:41 +02:00
B1ackDaemon 1f465bc7d8 Merge pull request #235 from raven02/patch-4
Implement CELL_GCM_TEXTURE_A1R5G5B5 & CELL_GCM_TEXTURE_A4R4G4B4
2014-05-17 12:22:58 +03:00
B1ackDaemon 389e3bbd91 Merge pull request #233 from raven02/patch-3
Fix CELL_GCM_TEXTURE_B8 opengl error 0x0500
2014-05-17 12:22:45 +03:00
B1ackDaemon a3a6a8a9e0 Merge pull request #232 from raven02/patch-2
Fix ternary operator
2014-05-17 12:22:35 +03:00
B1ackDaemon 36d5cf1a7f Merge pull request #231 from raven02/patch-1
Set default off for WriteColorBuffers / DepthBuffers
2014-05-17 12:22:27 +03:00
B1ackDaemon a33e4c7346 Merge pull request #230 from raven02/master
Use GL_BGRA for glReadPixels()
2014-05-17 12:22:12 +03:00
raven02 0d9de89a26 Implement CELL_GCM_TEXTURE_A1R5G5B5 & CELL_GCM_TEXTURE_A4R4G4B4 2014-05-17 17:00:25 +08:00
raven02 ddfdaa270e Set default on for Ignore RW errors
This seems to be making couples of games at least not booting without the option ticking.
2014-05-17 10:03:21 +08:00
raven02 e7a4eac676 Typo fix 2014-05-17 01:44:13 +08:00
raven02 ca7c4e119e Fix CELL_GCM_TEXTURE_B8 opengl error 0x0500 2014-05-17 01:27:55 +08:00
raven02 86ca4819ee Fix ternary operator 2014-05-16 22:43:32 +08:00
raven02 8278c8f5c4 Set default off for WriteColorBuffers / DepthBuffers 2014-05-16 21:29:34 +08:00
raven02 20af7c4981 Log lvl -> Log Level 2014-05-16 21:27:14 +08:00
raven02 f5e1d9eab1 Use GL_BGRA for glReadPixels() 2014-05-16 15:13:34 +08:00
Alexandro Sánchez Bach 68b0f800ff Merge pull request #228 from raven02/patch-1
Add few more texture formats and comments
2014-05-15 18:15:37 +02:00
raven02 42434adfaf Add few more texture formats and comments 2014-05-15 22:29:55 +08:00
Alexandro Sánchez Bach 315f1e62ad Merge pull request #227 from raven02/master
Implement CELL_GCM_TEXTURE_R5G5B5A1/R5G6B5
2014-05-15 11:01:41 +02:00
raven02 f3c3bebd6e Implement CELL_GCM_TEXTURE_R5G5B5A1/R5G6B5 2014-05-15 16:11:29 +08:00
Alexandro Sánchez Bach 5b252a8bad Merge pull request #226 from O1L/master
Fixed issue #221.
2014-05-14 14:49:49 +02:00
Oil 5833d22fe0 Fixed issue #221, and other minor changes. 2014-05-13 22:45:24 +04:00
Alexandro Sánchez Bach 38bd40891d Fixed issue with RSX Reports
Reports consist of 16 bytes (64-bit timestamp, 32-bit value and 32-bit
zero padding). This was found by @nohbdy some time ago.
2014-05-12 21:31:01 +02:00
Alexandro Sánchez Bach 4aefd5cbc4 Merge pull request #225 from Bigpet/master
Some light formatting and hotkeys for main frame restored.
2014-05-11 00:54:42 +02:00
Peter Tissen ca64054505 some light formatting and hotkeys for main frame restored 2014-05-10 16:00:34 +02:00
Peter Tissen 4c5b5f709f match project dependencies for wxStuff from their *.sln 2014-05-09 11:16:31 +02:00
Alexandro Sánchez Bach 8d5599d3dc Merge pull request #220 from unknownbrackets/opcodes
Add a few missing opcodes, fix SRAWI
2014-05-09 06:23:20 +02:00
Alexandro Sánchez Bach 93cb2a0af9 Merge pull request #219 from jarveson/cellPad_fixes
Cell pad fixes
2014-05-09 06:20:36 +02:00
Jake 6045c9a890 Removed unneccessary commented analog stick code 2014-05-08 17:20:16 -05:00
Unknown W. Brackets ff89e06fd6 Add missing ICBI instruction. 2014-05-07 23:53:19 -07:00
Unknown W. Brackets 9290453d2e Add missing STFSUX/STFDUX instructions. 2014-05-07 23:48:27 -07:00
Unknown W. Brackets 592e13b6a0 Add missing LSWX and STSWX instructions. 2014-05-07 23:39:45 -07:00
Unknown W. Brackets a5c18b2a09 Add missing TD instruction. 2014-05-07 23:36:13 -07:00
Unknown W. Brackets d54237b0a3 Fix SRAWI instruction decoding.
It's SH, not sh.  Lowercase combines bits from two fields.
2014-05-07 23:23:23 -07:00
Unknown W. Brackets 134e891068 Fix operand order in DSTST instruction.
No functional change.  Also, switch SC to use a u32 for more typesafe
opcode decoding - also no functional change.
2014-05-07 23:22:03 -07:00
Unknown W. Brackets cf86056ba9 Update wxWidgets to fix recompile thing in MSVC. 2014-05-07 23:21:45 -07:00
Jake 5deedb1524 Fix pad handler for digital buttons 2014-05-07 18:08:16 -05:00
Jake 4d28d2e75d Revert comment out of cellPadGetCapabilityInfo in funcList 2014-05-07 01:45:18 -05:00
Jake 0e933439dc Initial cellPadClearBuf functionality 2014-05-06 23:09:10 -05:00
Jake 387eac4d08 Added pressure support for keys, redid analog 'key' stick support 2014-05-06 23:04:47 -05:00
Jake 0d4e950769 Implemented more cellPad functions, fixed some cellpad error returns 2014-05-06 22:54:41 -05:00
Jake 604eecf5d4 Add in cellPadGetCapabilityInfo function 2014-05-06 22:48:55 -05:00
Jake 199845a9d1 Fixed 'Assign_changes' usage for cellpad / padhandler 2014-05-05 21:58:49 -05:00
Jake 29cd11ad06 Added in some more error codes to Cellpad functions 2014-05-05 20:49:20 -05:00
Alexandro Sánchez Bach 5b0ebacc40 Merge pull request #217 from Bigpet/master
fix msvc opengl includes
2014-05-01 21:07:40 +02:00
Peter Tissen 4de24cb436 more compact precompiler checking 2014-05-01 19:32:16 +02:00
Peter Tissen 0aa8a9f372 fix OpenGL includes for Win32 2014-05-01 19:29:28 +02:00
Alexandro Sánchez Bach 4c9444b958 Merge pull request #214 from kaazoo/master
Add compilation support for Mac OSX
2014-05-01 16:50:43 +02:00
Andreas Schroeder 11ca131607 detect Mac OSX and Windows, fall back to Linux 2014-04-30 00:58:57 +02:00
Andreas Schroeder ebe20a0825 move clock_gettime() into GNU.cpp 2014-04-29 22:46:43 +02:00
Andreas Schroeder 22a90a0907 add info for Mac OSX 2014-04-29 22:46:43 +02:00
Andreas Schroeder e7f0efa56d Mac OSX: use __thread for thread-local storage 2014-04-29 22:46:42 +02:00
Andreas Schroeder 64cfab5b46 Mac OSX: fix includes & add missing functionality 2014-04-29 22:46:42 +02:00
Clayton Walker 4db97eae7c Set build independent binary output dir
Useful for using multimple compilers (gcc/clang) with different compile-time (debug/release)
2014-04-29 01:17:41 -06:00
Alexandro Sánchez Bach f908a3ca78 Merge pull request #213 from Bigpet/master
Compile fix for VS (doesn't like implicit `u64 *` to `unsigned long*`)
2014-04-28 23:15:52 +02:00
Peter Tissen 3220e9bbc4 format warning disable for clang, typo correction 2014-04-28 21:50:07 +02:00
Peter Tissen baaa2ae45a format warning disable for clang, it clutters up the build messages too much 2014-04-28 21:36:31 +02:00
Peter Tissen 92d556524b well let's hope Clang doesn't mind implicit unsigned int to u64 2014-04-28 21:18:11 +02:00
Hykem 90896560bb Merge pull request #209 from unknownbrackets/warnings
Fix a bunch of warnings
2014-04-28 17:15:12 +01:00
Hykem 82e47a5c53 Merge pull request #212 from unknownbrackets/perf
Improve memory access performance a little
2014-04-28 16:31:11 +01:00
Unknown W. Brackets 8ff354a4ea Switch a bunch of loops to range fors. 2014-04-28 07:57:49 -07:00
Hykem 7b28d9d7ba Merge pull request #185 from lioncash/gui-cleanup
Clean up UI code.
2014-04-28 15:54:54 +01:00
Unknown W. Brackets d6baac6fbe Fix reseved -> reserved typo. 2014-04-28 07:43:12 -07:00
Unknown W. Brackets fce0a1efa1 Add AboutDialog.h header to msvc. 2014-04-28 07:43:12 -07:00
Unknown W. Brackets fb03214f0a Clarify if/else precedence in a macro. 2014-04-28 07:43:11 -07:00
Unknown W. Brackets bdb08c58d3 Clarify a no-content loop. 2014-04-28 07:43:11 -07:00
Unknown W. Brackets 1fb8060263 Clarify precedence in macro. 2014-04-28 07:43:10 -07:00
Unknown W. Brackets 75fe77115d Avoid a trigraph. 2014-04-28 07:43:10 -07:00
Unknown W. Brackets 763fb2719f Don't try to delete [] things that weren't new'd. 2014-04-28 07:43:09 -07:00
Unknown W. Brackets bcf63a0fae Correct some non-const string literals.
Should not be treated as non-const char *.
2014-04-28 07:43:09 -07:00
Unknown W. Brackets 80eb12a9d6 Always return a value in get_time().
Although, clock_gettime() should never fail here.
2014-04-28 07:43:08 -07:00
Unknown W. Brackets f2d6bf73ca Clarify an assignment is not a comparison. 2014-04-28 07:43:07 -07:00
Unknown W. Brackets 563aa2d2ca Log unhandled case in FPSCR::checkSliceRounding(). 2014-04-28 07:43:07 -07:00
Unknown W. Brackets 2fdefc4fb5 Fix some int/ptr comparisons. 2014-04-28 07:43:06 -07:00
Unknown W. Brackets b550ccfc73 Make MemoryBase::Unmap() return a value. 2014-04-28 07:43:06 -07:00
Alexandro Sánchez Bach dea8bed140 Merge pull request #207 from UnconventionalT/master
Gui: Replace sscanf with ToULong
2014-04-28 10:12:10 +02:00
Unknown W. Brackets 32554b7023 Use templates in FastRead/FastWrite to simplify.
DRY.
2014-04-28 00:42:02 -07:00
Alexandro Sánchez Bach c8d93d0da4 Merge pull request #208 from darkf/patch-1
README: Use OpenAL Soft and add a Travis CI badge
2014-04-28 09:36:20 +02:00
Unknown W. Brackets e4c0b0310c Don't ask twice if MemoryBlocks can read mem.
They already check on Read32(), so just use that to iterate.
2014-04-28 00:15:37 -07:00
Unknown W. Brackets 2f7fbf01cf Avoid pointless strdup(). 2014-04-27 21:31:42 -07:00
Unknown W. Brackets 42d5da633a Fix an unused variable warning. 2014-04-27 21:31:42 -07:00
Unknown W. Brackets 5f6a2e498a Fix some type comparion warnings. 2014-04-27 21:31:41 -07:00
Lioncash 8feabb00d6 Correct event handlers to trigger in all instnces
Some events don't propagate correctly to the right sub-window
and some things like the pad handler don't even necessarily have
windows. So, just register some events with the top-level app.

Also add a virtual destructor to the PadHandlerBase to be able to
deal with multiple inheritance in the derived classes.
2014-04-27 20:05:01 -04:00
darkf 708662da39 README: Use OpenAL Soft and add a Travis CI badge 2014-04-27 16:55:18 -07:00
Lioncash b877879db6 Clean up UI code.
- Use Bind instead of connect. It's recommended for anyone using wx 2.9+
- Remove AppConnector. All this did was destroy objects used in the UI. However, wxWidgets handles this. So it's redundant.
- Misc other unimportant changes.
2014-04-27 19:53:13 -04:00
Clayton Walker 0c5526f2fd Gui: Replace sscanf with ToULong 2014-04-27 17:11:03 -06:00
B1ackDaemon db1ca2f89f Merge pull request #206 from Bigpet/linspurec
enable SPU recompiler on linux
2014-04-28 00:12:35 +03:00
Peter Tissen fad6c7cecb add asmjit path hack, we'll get rid of it sooner or later 2014-04-27 21:32:12 +02:00
Peter Tissen 870fa5a153 explicit cast from void(*)() to void * 2014-04-27 20:23:32 +02:00
Peter Tissen 0bcadaf155 explicitER casting, why you heff to be mad Clang 2014-04-27 20:13:47 +02:00
Peter Tissen 95ca5315e7 fix path to the asmjit lib 2014-04-27 19:59:12 +02:00
Peter Tissen 9d3d7b09b3 explicit casting 2014-04-27 19:55:31 +02:00
Peter Tissen 7169972434 disable cotire for now 2014-04-27 19:34:09 +02:00
Peter Tissen 4981c576d2 rename all the non-standard include file extensions to *.h 2014-04-27 19:28:03 +02:00
Peter Tissen 6a24d2bbac fix typo in cmakelists.txt, again 2014-04-27 19:23:11 +02:00
Peter Tissen 07841fc9e3 fix typo in cmakelists.txt 2014-04-27 19:17:41 +02:00
Peter Tissen 85be97e6a2 add explicit casts for the ptrdiffs 2014-04-27 19:15:35 +02:00
Peter Tissen a766f5951d add precompiled header build to cmake to speed up building 2014-04-27 19:07:20 +02:00
Peter Tissen 60a7fe17b5 remove .m128i_uxx subscripts because they're non standard 2014-04-27 18:51:24 +02:00
Peter Tissen f906d031fa remove more offsetof calls on linux and add asmjit linkage 2014-04-27 18:37:21 +02:00
Peter Tissen 1ba5cafc5f enable SPU recompiler on linux 2014-04-27 18:18:04 +02:00
Alexandro Sánchez Bach d085301af3 Merge pull request #204 from darkf/padfix
pad: Send all button states so release events fire
2014-04-27 16:06:03 +02:00
darkf d47dbf4f32 pad: Send all button states so release events fire 2014-04-27 05:33:31 -07:00
Alexandro Sánchez Bach b0699f38e7 Merge pull request #202 from Bigpet/linub
Add travis CI config file and all the changes to make it compile there under both gcc and llvm clang
2014-04-27 01:13:54 +02:00
Bigpet eea3aa9729 This is squashed commit from the follwing commits:
* various changes to make it compile with clang

* don't compile recompiler on linux yet but make the CMake build include asmjit already

* add experimental travis bot

* modify yml to match

* try to build and install wxWidgets, since it's not in the travis repo

* use newer cmake version for travis

* add keys with sudo

* use sudo for all apt- commands

* Add additional dependencies

* use version approriate gcc flags for c++11

* try clang, gcc too old

* set c++0x flag for clang

* use gcc 4.8

* use gcc 4.8 and add the repo for it

* use gcc 4.8 even for clang to get newer headers

* fix ambiguous conversions

* add lz from hykem and more explicit conversions from be for x86

* more switch disambiguation

* more switch disambiguation

* add additional unigned int casts to deal with be_t conversion ambiguity

* remove unnecessary clang flag

* add lz.cpp to vcxproj and cast to u32 instead of unsigned int

* correct temporaray #ifdefs
2014-04-27 00:41:46 +02:00
Alexandro Sánchez Bach a2157a5365 Merge pull request #201 from Nekotekina/master
Compilation fix again
2014-04-26 12:55:29 +02:00
Nekotekina 0d375809b1 Useless code removed 2014-04-26 00:28:43 +04:00
Nekotekina a24cb250d8 Compilation fix again 2014-04-26 00:09:23 +04:00
Alexandro Sánchez Bach 6facd8d9c6 Merge pull request #200 from Nekotekina/master
Compilation fixes
2014-04-25 15:53:35 +02:00
Nekotekina 555d053e32 Compilation fixes 2014-04-25 16:48:27 +04:00
Alexandro Sánchez Bach 15b0b6830e Merge pull request #199 from darkf/net-work
Improve networking
2014-04-25 10:00:18 +02:00
darkf 2b7c12a3f0 Stub cellWebBrowserEstimate2 so some apps proceed 2014-04-24 22:14:40 -07:00
darkf ee2e0b3bbf sys_net: Implement sockaddr_in, inet_addr, listen 2014-04-24 22:02:33 -07:00
darkf b0b6034e63 accept accepts NULL address 2014-04-24 05:10:43 -07:00
Alexandro Sánchez Bach 8c4fd75c82 Merge pull request #198 from darkf/spugui
Add SPU decoder mode selection to GUI/Config
2014-04-23 20:38:34 +02:00
darkf 090f7f8cfb Add SPU decoder mode selection to GUI/Config 2014-04-23 05:06:19 -07:00
Alexandro Sánchez Bach 0d7e45639a Merge pull request #197 from Nekotekina/master
Simple SPU JIT
2014-04-23 13:19:18 +02:00
Nekotekina 525084e7cc Some stuff 2014-04-20 23:36:53 +04:00
Nekotekina e1bbedd4bf Accuracy improved 2014-04-20 02:53:42 +04:00
Alexandro Sánchez Bach 9e793c2122 cellSaveData* (cellSysutil) refactoring 2014-04-19 18:50:06 +02:00
Nekotekina 678a964ff4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-19 18:45:55 +04:00
Alexandro Sánchez Bach 225c58c17b Merge pull request #196 from Bigpet/deleteErr
fix copying class with pointers as member
2014-04-19 11:33:27 +02:00
Nekotekina 7875738391 More opcodes 2014-04-19 02:11:07 +04:00
Nekotekina 62df7eb499 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/rpcs3.vcxproj.filters

Conflicts fixed
2014-04-18 16:59:31 +04:00
Peter Tissen ee9d25c675 forgot the right check 2014-04-18 13:31:37 +02:00
Peter Tissen 79eaffaaa7 copying class with pointers as member when deleting them in the desctructor is danger zone. 2014-04-18 13:28:27 +02:00
Alexandro Sánchez Bach ef108ae4d6 Merge pull request #194 from Dante38490/patch-1
Restore the "# Visual Studio 2013" comment in rpcs3.sln
2014-04-18 00:17:25 +02:00
Dante38490 9900b36f07 return back
restore correct version
2014-04-17 23:38:07 +02:00
Alexandro Sánchez Bach bad20ab9df Merge pull request #193 from nohbdy/pull_apr172014
RSX Bugfixes and plugging memory leaks
2014-04-17 23:18:20 +02:00
Nekotekina 5d091411a3 More opcodes 2014-04-18 00:25:02 +04:00
nohbdy d136adc73f RSX Bugfixes and plugging memory leaks
BUGFIX: Add break after NV4097_SET_TEXTURE_BORDER_COLOR in RSXThread.cpp
BUGFIX: Fix parameters passed to RSXTexture::SetControl3 (they were being
passed in reverse order)
BUGFIX: Remove invalid, non-sensical call to glPixelStorei in GLGSRender.h
BUGFIX: Fix signed/unsigned comparison compiler warnings in GLGSRender.h
CHANGE: Make GLFragmentProgram::Decompiler synchronous by default
CHANGE: Update wxWidgets submodule to latest commit
BUGFIX: Fix several memory leaks
ADDED: Created a new MSVC debug configuration to output locations
  of allocations that end up leaking after the program
  is closed.
BUGFIX: Fix the stupid PadHandler crash due to the lack of a virtual d'tor
2014-04-17 15:15:43 -05:00
Nekotekina 29d2ea7513 Some bugs fixed 2014-04-17 03:28:21 +04:00
Nekotekina a57841d006 Some comments cleared 2014-04-16 15:36:20 +04:00
Nekotekina dab0751300 ... 2014-04-16 15:09:06 +04:00
B1ackDaemon 34729e2687 Merge pull request #191 from Bigpet/master
Fix for video playback
2014-04-15 17:12:15 +03:00
Peter Tissen f073f1ca4b yeah, that happened 2014-04-15 14:48:21 +02:00
Alexandro Sánchez Bach aa8e854be2 Merge pull request #187 from Bigpet/master
range-check and more explicit ownership with vector<ptr>
2014-04-15 00:55:07 +02:00
Nekotekina c41317dd82 New bugs added 2014-04-14 13:42:55 +04:00
Peter Tissen 8ef9414406 try to reign in the vector<ptr> madness 2014-04-14 10:55:43 +02:00
Peter Tissen 552b71a378 fix not range-checked vector access 2014-04-14 09:01:31 +02:00
Alexandro Sánchez Bach 5dc9be649d Merge pull request #184 from daniel-dressler/master
Add Linux build instructions for Debian & Ubuntu
2014-04-13 07:38:55 +02:00
danieru b87aa55351 Fix run instruction hitting CWD bug
PCS3 assumes current working directory is bin folder.
So running it like ./bin/pcs3 stops it from finding
dev_hdd0 and related.
2014-04-12 21:15:09 -06:00
danieru 57a9b557e9 Add Linux build instructions for Debian & Ubuntu 2014-04-12 19:19:48 -06:00
B1ackDaemon 0d7397a636 Merge pull request #183 from Bigpet/cmakefix
quote guard CMake variables
2014-04-12 22:54:43 +03:00
B1ackDaemon a059297bf4 Merge pull request #182 from Bigpet/array_remove
Replace Array with std::vector
2014-04-12 22:54:34 +03:00
Bigpet a14c61802e quote guard CMake variables 2014-04-12 21:36:34 +02:00
Nekotekina 180f8aac5d SPU Interpreter fix 2014-04-12 14:27:27 +04:00
Peter Tissen cdaca2d308 fix accidental wxWidgets version change 2014-04-12 12:09:48 +02:00
Bigpet 25c3aa8e19 fixes to get llvm to compile (excepti for utils.cpp, that'll get fixed
later)

Eradicate the Array almost everywhere, some usages like Stack still
remains
2014-04-12 12:06:52 +02:00
Peter Tissen d65968b41d unify line endings to shut up VS 2014-04-12 11:42:20 +02:00
Nekotekina e56bb1b675 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-11 12:33:41 +04:00
Nekotekina a7057f5205 Conflicts fixed 2014-04-10 02:00:01 +04:00
Alexandro Sánchez Bach c8d8428275 Merge pull request #179 from O1L/master
Minor fix in GUI an other changes.
2014-04-09 23:59:29 +02:00
Oil 0763e429b8 I just forgot to do it... 2014-04-10 00:42:50 +04:00
Oil 770ebaf271 Implemented small tool for generating id of HLE-Function. Fixed small issue in PADManager dialog. 2014-04-09 23:57:26 +04:00
Alexandro Sánchez Bach 8183ee4d56 cellSaveData* improvements
* cellSaveDataFixedSave2 and cellSaveDataFixedLoad2 implemented. Still a
little buggy.
* Small fix the cellSaveDataList(Save|Load)2 problem in Disgaea D2 and
other games.

NOTE: cellSysutil_SaveData.cpp is a total mess: some blocks of code
appear in all the syscalls. I just want to wait until most of the
SaveData functions are implemented and working to do some serious
refactoring.
2014-04-09 18:23:14 +02:00
Alexandro Sánchez Bach 930d507d43 Merge pull request #178 from Bigpet/master
Remove GCC specific variadic macro syntax
2014-04-08 21:59:25 +02:00
Peter Tissen 10ca726752 Remove GCC specific variadic macro syntax 2014-04-08 21:47:02 +02:00
Alexandro Sánchez Bach e89ecd192b Merge pull request #177 from Bigpet/minifix
Various warning fixes and devirtualization
2014-04-08 20:06:20 +02:00
Alexandro Sánchez Bach ce1b6039ac Merge pull request #175 from eriksson/nx-fixes
*nix fixes
2014-04-08 20:05:55 +02:00
Peter Tissen 4066950975 Various warning fixes and devirtualization
* Remove ArrayString
* devirtualize GetCount and SetCount, they're no longer needed
* set storage duration of fmt::placeholder to extern to be consistent
* make length unsigned and the return value of sprintf signed
* remove dead code "s.Close()" is never reached
* devirtualize WrteToLog()
* devirtualize Ini functions
2014-04-08 19:41:47 +02:00
Nekotekina 33f7afd6e6 Some bugs fixed 2014-04-08 19:10:07 +04:00
Eriksson Monteiro 3cb18ac5a9 fix trailing comma in array 2014-04-08 00:41:09 +01:00
Alexandro Sánchez Bach 1975b7e139 Merge pull request #176 from lioncash/ppu-typo
Fix a typo in SUBFZE for the PPUInterpreter.
2014-04-07 21:21:38 +02:00
Nekotekina 4e9dc8ab9c SPU JIT: more asm 2014-04-07 22:27:30 +04:00
Lioncash f019bd995a Fix typo in SUBFZE for the PPUInterpreter. 2014-04-07 11:48:30 -04:00
Nekotekina f9b68bc012 SPU JIT fix
Nothing changed in interpreter.
2014-04-07 17:06:13 +04:00
Alexandro Sánchez Bach 9e40247af0 Fixed error in SC_Pad.cpp and Readme.md updated 2014-04-07 14:40:50 +02:00
Alexandro Sánchez Bach f45223563c Merge pull request #150 from lioncash/unique-ptr
Misc cleanup of the Io stuff.
2014-04-07 09:49:09 +02:00
Lioncash d36da21d6f Fix stupid mistake I made with rebasing.
Accidentally overwrote the Pad handler stuff for windows. Should be fixed now.
2014-04-06 23:47:00 -04:00
Lioncash 3c5e3fa853 Move the mouse/keyboard/pad handlers over to using unique_ptr as the underlying base. 2014-04-06 23:46:59 -04:00
lioncash c5a7946a24 Move Keyboard/Mouse/Pad handlers over to using vector. 2014-04-06 23:46:59 -04:00
lioncash 26e80a18b4 Disallow inheriting of the null and windows mouse/keyboard/pad handlers. These aren't intended to be further extended. 2014-04-06 23:46:58 -04:00
Eriksson Monteiro e65d1a3dd9 replace CLK_TCK for CLOCKS_PER_SEC 2014-04-06 22:51:36 +01:00
Eriksson Monteiro 5a5edf17fd Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 into nx-dbgoutput 2014-04-06 22:35:36 +01:00
Alexandro Sánchez Bach 8798b05e1f Merge pull request #161 from lioncash/vs
Reorganize the VS project.
2014-04-06 22:59:05 +02:00
Alexandro Sánchez Bach b6cda331c0 Merge pull request #174 from Nmzik/master
Added 2 new functions
2014-04-06 21:58:58 +02:00
Nmzik f9e6230ead added 2 functions 2014-04-06 23:47:21 +04:00
Nekotekina e614a7313c SPU JIT WIP 2014-04-06 23:23:32 +04:00
Hykem d0b249fbca Merge pull request #172 from O1L/master
GUI: Pad Settings dialog reworked.
2014-04-06 16:17:07 +01:00
Hykem f76e1630b4 Merge pull request #171 from Nmzik/master
Minor improvement
2014-04-06 16:08:07 +01:00
Eriksson Monteiro d7dc938653 remove trailing commas in arrays 2014-04-06 14:25:53 +01:00
Alexandro Sánchez Bach 039dd480da Merge pull request #173 from lioncash/misc
Fix two parameter sanity checks in sceRtc.
2014-04-06 15:00:26 +02:00
Lioncash 842a6fe1d4 Fix two parameter sanity checks in sceRtc. 2014-04-05 15:46:56 -04:00
Nekotekina 4a9310755f Working on simple SPU JIT
No, it doesn't work.
2014-04-05 20:30:08 +04:00
O1L bbbe2f8916 GUI: Pad Settings dialog reworked. 2014-04-05 18:26:45 +04:00
Nmzik 3243c4c0c8 Test 2014-04-05 14:17:32 +04:00
Alexandro Sánchez Bach 3bcf5d1557 Merge pull request #170 from Nekotekina/master
Audio fixes
2014-04-04 17:55:09 +02:00
Nekotekina 82edd111e9 asmjit submodule added 2014-04-04 19:36:53 +04:00
Nekotekina c6c6dbe546 Conflicts fixed 2014-04-04 18:43:43 +04:00
Alexandro Sánchez Bach dcb9d53e6d Merge pull request #169 from lioncash/tab-fixes
Use spaces for vertical alignment
2014-04-04 16:01:57 +02:00
lioncash d0c9d7c0ae Use spaces for vertical alignment 2014-04-04 09:25:38 -04:00
Alexandro Sánchez Bach e25796f0d0 Merge pull request #168 from darkf/sysutil
Implement/stub cellSysutilGetBgmPlaybackStatus
2014-04-04 11:32:53 +02:00
darkf 4d4b6c0895 Implement/stub cellSysutilGetBgmPlaybackStatus 2014-04-04 00:28:00 -07:00
Nekotekina 24eb97f287 AudioDumper: 8ch output 2014-04-04 00:46:40 +04:00
Nekotekina fb9dbfab3a Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-03 16:11:56 +04:00
Nekotekina 1e02598903 cellSync: global mutex avoided
cellAudio: level bug fixed
2014-04-03 15:01:14 +04:00
Alexandro Sánchez Bach 7093852fa0 lv2 sc_table edited & FP recompiler ddx/ddy fix
* Replaced ddx/ddy with dFdx/dFdy in FP recompiler.
* SysCalls table edited. It should now be easier to read / edit. Tell me
if you disagree with this.
2014-04-03 04:20:12 +02:00
Alexandro Sánchez Bach 01b5681dc8 Merge pull request #165 from lioncash/misc
Add a parameter check to some Gif/Jpg/Png decoding syscalls
2014-04-03 04:06:51 +02:00
Lioncash 9d0dd4c7cf Add a parameter check to some Gif/Jpg/Png decoding syscalls 2014-04-02 22:02:43 -04:00
Alexandro Sánchez Bach 262607c83d Merge pull request #164 from lioncash/stubs
Stub some sceNp funcs
2014-04-03 02:55:44 +02:00
Lioncash 2a83af6dbf Stub some sceNp funcs 2014-04-02 19:32:07 -04:00
Alexandro Sánchez Bach 91958ce1cb Merge pull request #162 from lioncash/build-fix
Fix the build.
2014-04-02 21:02:41 +02:00
Lioncash 1aff35f669 Fix the build. 2014-04-02 14:42:25 -04:00
Lioncash bb40c0a71a Reorganize the VS project.
Puts all the headers with the corresponding cpp file instead of having every include in a single folder.

Also added headers that weren't included previously.
2014-04-02 14:30:30 -04:00
Alexandro Sánchez Bach fc9a90e220 Merge pull request #160 from Bigpet/master
Gui logging in main thread
2014-04-02 19:58:34 +02:00
Alexandro Sánchez Bach 2c2ee023b5 Merge pull request #159 from lioncash/vector
Move most of PPUProgramCompiler over to vector
2014-04-02 19:57:02 +02:00
Alexandro Sánchez Bach 81cdaa883a cellPngDec fixes and some rewritings
* This commit solves the cellPngDec GetMemFromAddr(0x0) error when
loading PNGs from files.
* cellVideoOutGetResolution, cellRtc* syscalls rewritten to use the use
the mem*_t data types.
* Replaced int/uint with s32/u32 in some syscall arguments and structs.
2014-04-02 19:53:44 +02:00
Peter Tissen dad82aa1eb Gui logging in main thread
Do the logging to the GUI log element in the main thread. Not doing this
causes issues with the GTK backend of wxWidgets. Plus it's just common
sense to try to limit gui calls to one thread.
2014-04-02 17:57:50 +02:00
Nekotekina b6d8f1e028 Small fix (cellAudio, fsAioRead)
libsynth2 draft
2014-04-02 19:17:43 +04:00
Lioncash 990fca3e7b Minor simplifications to PPUProgramCompiler 2014-04-02 10:21:16 -04:00
Lioncash b3e0441940 Move PPUProgramCompiler to vector 2014-04-02 09:58:47 -04:00
Nekotekina e2e8980194 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-02 12:37:03 +04:00
Alexandro Sánchez Bach c294f5318f Merge pull request #157 from Dante38490/patch-4
Update rpcs3.sln on VS 2013
2014-04-01 23:31:10 +02:00
Dante38490 d1219b0dc8 Update rpcs3.sln 2014-04-01 22:05:54 +02:00
Nekotekina d2ca1cc25a Audio sync fix
Libmixer: SSPlayer draft
Detection fixed
Macros for function substitute registration
2014-04-02 00:04:56 +04:00
Alexandro Sánchez Bach 4857e86cdc Merge pull request #156 from Bigpet/wxString_exorcism
Fix static placeholder test.
2014-04-01 20:30:44 +02:00
Peter Tissen 748aa6fce8 fix indentation 2014-04-01 20:27:58 +02:00
Peter Tissen 373ae6b107 remove dummy alias in strfmt. Fix some wxString remnants, that only make problems in Linux 2014-04-01 20:13:22 +02:00
Peter Tissen 69352206b6 blantant test code removal well this is embarassing, VS didn't recompile it, so I didn't notice the mistake 2014-04-01 19:44:38 +02:00
Alexandro Sánchez Bach 2ab8aa173d Merge pull request #155 from Bigpet/wxString_exorcism
Wx string exorcism fixups
2014-04-01 19:40:28 +02:00
Peter Tissen 02729695ff remove some wxString references I missed 2014-04-01 19:25:22 +02:00
Peter Tissen bcb9ad94c1 correct some merge error that happened from automatic git merging 2014-04-01 19:19:51 +02:00
Alexandro Sánchez Bach bc095322c3 Merge pull request #153 from Bigpet/wxString_exorcism
wxString exorcism
2014-04-01 18:25:33 +02:00
Peter Tissen febe8624bf remove redundant c_str -> string -> c_str conversions 2014-04-01 17:22:57 +02:00
Peter Tissen 8ac226ae69 replace all instances of wxString with std::string in all cases not
directly involved in either the GUI or other wxWidget classes like wxFile
2014-04-01 16:23:03 +02:00
Nekotekina 7c79631609 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-01 12:19:32 +04:00
Alexandro Sánchez Bach fa4473de49 Merge pull request #147 from lioncash/mem-leaks
Fix some memleaks in unedat.cpp
2014-03-31 21:41:24 +02:00
Alexandro Sánchez Bach a09ad031ec cellSaveData* (cellSysutil) improvements
* cellSaveData improvements: cellSaveDataListLoad2 should work perfectly
(ignoring the fact that there is no dialog, and the first entry is
chosen automatically). cellSaveDataListSave2 has improved too. Some code
refactoring is required though.
* Reverted (deleted) Emu/SysCalls/Dialogs/ folder which I accidentally
included while merging Nekotekina's branch (including minor SaveData
changes).
* Modified some small things in cellGcmSys.
2014-03-31 20:30:07 +02:00
Peter Tissen b1894ac6cb fix implicit conversion error 2014-03-31 17:35:05 +02:00
Peter Tissen 8a000940da upgrade to VS2013 to use variadic templates for type safe printing 2014-03-31 17:35:04 +02:00
Nekotekina 24becb9325 Conflicts fixed 2014-03-31 18:38:21 +04:00
lioncash c4b64c8d9f Fix variable typos in unedat.cpp
Also fixed possible uninitialized variable usage. Initializes length to zero.
2014-03-31 08:59:52 -04:00
lioncash e47e37a8d2 Fix some memory leaks in unedat.cpp. 2014-03-31 08:56:24 -04:00
Alexandro Sánchez Bach 01dbb8eb9a Merge pull request #145 from Nekotekina/master
Fixed conflicts.
2014-03-31 12:04:34 +02:00
Alexandro Sánchez Bach 8011cc8ec4 Merge pull request #146 from darkf/stuff
Add FindGLEW to CMake build and fix naming error
2014-03-31 11:23:17 +02:00
Alexandro Sánchez Bach 66ec7c0d63 Merge pull request #144 from acmiyaguchi/gcm
Reorganize cellGcmSys module
2014-03-31 11:18:40 +02:00
darkf 61d0e4ee54 Rename xor to xor_ to allow build to continue in compliant compilers 2014-03-31 00:55:27 -07:00
darkf 8007693084 Add FindGLEW to CMake modules along with some compiler flags 2014-03-31 00:00:30 -07:00
Nekotekina 9afbbfad0a Little fix 2014-03-31 10:19:51 +04:00
Anthony Miyaguchi 2106fb83b2 Added cellGcmSetUserHandler that already existed but was never added. 2014-03-30 18:01:51 -07:00
Anthony Miyaguchi b571f14fe4 Function declaration at top needed for another function. 2014-03-30 17:56:03 -07:00
Anthony Miyaguchi eab81deb27 Reordered functions for organization. 2014-03-30 17:54:57 -07:00
Anthony Miyaguchi a62552b086 Organized the cellGcmSys_init() functions in a more sane manner. 2014-03-30 17:54:34 -07:00
Nekotekina 2d955dc297 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-31 00:43:44 +04:00
Hykem 196c2ffe5b Updated the crypto engine:
- Updated AES and SHA-1 source code;
- Fixed a few code warnings;
- Implemented EDAT/SDAT decryption.

Started SPURS implementation:
- Added an internal SPURSManager class draft;
- Added several drafts for cellSpurs functions.

Implemented key.edat decryption in sceNpDrmIsAvailable:
- NOTE: Currently, the decrypted key.edat is stored under dev_hdd1/titleID and the user must replace this file in dev_hdd0. This behavior will change in the future as it's currently intended for controlled testing only.
2014-03-30 21:09:49 +01:00
Nekotekina 9e2561d121 Downmixing/upmixing 2014-03-30 22:53:43 +04:00
Nekotekina fce074d812 Audio mixing fixed
Libmixer reseen
Some bugs fixed
2014-03-30 15:59:55 +04:00
Alexandro Sánchez Bach e6aa1a9553 Merge pull request #142 from lioncash/hdd
Misc HDD stuff
2014-03-30 12:23:47 +02:00
Lioncash b9de74f5c6 Move VHDDManager over to using vector. Also fix some variable and function name typos. 2014-03-30 00:13:00 -04:00
Lioncash 479ef45aec Fix a case where m_hdd_file is passed to m_file uninitialized.
Due to the way initializations work in C++, despite the order of the initializations in the initialization list, it will actually do the initializing in the order the class variables are defined.
2014-03-30 00:08:16 -04:00
Alexandro Sánchez Bach ae5d06d4be Merge pull request #141 from lioncash/bounds
Memset the ringbuffer in m_fs_config by the size of the actual ringbuffer struct, not FsRingBufferConfig's size..
2014-03-30 00:18:02 +01:00
Alexandro Sánchez Bach 3e328cdea5 Merge pull request #140 from lioncash/misc-things
Fix missing unary increment operator in DisAsmFrame
2014-03-30 00:15:47 +01:00
Lioncash 12b627fa9c Memset the ringbuffer in m_fs_config by the size of the actual ringbuffer struct, not FsRingBufferConfig. 2014-03-29 16:28:39 -04:00
Lioncash d6bcf14cc0 Fix missing unary increment operator in DisAsmFrame 2014-03-29 16:13:05 -04:00
Nekotekina 72bb0c842f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-29 20:49:43 +04:00
Alexandro Sánchez Bach 7804c56584 Merge pull request #138 from bagedevimo/nix-fix
More *nix fixes.
2014-03-29 16:26:08 +01:00
Ben Anderson 33f7f37ca7 Fixes null ptr in gcc, probably to do with operator precedence. @Bigpet was all over this one. 2014-03-30 03:21:41 +13:00
Ben Anderson 84c9323750 Fixes GL fix, which was broken. Added -g flag to cmake, so we can have debug builds. 2014-03-30 03:15:46 +13:00
Alexandro Sánchez Bach 4c6aa34810 Merge pull request #135 from bagedevimo/path-fix
Nix Path fix.
2014-03-29 09:50:26 +01:00
Ben Anderson e24027eccb Added call to GlewInit() under *nix, should fix cairo display crashes. 2014-03-29 21:11:43 +13:00
Nekotekina 98024cbb01 Conflicts fixed 2014-03-29 12:04:38 +04:00
Ben Anderson b317b2feda Commenting out all of this, should fix the pathing glitches on *nix, without breaking windows functionality. 2014-03-29 20:52:39 +13:00
Alexandro Sánchez Bach a7fbd5c9b6 Merge pull request #133 from bagedevimo/fix
Fixes invalid conversion from wxStringConst, to std::string under gcc-4-8
2014-03-29 07:05:57 +01:00
Ben Anderson 6141c33630 Fixes invalid conversion from wxStringConst, to std::string under gcc-4.8 2014-03-29 13:52:27 +13:00
Nekotekina 689c41ccb3 Minor fixes
Libmixer: additional patterns
2014-03-29 02:50:05 +04:00
Alexandro Sánchez Bach 503c24453a cellSaveData* progress & reverted commit 950fcfe
* Reverted commit
https://github.com/DHrpcs3/rpcs3/commit/950fcfe4ef6da8aad5198fc12b029862545cfc4e
(Reverted ConLog changes) that fixed the "Bad flip!" error since there
is a better way of solving it. It will be fixed soon.
* Moved cellSaveData to cellSysutil (but preserving the functions in a
separated file named: cellSysutil_SaveData.cpp).
* Progress on cellSaveDataList* functions.
* Added a small margin to the new Settings dialog. :-)
2014-03-28 20:06:15 +01:00
Alexandro Sánchez Bach 64b80f5a2e Merge pull request #132 from O1L/master
GUI: Config -> Settings menu reworked.
2014-03-28 19:37:32 +01:00
O1L 1be14f818a GUI: some changes in Config -> Settings 2014-03-28 21:17:44 +04:00
Alexandro Sánchez Bach 5bf70afb21 Merge pull request #131 from bagedevimo/x11
Fixes X11 threading issue, under Linux
2014-03-28 13:03:54 +01:00
Ben Anderson b36a5a95f0 x11 fix 2014-03-29 00:33:51 +13:00
Nekotekina 70cc2494aa bad_flip issue fix 2014-03-28 12:47:32 +04:00
Hykem 98b4a35fb5 Merge pull request #130 from nohbdy/bugfix
Minor code and memory initialization fixes
2014-03-28 04:53:28 +00:00
Hykem e03b68f12f Merge pull request #129 from acmiyaguchi/master
Fix a hang after failing to run an *.elf file and stopping emulator
2014-03-28 04:52:51 +00:00
Alexandro Sánchez Bach 950fcfe4ef Reverted ConLog changes of commit 5ea58d94
This was causing a "Bad flip!" error on Arkedo Series 02 Swap!. I guess
we will have to search for a better solution. I just reverted the
ConLog.cpp / ConLog.h files.

Related commit:
https://github.com/DHrpcs3/rpcs3/commit/5ea58d9451c2af7884bb5d1fd74e47d0bcc5770a
2014-03-28 05:32:24 +01:00
Alexandro Sánchez Bach 2c7269e3de PSF Loader improved & issue #126 fixed
* Improved PSF Loader: Now you can get the value of the PARAM.SFO
entries directly with the GetString(key), GetInteger(key) methods.
GameInfo related lines were removed since they have nothing to do with
PSF files.
* cellGame, cellSysutil, and GameViewer are modified because of the PSF
Loader changes.
* Removed unnecessary null pointer checks:
https://github.com/DHrpcs3/rpcs3/issues/126
2014-03-28 05:20:13 +01:00
nohbdy d533572ee9 Minor code and memory initialization fixes
* Explicitly initialize member variables in SELFDecrypter, MemInfo, and
VirtualMemoryBlock
* Zero out memory used for counter/nonce in aes-ctr
* Fix use of a ControlInfo pointer after it is added to an Array via
Array::Move (which makes it an invalid pointer) in
SELFDecrypter::LoadHeaders
2014-03-27 22:16:14 -05:00
Anthony Miyaguchi 544bacf54e Quick one line change fixes a hang after failing to run an *.elf file and stopping the emulator via the Stop button. 2014-03-27 18:57:28 -07:00
Alexandro Sánchez Bach 64145d7d62 Merge pull request #124 from xsacha/master
Linux build fix
2014-03-27 23:17:59 +01:00
Alexandro Sánchez Bach 1fd42c34c2 Minor fixes
* Modified some .gitignore's
* Removed some #include <vector>'s
and other stuff...
2014-03-27 16:40:58 +01:00
Alexandro Sánchez Bach c541176a32 Merge pull request #125 from lioncash/ui
Simplify some VFS-related code.
2014-03-27 16:08:04 +01:00
Alexandro Sánchez Bach 7d3414c44c Merge pull request #127 from lioncash/misc-things
Minor logging changes.
2014-03-27 16:03:38 +01:00
lioncash a5f35cc437 Fix a typo in a log message
Also moved a logging statement after an if statement check. We don't want to signify creation of something before checking its validity.
2014-03-27 09:23:32 -04:00
lioncash 7f5412f427 Make a some printfs into error log calls. 2014-03-27 09:22:56 -04:00
lioncash 007f0f2437 More specific log message for adecRawRead.
Was previously logging as adecRead.
2014-03-27 07:36:24 -04:00
Lioncash 8e44bcdbda Simplify some VFS-related code. 2014-03-27 02:49:02 -04:00
Sacha 9b0bcf0b54 Linux build fix 2014-03-27 11:12:45 +10:00
Hykem 457455b71d Merge pull request #121 from lioncash/stack
Use Push instead of AddCpy in CallStackBranch.
2014-03-27 00:12:04 +00:00
Hykem f399ce68a2 Merge pull request #122 from lioncash/misc-things
Remove an unnecessary c_str call.
2014-03-27 00:11:47 +00:00
Lioncash 2185465d34 Remove an unnecessary c_str call. 2014-03-26 19:54:09 -04:00
Lioncash a7bc2034d0 Use Push instead of AddCpy in CallStackBranch. 2014-03-26 19:25:12 -04:00
Nekotekina 994ce50392 Experimental libmixer
adec, vdec improved
fixed sound
2014-03-27 02:45:58 +04:00
Nekotekina 79c01316d6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-26 16:00:58 +04:00
Alexandro Sánchez Bach c57d3af8dd Merge pull request #120 from xsacha/master
Linux build fix
2014-03-26 10:02:03 +01:00
Sacha ebc6b9e66e Fix an assign. Some other misc changes. 2014-03-26 10:29:17 +10:00
Sacha 3e9cbb4a24 Linux build fix. 2014-03-26 10:23:06 +10:00
Nekotekina 7f7a23027b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-26 02:26:11 +04:00
Nekotekina 8a54f542d0 Reservation improved 2014-03-25 17:05:07 +04:00
Alexandro Sánchez Bach 31e1464e1a Merge pull request #117 from lioncash/const-references
Use const references for the string keys in Ini.cpp/.h
2014-03-25 02:11:56 +01:00
Alexandro Sánchez Bach 621edfb926 Merge pull request #118 from lioncash/misc-things
Fix erroneous assignment in an if statement.
2014-03-25 02:09:11 +01:00
Lioncash a5d9c9033f Fix erroneous assignment in an if statement.
Should have been a comparison.
2014-03-24 20:08:33 -04:00
Lioncash b8d3ce7ae8 Use const references for the string keys in Ini.cpp/.h 2014-03-24 19:53:14 -04:00
Nekotekina 21d19ccd59 Small RSX fix 2014-03-24 21:51:20 +04:00
Nekotekina 9b1c0c97d3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-24 19:28:28 +04:00
Alexandro Sánchez Bach 0ef0cfb38a Merge pull request #114 from lioncash/misc-things
Misc things
2014-03-24 15:32:16 +01:00
lioncash 90b83f6b3e Fix a missing return in an if statement in sceNpTrophyCreateContext. 2014-03-24 09:40:25 -04:00
lioncash 6841230141 Fix erroneous duplicate condition check in cellSpursGetTasksetId. 2014-03-24 09:40:02 -04:00
lioncash 8302e6c001 Fix case where UTF16stoUTF8s in cellL10n.cpp would always fail out if compiled with Visual Studio. 2014-03-24 09:21:17 -04:00
lioncash 4db1f49aaf Remove redundant assignment in RSXThread.
This is assigned the same value further down the function.
2014-03-24 08:53:34 -04:00
lioncash c00850c4c5 Minor const correctness 2014-03-24 08:47:30 -04:00
lioncash 874da27599 Initialize strings through the initializer list in PPUProgramCompiler.h 2014-03-24 08:40:35 -04:00
Hykem ea34cb52c1 Merge pull request #112 from Dante38490/patch-1
Update git-version-gen.cmd
2014-03-23 20:49:05 +00:00
Nekotekina 7bab42455b Minor fixes
cellAtrac faked
2014-03-23 23:43:37 +04:00
B1ackDaemon d1ffea0847 Merge pull request #113 from Nekotekina/master
Playable video
2014-03-22 23:09:00 +02:00
Nekotekina be80a7c39c SC_Lwcond fixed 2014-03-23 01:04:55 +04:00
Nekotekina d0ea397492 cellAtrac draft
sys_spu_thread_group_resume
Some bugs fixed
2014-03-22 15:08:07 +04:00
Dante38490 3701b2b551 Update git-version-gen.cmd
little change add adress website officiel
2014-03-22 11:45:59 +01:00
Nekotekina 169fcd098b Demuxer improvement 2014-03-22 05:08:25 +04:00
Nekotekina 5ea58d9451 ConLog unicode support improved 2014-03-21 19:06:08 +04:00
Nekotekina 39d1e21802 Fix slashes for Windows :p 2014-03-21 13:45:26 +04:00
Nekotekina cad7a05848 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-21 13:02:10 +04:00
Alexandro Sánchez Bach ad7ac17647 Small fixes in sceNpTrophy and cellSaveData
* Added cellSaveData.cpp to the project.
* Fixed wrong cellSaveData structs.
* Fixed compilation problem caused by the switch/case statements
introduced in sceNpTrophy and TROPUSR.cpp in the last commit
2014-03-21 00:46:27 +01:00
Alexandro Sánchez Bach f86ac251a8 TROPUSR Loader & sceNpTrophy stuff
* Added a loader for the TROPUSR.DAT files.
* Added a few structs/enums to sceNpTrophy.h
* Added more sceNpTrophy functions and updated other ones.
* Updated cellHddGame error codes in cellSysutil.h
* Added addresses of cellHddGame to cellSysutil_init.

NOTE:  There is a known problem in the `if
(!Emu.GetVFS().ExistsFile(filepath))` in `TROPUSRLoader::Load` which
causes the games to overwrite their TROPUSR.DAT file every time they
boot and they "forget" the unlocked trophies. However, as long as the
game is running the unlocked trophies should be still there.
2014-03-20 19:23:14 +01:00
Alexandro Sánchez Bach 834700eb24 Merge pull request #110 from Bigpet/master
stswi and lswi instructions
2014-03-20 02:56:56 +01:00
Peter Tissen f0e73a652f stswi and lswi instructions 2014-03-20 02:48:02 +01:00
Alexandro Sánchez Bach f0129382b9 Merge pull request #109 from Bigpet/master
Missed carry flag corrections and the rotate fixes
2014-03-20 01:03:59 +01:00
Peter Tissen 6e4203998a Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-20 00:51:58 +01:00
Alexandro Sánchez Bach cd4f0b2c68 Merge pull request #108 from Bigpet/master
added SUBFME, SUBFZE and fix cache folder creation
2014-03-20 00:10:12 +01:00
Nekotekina 87e016bdf0 RLWIMI, RLWINM and RLWNM fixed 2014-03-19 23:40:52 +01:00
Peter Tissen 5a1ce28105 fix carry errors 2014-03-19 23:40:49 +01:00
Peter Tissen acf955635f correct the subtraction instructions and try something more sensible for overflow detection 2014-03-19 18:13:52 +01:00
Alexandro Sánchez Bach 8c2aee5e64 cellHddGameCheck and some fixes
* Fixed wrong endianness in several structs.
* Fixed CreateFile-related bug in TRP Loader.
* Added cellHddGame (cellSysutil) structs and cellHddGameCheck.
2014-03-19 16:19:35 +01:00
Nekotekina a520934abd RLWIMI, RLWINM and RLWNM fixed 2014-03-19 18:47:28 +04:00
Peter Tissen 27bb41d652 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-19 14:38:42 +01:00
Nekotekina 38bfbe2c40 Audio decoding 2014-03-19 04:32:23 +04:00
Peter Tissen 2ddee26d83 add experimental subfme and subfze support and fix cache folder creation 2014-03-18 23:58:42 +01:00
Alexandro Sánchez Bach 37f7a31a22 Another small fix related with TextureBorderColor
TODO: Find an appropriate place for setting the GL_TEXTURE_BORDER_COLOR
parameter.
2014-03-18 18:27:11 +01:00
Alexandro Sánchez Bach 2601933bdc TextureBorderColor & cellFont problems fixed
* Fixed tabs/spaces problem in cellSysutil.h too.

NOTE: The problem with cellFont (crash on line 604) has been fixed, but
for a high price: There is now a huge memory leak when a NULL pointer is
passed to cellFontRenderSurfaceInit.
2014-03-18 17:45:26 +01:00
Alexandro Sánchez Bach fb38897b8f Merge pull request #105 from kacek/master
implemented  cellGcmsetTexture_BorderColor function
2014-03-18 13:00:35 +01:00
kacek 39dc6f0838 cellGcmSetTexture_BorderColor fix 2014-03-18 07:20:59 +01:00
kacek 4b14c72ed8 implemented cellGcmsetTexture_BorderColor function 2014-03-18 01:03:26 +01:00
Alexandro Sánchez Bach cf4501fe41 cellGame, cellSysutil and TRP installer improved
* TRP Loader and sceNpTrophyRegisterContext improved.
* cellSysutil constants moved to cellSysutil.h
* cellGameBootCheck bug fixed that makes size->hddFreeSizeKB be 0.
* Added system language selector (this is *not* RPCS3's language).
cellSysutilGetSystemParamInt(0x111) will return the selected language.

NOTE: The problems caused by the last commit (pull request #104 merged)
are not yet fixed.
2014-03-17 20:34:19 +01:00
Alexandro Sánchez Bach 9786c036d5 Merge pull request #104 from xsacha/master
Fix some strings for Linux
2014-03-17 18:13:10 +01:00
Nekotekina c4d9223034 event flag improvement (not finished)
Fixed empty SPU thread name issue
2014-03-17 19:07:47 +04:00
Sacha 6968137bbc Fix slashes for Linux 2014-03-17 23:41:15 +10:00
Nekotekina 475c3ff967 Merge https://github.com/elisha464/rpcs3 2014-03-17 13:17:12 +04:00
Nekotekina 4cbe3a2a46 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-17 13:16:43 +04:00
Nekotekina 1a1bed2258 Event flag partial implementation 2014-03-17 00:14:46 +04:00
Alexandro Sánchez Bach 39a717b239 Merge pull request #103 from xsacha/master
Linux build fix
2014-03-16 16:15:41 +01:00
Sacha a00f47b5e4 Linux build fix 2014-03-16 22:49:05 +10:00
Nekotekina 4aa6ddf3dd Weird MFC_PUTR_CMD handling 2014-03-16 01:33:19 +04:00
Nekotekina c9a421f12f SPU Thread Group-specific MMIO
LS access, SNR writing
2014-03-16 00:46:53 +04:00
Hykem 0a35c4f2c4 Added missing change. 2014-03-15 20:37:29 +00:00
Hykem c4a9c874d1 Improved FRES and FRSQRTE results (tested with ppu_fpu).
Implemented and improved several SC_Memory syscalls.

Started working in sceNp module.
2014-03-15 19:45:43 +00:00
B1ackDaemon 65eb873597 Merge pull request #102 from Nekotekina/master
Different changes
2014-03-15 18:03:55 +02:00
Nekotekina 60d922da11 DMA List commands
cellAudio: multiple queue support
sys_cond simplified
cellFsMkdir (?)
2014-03-15 19:43:14 +04:00
Nekotekina 024aa0660c Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-15 03:15:18 +04:00
Alexandro Sánchez Bach 6c4a980d36 Minor changes
* Fixed identation
* Make some parts of the code more readable.
2014-03-14 18:12:12 +01:00
Alexandro Sánchez Bach 48abfdfbb1 Merge pull request #101 from O1L/master
Minor changes.
2014-03-14 15:05:53 +01:00
O1L b0f6b03c38 Fixed crash on using NUll Audio Output, fixed possible crash in OpenAL exit and minor changes in cellAudioEventQueue functions. 2014-03-14 17:53:37 +03:00
O1L 50d49141b0 Conflicts fixed. 2014-03-14 16:50:50 +03:00
Nekotekina 2c447f686d sys_spinlock implemented 2014-03-13 20:11:16 +04:00
Nekotekina 2de22f0321 Fixed conflicts 2014-03-13 13:18:47 +04:00
Nekotekina 8cc6a287a7 Update 2014-03-13 13:17:45 +04:00
DH 0e437312ad Improved OpenAL audio output
Implemented LDBRX PPU instruction
Enabled FRSQRTE PPU instruction
Improved Fragment Program Decompiler
Implemented Log lvl selection
2014-03-13 02:26:53 +02:00
Alexandro Sánchez Bach 80cfb2eb58 cellGame functions & MULHD(U) warn. disabled 2014-03-12 23:34:35 +01:00
Alexandro Sánchez Bach fb1b57720c Merge pull request #100 from O1L/master 2014-03-11 20:14:39 +01:00
elisha464 62f9d454eb Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-11 21:00:21 +02:00
elisha464 c08c5eef10 disabled a few stuff and changed color to white before rendering to main window (fix fw_stencil_reflect) 2014-03-11 20:52:14 +02:00
Alexandro Sánchez Bach 5c563d04c7 Merge pull request #99 from xsacha/master
Linux build fix
2014-03-11 19:29:28 +01:00
elisha464 9194b73a81 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-11 19:57:31 +02:00
O1L a31160fe99 Fix converting audio data. Implemented some cellFsStRead functions. 2014-03-11 20:45:15 +03:00
Alexandro Sánchez Bach b31a990cf1 cellUserInfo module added & cellFsReadWithOffset 2014-03-11 18:40:37 +01:00
Sacha 5f3f7e197a Linux build fix. 2014-03-12 02:36:58 +10:00
Nekotekina b7b33145f6 Compilation fix 2014-03-12 02:36:58 +10:00
Nekotekina 7f7d5a57c8 rldcr, rldcl instructions
Some intructions fixed
2014-03-11 20:20:01 +04:00
Alexandro Sánchez Bach d5e94d4cd9 Some sys_net functions
* sys_net; Added some functions using winsock.h | sys/socket.h
* sys_net: Renamed overloaded function/structs "*" to "sys_net_*"
* Added SetAddr function to mem_base_t
2014-03-11 15:42:28 +01:00
Nekotekina 7984df37c3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-10 20:24:15 +04:00
DHrpcs3 d90d2f2df7 Merge pull request #98 from lioncash/out-of-bounds-fix
Fix a case where an array is read out of bounds in cellSpurs.cpp
2014-03-10 16:11:46 +02:00
Lioncash 1aa6e5df95 Fix a case where an array is read out of bounds in cellSpurs.cpp 2014-03-10 03:28:17 -04:00
Nekotekina a33575b115 Compilation fix 2014-03-10 03:07:53 +04:00
Alexandro Sánchez Bach b46cb71324 Merge pull request #97 from xsacha/master
Fix slashes in OpenAL includes
2014-03-09 17:37:41 +01:00
Sacha bde5c9cfed Fix slashes in OpenAL includes 2014-03-10 00:44:12 +10:00
Alexandro Sánchez Bach 8461bee32e Updates in cellL10n and sceNpTrophy
* UTF16stoUTF8s updated.
* Added missing return in sceNpTrophyRegisterContext.
* Added sceNpTrophyGetGameInfo.
2014-03-09 04:57:19 +01:00
Alexandro Sánchez Bach 2f65e84562 Merge pull request #94 from Nekotekina/master
Different changes
2014-03-08 00:20:43 +01:00
Nekotekina 75f535c947 Conflicts fixed 2014-03-08 03:02:59 +04:00
Hykem fdf935afe9 Merge pull request #93 from O1L/master
Implemented OpenAL audio output.
2014-03-07 22:46:55 +00:00
O1L df894c05b2 Implemented simple OpenAL audio output. Structures and enum's from cellAudio.cpp moved to cellAudio.h . Audio dump functions moved in AudioDumper class. 2014-03-08 02:15:39 +03:00
Nekotekina 1c302433af cellSpurs draft added 2014-03-08 01:31:08 +04:00
Nekotekina 3a00ec7682 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-07 16:04:14 +04:00
Nekotekina 3127543b6e sys_ppu_thread_join, sys_ppu_thread_exit fixed
Some diagnostic messages in mutexes
2014-03-07 16:03:42 +04:00
elisha464 0edd70d3d8 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-07 09:10:29 +02:00
Alexandro Sánchez Bach 4af648905c Merge pull request #91 from Bigpet/master
respect the outputBytesPerLine parameter
2014-03-07 04:23:08 +01:00
Peter Tissen 3871134a49 respect the outputBytesPerLine parameter if it's longer than the natural length of the PNG file 2014-03-07 04:15:56 +01:00
elisha464 e32a6a2eea Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-06 19:46:23 +02:00
Alexandro Sánchez Bach 898fbf02b8 Fixes in sceNpTrophy and FSEL (PPU instr.) 2014-03-06 13:27:58 +01:00
Nekotekina fac86aae58 Conflicts fixed (again) 2014-03-06 15:55:50 +04:00
Nekotekina 05c6a96d27 Conflicts fixed 2014-03-06 15:50:45 +04:00
Nekotekina e86a849600 libmixer draft
and some hacks
2014-03-06 15:40:50 +04:00
Alexandro Sánchez Bach d6596ca453 Progress in cellL10n
* cellL10n added to the project.
* Function addresses added to cellL10n_init.
* UTF16stoUTF8s implemented (WARNING: I haven't tested it).
2014-03-06 09:48:35 +01:00
Alexandro Sánchez Bach 39d3814be7 Changes in cellRtc & sceNpTrophy
* Two header files added: cellRtc.h and sceNpTrophy.h
* Changes in sceNpTrophyCreateContext.
* Implemented sceNpTrophyGetTrophyInfo.
2014-03-06 01:52:23 +01:00
Nekotekina 384536ba4f prx_mem memory leak fixed
CPUThread::ExecAsCallback (experimental)
2014-03-04 23:18:17 +04:00
Alexandro Sánchez Bach 8204deaae6 Minor changes
* Fixed some forgotten `!` in cellFsGetFreeSize.
* Fixed VSUM2SWS opcode.
* Added cellNetCtl to the project.
* Implemented cellNetCtlGetState.
2014-03-04 15:40:15 +01:00
Alexandro Sánchez Bach bc77f27bb2 Merge pull request #90 from Aishou/master
Linux compilation fixes
2014-03-04 15:18:12 +01:00
Aishou d32025ae3c more fixes... 2014-03-04 09:37:28 +01:00
Nekotekina b32a8e2e28 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-04 03:36:45 +04:00
Nekotekina 8a4c67deab It can play video, but it can't
I don't know how to disable aggressive data caching that occures in
vdecRead(). Also ReleaseAu function is disabled because it breaks
everything.
2014-03-04 03:21:34 +04:00
elisha464 11571cf2a4 fix memory alignment
added eaIOMap with flags (draft)
changed gcmInit to throw an error when not being able to map to io address
2014-03-03 22:45:27 +02:00
Aishou 354cf24302 fix gcc compile... 2014-03-03 14:51:54 +01:00
Aishou bd45704c83 merge branch 'master' of https://github.com/DHrpcs3/rpcs3 into crypto 2014-03-03 14:42:21 +01:00
Alexandro Sánchez Bach 05db17b2b0 Fixed x64 compilation errors & cellFsGetFreeSize 2014-03-03 14:16:42 +01:00
Aishou caa797cee3 not sure about it.. but compiles.. 2014-03-03 12:05:15 +01:00
Aishou 85626024a0 fix gcc complain about non-const reference... 2014-03-03 11:44:00 +01:00
Hykem 4770e5af08 Fixed AboutDialog (changed in last commit). 2014-03-03 04:59:22 +00:00
Hykem a1adc6cdaa First installment of RPCS3's custom crypto engine:
- Removed all scetool dependencies;
- Implemented a key vault to manage PS3 keys internally;
- Implemented SELF decryption;
- Improved PKG handling.

Notes:
- NPDRM SELF files (EBOOT.BIN) can also be decrypted. A valid matching RAP file must be placed under the dev_usb000 folder.
- The source code is considerably commented and several debugging functions were also added in order to aid anyone who wishes to contribute to the engine.
2014-03-03 04:48:07 +00:00
Nekotekina c064c701e2 cellAdec draft 2014-03-03 03:02:42 +04:00
Alexandro Sánchez Bach 6fcead2a0e Merge pull request #89 from Nekotekina/master
...
2014-03-02 14:37:06 +01:00
Aishou 851acfdbf3 add ffmpeg to link.. 2014-03-02 13:00:57 +01:00
Aishou bea8be29d5 get ffmpeg working with cmake.. 2014-03-02 12:55:20 +01:00
Aishou 7a1d44b552 Merge https://github.com/Nekotekina/rpcs3 2014-03-02 11:57:17 +01:00
Aishou b4712c0dca Merge remote-tracking branch 'upstream/master' 2014-03-02 11:50:07 +01:00
Nekotekina c978fe377d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-02 10:24:18 +04:00
Nekotekina 9e62b330b1 I cannot do anything 2014-03-02 03:50:47 +04:00
Alexandro Sánchez Bach 1e53c7f244 Reverted 'Unimpl.' warning on some SPU instr.
I'm sorry. I deserve punishment and torture for this.
2014-03-01 20:29:26 +01:00
Aishou e0d3f1cae6 Merge remote-tracking branch 'upstream/master' 2014-03-01 19:59:36 +01:00
Alexandro Sánchez Bach 6c28753dae Minor fixes: SPU, sys_mmapper, and cmd-line args.
* Some SPU instructions updated:
- Updated wrong instructions: SHLH, FRDS
- Added UNIMPLEMENTED warning to: HBR, HBRA, HBRR
* Updated sys_mmapper_allocate_memory declaration in SysCalls.h
* Added sceNp.cpp to project
* Added checkbox in the Settings menu for exiting RPCS3 when
sys_process_exit (SC_Process.cpp) is called. Unfortunately, due to some
problems, this checkbox doesn't have a real effect yet.
2014-03-01 19:33:40 +01:00
Alexandro Sánchez Bach 7f7ad1b661 Few functions added
* sceNpManagerGetStatus
* sys_mmapper_free_memory
* Minor changes in sys_mmapper_allocate_memory
* Changed the layout of the sys_vm functions in SysCalls.cpp
2014-03-01 19:33:39 +01:00
Alexandro Sánchez Bach cd10dca71f RPCS3 arguments, TTY to file & sceNpTrophy stuff 2014-03-01 19:33:38 +01:00
Aishou d418cceae4 fix the typo. 2014-03-01 15:32:15 +01:00
Nekotekina 4828723d5c Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-01 12:39:42 +04:00
Nekotekina 17fa60c31c Vpost draft 2014-03-01 12:38:50 +04:00
Aishou fd564159b5 gcc.. 2014-02-28 20:21:52 +01:00
Aishou 377db4515a Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	Utilities/BEType.h
2014-02-28 19:55:48 +01:00
Alexandro Sánchez Bach 6a15351363 Merge pull request #88 from Bigpet/master
fix small mistakes
2014-02-28 19:39:43 +01:00
Peter Tissen dbc39bce40 fix small mistakes
fix endian mistakes, mistaken word length and preprocessor mistake
2014-02-28 19:36:19 +01:00
Alexandro Sánchez Bach 38fbd190b0 Merge pull request #87 from elisha464/master
minor rsx fixes
2014-02-28 14:23:14 +01:00
Nekotekina f3a3a630c3 Merge branch 'master' of https://github.com/elisha464/rpcs3 2014-02-28 13:53:46 +04:00
elisha464 1ab5bc40a0 fixed colors on scogger 2014-02-28 11:19:56 +02:00
Nekotekina dbdae77780 Some errors fixed 2014-02-27 22:25:32 +04:00
elisha464 d0300e5f43 fix alpha test 2014-02-27 19:47:08 +02:00
elisha464 5fbc190c80 fixed flipped colors on some homebrews 2014-02-26 23:24:57 +02:00
Nekotekina 8b952bf98c memcpy partially replaced
Fixed one of exit issues
2014-02-26 18:06:13 +04:00
Aishou f85420b343 small compile fixes 2014-02-26 14:24:41 +01:00
Nekotekina 8bd0ee875c Fixed conflicts 2014-02-26 15:27:06 +04:00
Nekotekina 8048c70bc8 cond/lwcond fixed 2014-02-26 14:35:30 +04:00
Nekotekina 0bd5dc5363 Demuxer improved, cellPamf improved
File reading improved
2014-02-26 11:51:00 +04:00
Alexandro Sánchez Bach 681c3c53f0 cellPad modifications
* Using be_t on cellPad structs.
* Swapped Square and Circle default keys (they were inverted).
2014-02-25 14:09:44 +01:00
Alexandro Sánchez Bach 2827db0e2a Using be_t in some cellGcm structs & minor fixes
* Using be_t in CellGcmControl, CellGcmConfig, CellGcmContextData and
CellGcmTileInfo.
* Fixed wrong names in Emu/SysCalls/Modules/sceNp.cpp
* Fixed ConLog's mount info strings in System.cpp
2014-02-24 17:03:47 +01:00
DHrpcs3 d9d80d8fb4 Merge pull request #83 from Bigpet/master
Make buildable with GCC in Linux
2014-02-24 09:14:21 +02:00
Alexandro Sánchez Bach 7379b0e2ed Minor changes: GCM command, PKG loader & SysCalls
* Fixed incorrect time displayed on NV4097_GET_REPORT.
* Fixed small bug in PKGLoader::UnpackEntry
* Moved some code in SC_Time.cpp
* Auxiliary function declarations of SC_Time.cpp in SC_Time.h
* Updated cellFsUnlink. *This won't work until ExistsFile is fully
implemented*.
2014-02-24 07:54:42 +01:00
Peter Tissen 1908286e7c make things compile under windows again, there's still some ugly ifdefs
I'd like to get rid of
2014-02-24 01:51:55 +01:00
Nekotekina a14276abf1 Work on demuxer, ffmpeg libs linked 2014-02-24 04:00:42 +04:00
Bigpet 92fb77d50e more merge fixes, I should really compile it before submitting a pull request 2014-02-23 20:40:12 +01:00
Bigpet aef3b24c8d fix small type mismatch 2014-02-23 18:23:14 +01:00
Bigpet 1be8563fdb fix small merge mistake 2014-02-23 18:21:10 +01:00
Bigpet bebf027e0b merge newer changes 2014-02-23 18:13:08 +01:00
Bigpet 9a30ce5f18 Make buildable with GCC in Linux
* replace GetThreadID with std::this_thread.getId()
* name all anonymous structs and unions that contain non-trivially constructable objects
* made default constructor for big endian type noexcept to make it work with std::atomic
* move instantiated specialized template function members ouside of the class definition to comply with the standard
* added default instantiation for template parameter "=nullptr"
* used the C++11 standardized thread_local instead of the __declspec(thread)
* added transitional definitions to bridge the microsoft specific calls (compare and exchange and aligned alloc)
* removed cyclic dependency between Emulator->CPUThreadManager->CPUThread->SMutex->Emulator->...
* fixed some instances of indentation by space instead of tabs
* surrounded some unused code with an #if 0 block to make sure it doesn't compile
2014-02-23 17:52:52 +01:00
Alexandro Sánchez Bach 696e00a570 Merge refactoring branch & Krofna's pull req. #46 2014-02-23 02:39:46 +01:00
Nekotekina 8df7f49b55 ffmpeg submodule added 2014-02-22 21:42:23 +04:00
DH 81b19057bb Implemented audio Dump To File
Fixed MFOCRF, MTOCRF, MTCRF
Minor fixes
2014-02-22 14:06:23 +02:00
DHrpcs3 7c6c20ef18 Merge pull request #82 from Nekotekina/master
Event, audio, SPU fixes
2014-02-22 10:54:32 +02:00
DH 05184d2e71 Improved GameViewer
GameViewer use VFS.
Implemented be_t increment / decrement
Implemented se
Improved sys_fs syscalls.
2014-02-22 04:53:06 +02:00
Nekotekina b56df0c7f6 New functions
sys_spu_thread_bind_queue, sys_spu_thread_connect_event and SPU-side
sys_spu_thread_receive_event, sys_spu_thread_send_event
Fixed event system
Fixed SleepQueue priority alg
Audio: cellAudioGetPortTimestamp and cellAudioGetPortBlockTag
2014-02-22 04:26:50 +04:00
Bigpet 07135570f4 merge branch 2014-02-21 20:36:22 +01:00
Alexandro Sánchez Bach e7a721a1fb Merge pull request #46 from krofna 2014-02-21 17:13:57 +01:00
Alexandro Sánchez Bach 17b877e448 Minor changes in RSXTexture.h and PKG Loader
* Moved RSXTexture from RSXThread.h to RSXTexture.h
* Renamed RSXTexture::Getmipmap to RSXTexture::GetMipmap
* Used more GCM texture format constants in GLGSRender.h
* PKG Loader: Added an "Overwrite?" dialog in case the folder
dest+titleID (i.e. "/dev_hdd0/game/"+titleID) already exists. Note that
in that case, the game won't be installed regardless of the option you
choose on the dialog.
2014-02-21 14:21:08 +01:00
Alexandro Sánchez Bach 5f9e60c45f PKG Loader rewritten
* Rewritten unpkg.c -> Loader/PKG.cpp
* MainFrame::InstallPkg now *only* installs the PKG.
* Fixed crash when unpacking big debug PKG files.
* Debug PKGs are no longer recrypted.
* 'About...' dialog updated to remove PKG-related notice.
* Unpkg removed.

NOTE: The class PKGLoader is using wxWidgets functions to access the
files. I think VFS would be better, but the Emulator isn't necessarily
running when installing the PKG. In the other hand, initializing VFS
with RPCS3 may be somewhat risky... Any alternatives?

TODO: Get rid of the decrypted "*.dec" files, and try to decrypt and
read contents of the PKG on the fly using the information stored in
m_entries.
2014-02-21 02:35:33 +01:00
Nekotekina 81147506f0 Event fix, cellAudio fix 2014-02-21 00:47:22 +04:00
Nekotekina 08b4748aae cellAdec, cellVpost headers 2014-02-20 16:13:02 +04:00
Nekotekina 9351e50f63 Minor changes, some bugs fixed
cellVdec headers, cellFsAioRead review, sync stuff review, cellAdec and
cellVpost
2014-02-20 06:16:17 +04:00
DH d6fe398f79 Implemented RSXThread OutOfArgsCount notification. 2014-02-20 01:39:47 +02:00
Alexandro Sánchez Bach 8fedbd204e Merge pull request #81 from elisha464/master
small fix, makes scogger run
2014-02-19 23:50:53 +01:00
elisha464 ab4c4c2fd2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-20 00:41:32 +02:00
elisha464 45452c57c4 fixed MFOCRF 2014-02-20 00:38:47 +02:00
DH b1df7444a4 Minor fixes 2014-02-19 19:27:52 +02:00
Alexandro Sánchez Bach 83a7c83761 Moved some lines and deleted old code
* Removed Compiler ELF references from rpcs3.cpp
* Reordered the menu bar lines.
* Moved the construction of some panels of MainFrame from rpcs3.cpp to
MainFrame.cpp
2014-02-19 05:33:31 +01:00
Alexandro Sánchez Bach b85a86b225 RSX Debugger: Shader program editor
* Added checkbox in the Settings dialog for logging/editing shader
programs.
* Added "Programs" tab to the RSX Debugger. Double-click on the entries
to view/edit the shaders. Click on "Yes" after closing the editor will
recompile your program even if no changes were done.
* Replaced "Ctrl+C" shortcut for running the emulator with "Ctrl+E" to
avoid accidentally unpausing the emulator when copying text.
* Added glDetachShader to GLProcTable.tbl

NOTE: There is a known bug: For some reason, certain shaders refuse to
compile again, even if you save the original shader as the "new" one.
2014-02-19 01:41:57 +01:00
Alexandro Sánchez Bach 51613df455 Merge pull request #80 from Nekotekina/master
Sync changes, simple file output for sound
2014-02-18 20:57:32 +01:00
Nekotekina d849e083b6 Small changes 2014-02-18 22:45:51 +04:00
Alexandro Sánchez Bach 22558df68e Merge pull request #79 from elisha464/master
vertexShaderDecompiler fix
2014-02-17 22:10:08 +01:00
elisha464 7f7b12a6dd a small fix in vertexShaderDecompiler (fixes scogger loading screen) 2014-02-17 23:05:59 +02:00
elisha464 07c9fbee7f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/Emu/GS/GL/GLGSRender.cpp
	rpcs3/Emu/GS/GL/GLGSRender.h
	rpcs3/Emu/GS/RSXTexture.cpp
	rpcs3/Emu/GS/RSXThread.cpp
	rpcs3/Emu/GS/RSXThread.h
	rpcs3/Gui/RSXDebugger.cpp
	rpcs3/rpcs3.vcxproj.filters
2014-02-17 19:27:17 +02:00
Alexandro Sánchez Bach ab25edfacc Few source-code improvements
* Fixed identation inconsistency after last merge.
* Replaced uint32_t with u32 in LinearToSwizzleAddress.
* Replaced hardcoded values with defined GCM constants (in Emu/GS/GCM.h)
in some switch statements.

This commit won't produce any changes in the RPCS3 executable. It's just
to make the code easier to read.
2014-02-16 22:17:56 +01:00
Nekotekina 931929a82c Fixed conflicts 2014-02-16 21:57:36 +04:00
DH bd8ff4ca11 Fixed cellFsOpen & cellFsOpendir 2014-02-16 17:37:32 +02:00
Nekotekina 4375b9dd2a Audio port output in .wav file 2014-02-16 19:23:58 +04:00
DH 321d323beb Improved VFS
- Implemended vfsDir.
- Improved vfsDevice.
- Improved vfsFile.
2014-02-16 17:19:06 +02:00
DH 5d59dae730 Fixed RSXDebugger 2014-02-16 11:39:03 +02:00
DH a7368cc893 Merged elisha464 branch 2014-02-16 10:56:58 +02:00
DH 01f3763eb4 Small fixes 2014-02-16 10:28:32 +02:00
Alexandro Sánchez Bach 3fdb50b0ea Some sceNpTrophy syscalls and few fixes
* Restored deleted functions in FuncList.cpp
* Fixed bugs in TRPLoader.
* Implemented some sceNpTrophy syscalls.
* Added sceNp headers (required for sceNpTrophy).
* Updated .gitignore to ignore trophies.

NOTE: Thanks to the new sceNpTrophy syscalls, RPCS3 can install the
trophy contents in dev_hdd0/home/00000001/trophy/. Remember this is
still on an experimental stage.
2014-02-16 02:51:04 +01:00
Nekotekina 848c5dadf0 Fixed some problems 2014-02-16 01:16:35 +04:00
elisha464 5590efe054 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/Emu/GS/GL/GLVertexProgram.cpp
	rpcs3/rpcs3.vcxproj.filters
2014-02-15 13:05:16 +02:00
B1ackDaemon 700698247a Merge pull request #77 from Bigpet/SysCacheImpl
Basic sys cache implementation
2014-02-15 08:13:31 +02:00
Peter Tissen bdc8eba3bb Add cache support
also added tentative blocksize and sys_game_procexit support

added final cache support and improved the process chainloading error messages

don't ignore cache directory in the .gitignore

add warning for clearing cache
2014-02-15 01:51:59 +01:00
Peter Tissen f3ad989e34 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-15 01:44:18 +01:00
Alexandro Sánchez Bach deaedcb6fa TRP Loader and undo few cellGame changes 2014-02-15 01:06:12 +01:00
Alexandro Sánchez Bach f2a3db0bd8 Merge pull request #76 from Bigpet/master
Fix stepping a little better than last time
2014-02-14 21:09:24 +01:00
Nekotekina e066bcf261 Small cellAudio update 2014-02-15 00:08:02 +04:00
Peter Tissen b5d588a40b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-14 20:50:25 +01:00
Peter Tissen f179bd4cd7 fix stepping a little better than last time 2014-02-14 20:50:02 +01:00
Alexandro Sánchez Bach e03d274071 Merge pull request #75 from Bigpet/master
Undo thread behavior changes and add html subproject to dependencies.
2014-02-14 18:17:04 +01:00
Peter Tissen 8bf8c7e6e9 undo thread behavior changes and add html subproject to dependencies. 2014-02-14 18:14:14 +01:00
elisha464 f7967f97ec flipped frame buffer 2014-02-14 14:50:41 +02:00
Nekotekina e94ea409fe sys_lwcond, sys_mutex, sys_cond rewritten
Some bugs fixed
2014-02-14 15:40:41 +04:00
Alexandro Sánchez Bach 82e0bbebdb Fixed few warnings and typos 2014-02-14 01:30:15 +01:00
Alexandro Sánchez Bach 209155d71d Merge pull request #72 from Bigpet/master
Fix "Go to Adress" and Stepping
2014-02-14 00:17:25 +01:00
Peter Tissen 6fbd4d3daf Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-14 00:10:58 +01:00
Peter Tissen 11ba83738f make stepping work again, it's impossible to use it without these changes 2014-02-14 00:08:32 +01:00
Alexandro Sánchez Bach eb93e87b7f Logging CheckBox, cellGame stuff and other fixes
* cellGameContentPermit and cellGameBootCheck updated.
* Checkbox in the Settings dialog, for enabling logging.
* Fixed GUI issue in the InterpreterDisAsmFrame.
* Fixed -dirty flag in wxWidgets submodule.
2014-02-13 20:05:23 +01:00
Alexandro Sánchez Bach 2b63888782 Merge pull request #71 from Nekotekina/master
Log fixes
2014-02-13 18:10:36 +01:00
elisha464 6846d15dc8 more rsx texture (filters)
implemented deswizzling of textures (only one format for now, a fix for multiple context sample)
2014-02-13 19:02:46 +02:00
Nekotekina 5a240c32a9 log fixes (to wx_str()) 2014-02-13 20:59:13 +04:00
Nekotekina a6faf04db4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-13 15:57:34 +04:00
Alexandro Sánchez Bach 373d189edb Merge pull request #70 from Nekotekina/rpcs3
and conflicts fixed.
2014-02-13 12:13:05 +01:00
Alexandro Sánchez Bach 5953781c13 Few bugs fixed and license file added
* Fixed GUI issues caused by the update to wxWidgets 3.
* Fixed small bug in SC_TTY (thanks Nukem9!)
* Added GPL v2 license file.
2014-02-13 11:33:07 +01:00
Nekotekina 77ec2c954f Trying to fix merge conflicts... 2014-02-13 12:39:58 +04:00
Alexandro Sánchez Bach 256ee2ff8a Merge pull request #68 from Bigpet/master
Remove the outdated gl.lib reference
2014-02-12 22:18:12 +01:00
Peter Tissen 39e72fc3cc add the dependencies config for rpcs3, so that wxwidgets gets automatically build to build rpcs3 2014-02-12 22:08:03 +01:00
Peter Tissen d3f4b086c6 add the x64 library directory correctly 2014-02-12 21:57:37 +01:00
Peter Tissen de95ac3adb remove the outdated gl.lib reference, if this causes new linker issues we need to add the right name to the vcxproj instead 2014-02-12 21:46:23 +01:00
Alexandro Sánchez Bach 3a9b5afe30 Merge pull request #67 from Bigpet/master
change submodule to DHrpcs3
2014-02-12 21:09:12 +01:00
Peter Tissen b8400cbe63 change submodule to DHrpcs3 2014-02-12 21:07:44 +01:00
Nekotekina 460d948e87 Event system rewriting, EventManager partially implemented
cellAudio partially rewritten, some bugs fixed
2014-02-12 23:03:14 +04:00
Alexandro Sánchez Bach e9b3c4b5f6 Merge pull request #66 from Bigpet/wxWidget3Port
wxWidgets3 port
2014-02-12 19:54:41 +01:00
Peter Tissen 1400625648 add submodule instructions and bump submodule version 2014-02-12 19:23:33 +01:00
Alexandro Sánchez Bach 8adf19c904 Few module functions added
Implemented:
* cellSysutilApGetRequiredMemSize
* cellGameContentErrorDialog

Binded lv2 SysCall 814 to cellFsUnlink
2014-02-11 03:47:25 +01:00
Peter Tissen b05e466e8f clean up more output conversions, everything that wants to get printed needs to be explicitly convertex to the wxCharType otherwise the VFormat prints nothing 2014-02-10 19:51:03 +01:00
elisha464 48115b153e more rsx texture (control1)
and fixed crash of rsx debugger
2014-02-10 18:34:30 +02:00
Peter Tissen 427a63f324 remove commented out code 2014-02-10 17:16:35 +01:00
Peter Tissen 7423997b42 convert Dbg console packets uniformly to char* 2014-02-10 17:13:38 +01:00
elisha464 bc38af04a5 implemented viewport scale and offset (but everything seems to flip now :( ) 2014-02-10 17:57:32 +02:00
Peter Tissen b9c3dc352d use .wx_str() instead of .mb_str(), Dbg console is still broken 2014-02-10 13:53:09 +01:00
elisha464 c2ec1cb709 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/rpcs3.vcxproj.filters
2014-02-10 14:47:15 +02:00
Peter Tissen fdcdd7769f use the unicode version of the regex lib, don't know why the releas config links against it while debug doesn't 2014-02-10 11:19:48 +01:00
Peter Tissen bf26e069b8 use relative paths again to include the wxWidgets stuff 2014-02-10 03:00:02 +01:00
Peter Tissen 3f52a6aa50 prevent overflow becaus wxStrings aren't \0 terminated anymore 2014-02-10 02:43:24 +01:00
Peter Tissen b9abb1e075 merging vfs changes because I need to fix wxstring reads 2014-02-10 02:23:40 +01:00
Peter Tissen 59dcbd3ba3 make it compilable, don't merge this, string logs are broken and paths absolute to my machine 2014-02-10 02:13:13 +01:00
Alexandro Sánchez Bach 4d98826259 Directory-related functions implemented
* cellFsOpendir, cellFsReaddir, cellFsClosedir functions implemented.
* vfsDirBase: m_entryes, GetEntryes renamed to m_entries, GetEntries
respectively.
* vfsLocalDir: Read() function added to get the entries one by one.
* Moved IsExists() from vfsLocalDir to vfsDirBase to avoid "R6025 pure
virtual function call" error.
* Other minor changes in some functions of sys_fs
2014-02-09 22:53:48 +01:00
Peter Tissen 6dcfaf8617 add wxWidgets repository as a submodule 2014-02-09 22:03:38 +01:00
Peter Tissen 30df3727c2 delete submodules again 2014-02-09 21:51:01 +01:00
Peter Tissen 145450964a add wxWidgets submodule 2014-02-09 21:48:23 +01:00
Peter Tissen 8f7ceee36a remove local copy of wxWidgets 2014-02-09 21:45:53 +01:00
Alexandro Sánchez Bach 27a4e6a2b6 Merge pull request #65 from Bigpet/master
Update Readme with some links to the wiki and forums
2014-02-09 18:55:15 +01:00
Peter Tissen d85c26aa8b Update Readme with some links to the wiki and forums 2014-02-09 18:44:04 +01:00
Alexandro Sánchez Bach 4ebd974f5e Merge pull request #64 from Nekotekina/master
Last changes
2014-02-09 14:50:35 +01:00
Nekotekina 3308fefa7f Small changes
lwmutex completely implemented
2014-02-09 15:11:48 +04:00
Alexandro Sánchez Bach 66a9acfb04 cellFont rendering functions
-Now, all the games using rendering text using
cellFontRenderCharGlyphImage and all the related functions should work,
or at least don't crash.

-There are still issues with the character position on surface, and in
some cases, it renders the text with a different font than the one the
game specified. A lot of cellFont stuff is still missing or may be not
properly implemented.

-For games using system-embedded fontsets you have to find a *legal* way
to copy the .TTF files from your PS3 into dev_flash/data/font.
2014-02-09 12:07:50 +01:00
Nekotekina ed40732e7b Reservation review
Minor changes
SC_Event_flag.cpp module detached
2014-02-08 01:55:25 +04:00
Nekotekina 6c606be09f Reservation implemented
Some SPU bugs fixed;
sys_spu_thread_get_exit_status
sys_spu_thread_group_destroy
2014-02-07 02:55:48 +04:00
DHrpcs3 ce88a4fc9a Merge pull request #63 from O1L/master
Improved UnPkg.
2014-02-07 00:40:45 +02:00
O1L 74426fd4e9 Minor changes 2014-02-06 22:34:05 +04:00
O1L e0737204fd Use _ftelli64 and _fseeki64 instead ftell and fseek in unpkg, required to unpacking big files (> 4 Gb). Deleted wxMoveDir() (not needed now :P ) and added simple progress bars in unpkg. 2014-02-06 20:58:42 +04:00
elisha464 c515cb8fb6 more rsx texture (address, control0, image rect) 2014-02-05 22:48:30 +02:00
Nekotekina cfe154d916 Small changes, some bugs fixed 2014-02-05 15:55:32 +04:00
elisha464 d2bd0b0ccf Copy Paste :P (thnx AlexAletra) 2014-02-04 18:47:31 +02:00
Nekotekina aeca523a34 Small changes 2014-02-04 00:23:05 +04:00
elisha464 ad4ad4e55d started fixing the rsx textures
offset and format are done
2014-02-03 18:11:47 +02:00
Nekotekina 311486ed79 Fixed thread issues
Fixed args passing
Fixed thread stopping/pausing (temporarily)
Fixed problems with SC_Condition and SC_Mutex (partially)
2014-02-03 17:12:25 +04:00
Nekotekina a0c8e116df Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-03 01:20:48 +04:00
DH 8ba8d35541 Fixed compilation errors. 2014-02-02 22:47:17 +02:00
Nekotekina 7fce5589f8 Memory alignment fix
Some mutexes added, _sys_heap_memalign implemented
2014-02-02 23:49:10 +04:00
DH beb19633e9 Implemented vfsLocalDir & vfsDirBase.
Improved ThreadBase.
Minor fixes.
2014-02-02 21:42:32 +02:00
elisha464 8467d8c8c7 fixed clamping of texture_border 2014-02-01 18:44:19 +02:00
elisha464 39bb6d3b2b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-01 16:15:42 +02:00
elisha464 da8cd146eb change warning to log in lwmutex 2014-02-01 16:15:24 +02:00
elisha464 79c2654a8c fixed problem of textures being disabled after every end command 2014-02-01 14:54:55 +02:00
elisha464 bff084c233 fix WriteDepthBuffer and scissoring 2014-02-01 13:10:57 +02:00
Nekotekina 15dd0bb0f2 Oops 2014-02-01 14:19:15 +04:00
Nekotekina b602260314 Some typos fixed (thanks to Nukem9)
cellSysutilCheckCallback() modified, some warnings converted
2014-02-01 14:17:15 +04:00
DHrpcs3 16c284214f Merge pull request #60 from elisha464/master
fragmentDecompiler fix
2014-01-31 23:30:22 -08:00
elisha464 9526ff37b9 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-01 00:16:43 +02:00
B1ackDaemon 31c0687fc0 Merge pull request #59 from Nekotekina/master
New sync primitives
2014-01-31 14:09:32 -08:00
Nekotekina 9919154d66 Afterfix 2014-02-01 02:07:37 +04:00
elisha464 985b27daab Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-01 00:02:10 +02:00
Nekotekina 6553909dc5 Fixed conflicts 2014-02-01 01:56:44 +04:00
Nekotekina 67601bd639 Small changes 2014-02-01 01:35:48 +04:00
DH d93ce95a36 Small fixes 2014-01-31 22:54:26 +02:00
elisha464 678e455b4f fixed fragment decompiler
when adding a const, I added a check to see if it already exists
2014-01-31 22:44:35 +02:00
DH 4b8d6b6919 Improved ThreadBase.
Improved Vertex Shader Decompiler.
2014-01-31 20:40:18 +02:00
Nekotekina 432c6cf206 Small changes
SC_FUNC changes (done by DH)
PPUInterpreter changes (copied from main, done by elisha464)
Log() using fixed
2014-01-31 16:46:49 +04:00
Nekotekina 6efe751d4c Bugs fixed, lwcond implementation
Modules: mutex added
2014-01-31 03:40:05 +04:00
Nekotekina 67a144df2a SC_Rwlock implementation, SC_Lwcond draft
Other small changes
2014-01-30 00:31:09 +04:00
Alexandro Sánchez Bach d07b5f0dc8 Merge pull request #58 from elisha464/master
Fixed some vector instructions and a small fix in the fragment shader decompiler
2014-01-28 11:41:27 -08:00
elisha464 7e591deaf3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-28 20:02:20 +02:00
elisha464 3209b2f5f3 fixed VPREM and VSLDOI 2014-01-28 20:01:44 +02:00
elisha464 057efb48fa fix problem where there was black quads instead of text in fw samples 2014-01-26 23:08:09 +02:00
elisha464 543ed01642 delete m_main_mem_addr 2014-01-26 23:07:14 +02:00
Alexandro Sánchez Bach 211a477864 Merge pull request #57 from Nekotekina/master
Update: lwmutex reimplementation, cellPamf update, cellDmux draft, small changes in PPU interpreter
2014-01-25 15:17:15 -08:00
Nekotekina 4de64e5afe FDs fix 2014-01-26 02:53:02 +04:00
Nekotekina 88208f5e01 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-26 00:42:53 +04:00
Alexandro Sánchez Bach 09387879a0 Merge pull request #56 from elisha464/master
changed RSXThread to use the IO Memory

The datatype args didn't work for a certain part of RSXThread, because it tried to read from memory directly, but I needed it to you se read32 of the memorybase so it can reach the virtual memory block and in the end the real address.
2014-01-23 16:35:47 -08:00
elisha464 e8d00e6bbd Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-24 02:28:04 +02:00
elisha464 824fd46062 forgot some stuff :P 2014-01-24 02:26:08 +02:00
elisha464 8e9dcd279a changed everything to use the new IO address space 2014-01-24 01:22:56 +02:00
Nekotekina fc3f5348b8 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-24 00:38:29 +04:00
Alexandro Sánchez Bach 51512f25c5 Merge pull request #55 from elisha464/master
More fixes
2014-01-23 12:11:54 -08:00
elisha464 eac9526549 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-23 22:11:28 +02:00
elisha464 4ee90e1f90 changed warning of cellGcmAddressToOffset to Log 2014-01-23 21:38:26 +02:00
elisha464 8a3835bcef fix thread exit crash 2014-01-23 21:37:59 +02:00
Nekotekina d16dbedaa1 Fixed conflicts 2014-01-23 22:45:40 +04:00
Nekotekina 93faac5780 Small changes 2014-01-23 22:40:49 +04:00
elisha464 64bfae6648 fix stop when trying to run two games in a row 2014-01-23 19:03:43 +02:00
DHrpcs3 4b356998f2 Merge pull request #53 from elisha464/master
minor fixes
2014-01-22 12:49:03 -08:00
elisha464 ec942f2657 fixed getId and create thread (the id was written using write32 instead of write64) 2014-01-22 21:53:11 +02:00
elisha464 f260d1c602 fix cellGcmMapMainMemory 2014-01-22 20:04:11 +02:00
DHrpcs3 cf740f5129 Merge pull request #52 from elisha464/master
More memory mapping functions
2014-01-21 13:28:55 -08:00
elisha464 14c7c63e34 small fix 2014-01-21 22:23:28 +02:00
elisha464 7920f6d473 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp
2014-01-21 21:19:07 +02:00
elisha464 9b9e621593 finished all memory mapping functions of libgcm 2014-01-21 21:10:44 +02:00
elisha464 8514a14cf4 small change to unmapping functions 2014-01-21 20:29:16 +02:00
elisha464 6504ddede4 fixed some memory mapping functions 2014-01-21 20:08:33 +02:00
elisha464 66a481d4bc Implement reserved memory in virtual memory block 2014-01-21 19:55:48 +02:00
Nekotekina 5f9bc13898 Some bugs fixed 2014-01-21 03:34:16 +04:00
Nekotekina 6fb1a67a83 SC_Lwmutex 2014-01-20 01:19:37 +04:00
DH dc2fd8c39e Improved vfsDevice.
Minor fixes.
2014-01-19 18:05:27 +02:00
Nekotekina d65647acf3 cellPamf update, cellDmux draft 2014-01-19 14:52:30 +04:00
DH ab41540064 Improved ID manager.
Improved MemoryBlock.
2014-01-19 05:14:11 +02:00
DHrpcs3 159b6ecea3 Merge pull request #51 from elisha464/master
Memory Mapping functions for libgcm and virtual memory block
2014-01-18 14:21:52 -08:00
elisha464 4e4dd43646 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-18 23:36:42 +02:00
elisha464 48726e8fed More memory mapping functions for libgcm 2014-01-18 23:36:22 +02:00
Nekotekina 9e06aeff33 cellPamf update 2014-01-18 03:45:07 +04:00
elisha464 509d46a544 Added Virtual Memory Block for the IO Address Space
Started implementing some the memory mapping functions of libgcm
2014-01-17 18:56:03 +02:00
Nekotekina e41f21abc7 Simple analog stick support (from KB)
Left stick: arrows; right stick: PgDn/PgUp (vertical) and Home/End
(horizontal)
Added L10n functions' list (copied from old distr)
Fixed "LoadShdr64 error: shstrndx too big" in ELF64 loader
Other minor changes
2014-01-14 23:03:48 +04:00
Ivan e0a70bb0fa Merge pull request #49 from Nekotekina/master
cellSyncMutex+SPU
2014-01-12 02:40:53 -08:00
Nekotekina 970b834f2e CellSync review (mutexes, SPU).
File descriptors temporarily detached from ID manager.
Some logs disabled.
2014-01-12 14:27:59 +04:00
Nekotekina 4e8cd72e59 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-12 13:35:10 +04:00
Alexandro Sánchez Bach 2506810a2e cellAudio updated
cellAudio:
* Change endianness of datatypes.
* Fixed port handling.
* Uninitialize module when restarting.
* Minor syntax fixes.
2014-01-10 22:06:22 +01:00
Nekotekina 1be7454bc4 Fixed errors, improvements
cellSync review, MFC channel AtomicStat added, draft implementation of
MFC_GETLLAR_CMD, MFC_PUTLLC_CMD etc, memory allocating hacks for
alignment.
2014-01-10 05:30:59 +04:00
DH 76695a97b9 Implemented mem_func_ptr_t.
Improved cellFsAioRead.
Fixed cellAudioOut* return error codes.
2014-01-08 23:16:13 +02:00
Alexandro Sánchez Bach 1d61e7b4a4 Merge pull request #48 from Nekotekina/master
Compilation fix + other fixes
2014-01-07 13:36:51 -08:00
Nekotekina 775bf8b340 Fixed conflicts 2014-01-08 00:49:40 +04:00
Nekotekina f4952bee18 Small fixes 2014-01-08 00:27:34 +04:00
DH 7971db665e Improved Vertex Shader Decompiler.
Fixed VFS Manager crash.
Fixed SPU image loader.
Draft implementation of cellFsAioRead.
Improved Callbacks.
2014-01-07 22:11:02 +02:00
DH cbeadcf872 Improved RSX Debugger
- Fixed crash in debug build.
 - Implemented texture selection.
2014-01-07 09:30:41 +02:00
B1ackDaemon 40f2e679ec Merge pull request #47 from Nekotekina/master
cellSync, cellPamf and other
2014-01-06 08:53:30 -08:00
Nekotekina db8f01717c cellPamf improvements 2014-01-06 20:16:11 +04:00
Nekotekina 5f8d36600c cellPamf partial research and implementation 2014-01-06 05:50:56 +04:00
Nekotekina 2d011e94cd Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-05 03:58:19 +04:00
Nekotekina 5f06f46f32 Minor improvements
cellFsAioRead partially implemented, cellPadInfoPressMode &
cellPadInfoSensorMode stubs
2014-01-05 03:58:03 +04:00
Alexandro Sánchez Bach aa9b0d0a31 RSX Debugger, Mem. Viewer and module improvements
* Small cleanup in cellJpgDec and cellPngDec.
* cellPamf added to the project and a few test lines added to
cellPamfGetHeaderSize(2).
* Improved speed of the Raw Image Preview on the the Memory Viewer.
* Now you can click on the shown buffers / textures in the RSX Debugger
in order to see them in full size. More settings added to the tabs.
* Fixed cellFsStat in order to fix the crash aused by opening
directiories. The solution is really *really* ugly. Once vfsDir is
ready, I will replace it with something better.
2014-01-05 00:45:44 +01:00
Nekotekina 64b18b4dc2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-02 18:56:53 +04:00
Alexandro Sánchez Bach 1a43fe5ceb RSX Debugger & cellFont improved
RSX Debugger:
*Better way to add name:value pairs to the tabs.
*Added some entries in the Settings/Texture/Lightning tabs.
*Experimental DisAsm.
*Support for previewing RGB textures (buggy!).
*Minor cleanups and improvements

cellFont:
*Added cellFontOpenFontMemory, cellFontOpenFontFile,
cellFontOpenFontset. They still need some modifications (e.g. bind these
functions to stblib/stb_truetype.h).
2014-01-02 02:13:08 +01:00
Nekotekina 906f448221 Fixed conflicts 2013-12-31 15:16:05 +04:00
Nekotekina 552fd355bc New functions
Added cellSync module, implemented sys_spu_thread_group_join,
sys_spu_thread_group_suspend, added /dev_bdvd/ device, fixed default
values of analog sticks.
2013-12-31 15:10:24 +04:00
Alexandro Sánchez Bach d1a27748a3 Experimental RSX Debugger & minor changes
RSX Debugger:
Currently, it can preview the color buffers while the RSX Thread is
running, view and modify the render flags, and act as a memory viewer in
the RSX command buffers (no disasm yet). You can press F5, to update the
information (buffers, memory, flags, etc.) of the frame. There are *a
lot* of TODO's here that will be done in the future.

Minor changes:
*Added /dev_flash/ to VFS (required for cellFont in the future).
*cellMsgDialogOpenErrorCode implemented using wxMessageBox. The
information for each error code comes from PSDevWiki. There are lots
error codes missing.
*Updated sys_memory_get_page_attribute

Happy new year to everyone! :-)
2013-12-30 23:59:39 +01:00
Alexandro Sánchez Bach 3858f5097e Merge pull request #40 from osvcos/master
Halfplement syscall 351 (sys_memory_get_page_attribute)
2013-12-30 13:32:28 -08:00
Osvaldo Costa 7277940b84 Halfplement syscall 351 (sys_memory_get_page_attribute) 2013-12-30 16:34:39 -03:00
Osvaldo Costa 9a1e22fb85 Halfplement syscall 351 (sys_memory_get_page_attribute) 2013-12-29 18:18:51 -03:00
Alexandro Sánchez Bach 24d01a28c8 Merge pull request #38 from O1L/master
Update missed WindowsPadHandler.h

_Note:_ O1L explained that there was some issues when trying to fix what I mentioned in my last comment caused by wxWidgets 2.8.12. Therefore I will merge this commit as we can try different approaches to fix this in the future.
2013-12-28 14:03:32 -08:00
O1L 429041097b Update missed file 2013-12-28 14:05:44 +04:00
Hykem e807ae1a58 Merge pull request #37 from O1L/master
cellSysutil audio functions, configurable controls and other minor changes
2013-12-27 13:51:14 -08:00
Hykem f477b62813 Merge pull request #36 from Nekotekina/master
SPU Improvements
2013-12-27 13:50:55 -08:00
Hykem 69be408b32 Merge pull request #34 from osvcos/master
Relocate sys_process_is_stack to sysPrxForUser.cpp
2013-12-27 13:50:25 -08:00
Nekotekina ca13d4f2ef SPU
LQX Hack removed, Critical Section for m_status removed.
2013-12-27 15:35:08 +04:00
O1L 286254a10a Implemented some cellSysutil audio functions, added configurable controls (draft/ugly implementation), and minor changes in cellAudio and ConLog 2013-12-27 14:55:11 +04:00
Nekotekina 1ab5ef9dd7 SPU
Implemented sys_raw_spu_load, sys_raw_spu_image_load. Minor review of
MFC, channels.
2013-12-25 21:28:10 +04:00
Nekotekina 35257f5e94 SPU Improvements
Implemented sys_spu_image_import, original Mandelbrot PKG should work
now.
2013-12-24 21:34:51 +04:00
Nekotekina 3a82ed5dc9 Fixed x86 build
Fixed crashes
2013-12-24 15:10:55 +04:00
Nekotekina ab2bc35b18 Fixed conflicts
(merge branch)
2013-12-24 12:42:03 +04:00
DH eb2ab73e16 Implemented LWZUX, LWAX, LWAUX, LHA, LHAU, LWA, STWBRX, STHBRX. 2013-12-24 07:25:15 +02:00
DH 456374d487 Added missed files. 2013-12-24 06:02:21 +02:00
DH b500fcbaed Fixed ELF64 loader.
Fixed cellPadGetInfo.
Fixed cellFsOpen path encoding.
Draft implementation of cellAudioGetPortConfig.
Implemented STBUX, STHUX, STWUX.
Improved Boot (S)ELF / Install PKG UI.
2013-12-24 05:58:32 +02:00
Nekotekina fdb3fdb927 Files removed
They don't work from this folder
2013-12-23 17:20:16 +04:00
Nekotekina ba8108d595 SPU Fixes
Mandelbrot set does work now and its modified version included in
TEST12345 folder.
2013-12-23 15:57:09 +04:00
Nekotekina 37b5b49f58 Fast fix
Previous commit was wrong
2013-12-22 22:16:57 +04:00
Nekotekina c9abf559be SPU Improvements
Implemented SNR channels and syscalls, fixed sys_spu_thread_initialize
(args' passing, SPU image copying for each thread)
2013-12-22 21:40:50 +04:00
Nekotekina e28ba30561 Notification of NI flag change
Probably useless.
2013-12-19 02:30:06 +04:00
Nekotekina c3d2cd344f Win32 fix & elf loading fix
Fixed compilation error for x86 version. Fixed issue with ELF loading.
2013-12-15 01:59:37 +04:00
Nekotekina 01a274a1db Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-14 04:17:02 +04:00
Nekotekina eed6a7ffe3 STBUX implemented
Missed PPU opcode + replaced some non-unicode non-ASCII characters in
PPPInstrTable.h
2013-12-14 04:15:20 +04:00
Nekotekina ee137323aa MBox, some improvements
Some changes reverted (warnings), multi-thread safety fixed, MBox MMIO
modified
2013-12-13 05:35:28 +04:00
Osvaldo Costa 2c1cb51843 Relocate sys_process_is_stack to sysPrxForUser.cpp 2013-12-11 19:26:36 -03:00
Osvaldo Costa bc3772614b Relocate sys_process_is_stack to sysPrxForUser.cpp 2013-12-11 19:13:28 -03:00
Nekotekina c9fc99c388 Basic DMA, MFC, channel changes
Added new consts, thread-safe locks for critical resources, removed some
warnings. Modified git-version.h
2013-12-11 02:58:11 +04:00
Alexandro Sánchez Bach e2de06da63 Fixed conflicts 2013-12-09 18:07:13 +01:00
Alexandro Sánchez Bach 849af30bfd First cellFont functions & minor changes
* Edited .gitignore
* Moved some functions to cellFontFT.
* Now cellFont initializes correctly, but it doesn't render anything
yet. There are still several things to change and functions to
implement. I will take care of it.
2013-12-09 17:56:04 +01:00
Nekotekina bba9ea830f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 21:46:14 +04:00
Nekotekina e8d2245a0b Revert "SPU Improvement"
This reverts commit 9bf8f2eec5.
2013-12-08 21:44:52 +04:00
DH bf03874be2 Refresh Game Viewer after Install PKG 2013-12-08 19:06:20 +02:00
DH 23539f13b5 Improved Boot UI.
Added dev_usb000.
Fixed Game Viewer.
Minor fixes.
2013-12-08 18:54:45 +02:00
Nekotekina 78ca7e1d44 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 18:04:12 +04:00
Nekotekina 34ac4688e6 MFC
Minor changes
2013-12-08 18:03:51 +04:00
DH eaef09df91 Improved PSF loader.
Improved Game Viewer.
Implemented cellPadGetInfo.
Minor improvements.
2013-12-08 15:47:54 +02:00
Nekotekina 2135fb9685 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 05:00:53 +04:00
DH 34f5997f82 Improved OpenGL renderer.
- Rotate color buffer.
2013-12-08 02:42:59 +02:00
DH 76a93443c3 Improved OpenGL renderer
- Implemented color buffer reading.
2013-12-08 02:09:16 +02:00
Nekotekina 430ded8259 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 03:13:03 +04:00
Nekotekina 9bf8f2eec5 SPU Improvement
Some instructions implemented with SSE intrinsics
2013-12-08 03:12:37 +04:00
DH bba1b6a6e0 SPU improvements
- Implemented more SPU Channels.
- Improved interpreter.
Minor improvements.
2013-12-08 00:52:41 +02:00
Hykem a9a246a866 General improvements:
- Added drafts for event flag emulation;
- Implemented memory locking/unlocking;
- Refactored common SC_Memory objects;
- Implemented VM (virtual memory) syscalls;
- Improved cellGameBootCheck;
- Added more dummy values to cellVideoOutGetDeviceInfo;
- Mapped functions sys_mmapper_allocate_memory and sys_mmapper_map_memory to sysPrxForUser;
- Mapped syscalls 341 and 342 (duplicates of 324 and 325) to sys_memory_container_create and sys_memory_container_destroy;

Improved PKG installation routine:
- Allow immediate game booting;
- Fixed and improved game folder path handling.
2013-12-07 20:56:42 +00:00
DHrpcs3 ff4fcdd5fd Merge pull request #33 from Nekotekina/master
SPU Changes Request
2013-12-04 05:52:26 -08:00
Nekotekina 241ae83645 SPU Improvement
Implemented CFLTS, CFLTU, CSFLT and CUFLT. Finally fixed FREST.
2013-12-04 00:35:45 +04:00
Nekotekina 73c2628ef4 SPU Fixes 3.2 2013-12-02 22:49:06 +04:00
Nekotekina 38fabf7cd2 SPU Fixes 3.1
Small fixes
2013-12-02 14:40:58 +04:00
Nekotekina 1cfcc742d8 SPU Fixes 3
Almost all implemented instructions are fixed. Partialy tested. Some
instructions are still unimplemented.
2013-12-01 21:30:40 +04:00
Nekotekina ae39d3802f SPU Fixes 2
It's almost finished
2013-12-01 04:36:55 +04:00
Nekotekina b217742c7b Merge fix 2013-11-30 03:50:43 +04:00
Nekotekina f0946c4bc8 Merge branch 'master' of https://github.com/Nekotekina/rpcs3 2013-11-30 03:40:50 +04:00
Nekotekina 384e20acf0 SPU fixes
Partially tested and fixed
2013-11-30 03:40:31 +04:00
Nekotekina c48168ffc7 SPU ELF loading
I'm not sure that it's correct way to get entry point
2013-11-29 19:27:10 +04:00
Nekotekina 65c920bc8d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-29 18:46:57 +04:00
Alexandro Sánchez Bach 5ce57e963f New functions & Minor changes
* cellGameBootCheck, cellSysutilGetSystemParamString partially
implemented.
* Improved debug SELF loader (I applied DH's changes over another part
of code that Hykem wrote).
* Added checkbox in the Config>Settings menu to ignore Read/Write errors
(disabled by default).
* Minor issues.
2013-11-29 05:56:26 +01:00
Nekotekina a32fe40275 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-28 18:37:33 +04:00
DH 28a5d1bcab Fixed conflicts. 2013-11-28 14:27:04 +02:00
DHrpcs3 1bc99a3762 Merge pull request #30 from xsacha/master
Removal of WX dependency and introduction of Qt UI alternative
2013-11-28 04:09:49 -08:00
Nekotekina 794cd4cf89 cellGcmSetUserHandler (empty), SPU.SF syntax
Test commit
2013-11-28 02:15:45 +04:00
Sacha 6bcaf469e8 First stage of WX dependency removal. 2013-11-28 05:16:19 +10:00
Sacha d83a9b12d6 Introduce a Qt UI for RPCS3 2013-11-27 16:37:46 +10:00
DH 4fbfc14763 Improved Debug SELF loader 2013-11-26 07:04:39 +02:00
DH 9ce30fdd74 Improved OpenGL renderer & RAW SPU
- Improved Fragment Shader Decompiler.
- Fixed NV308A_COLOR cmd.
- Fixed break points for RAW SPU Thread.
- Added cellMsgDialogOpen2 to cellSysutil module.
2013-11-26 06:34:19 +02:00
B1ackDaemon dae31c44e0 Merge pull request #27 from Hykem/master
Syscall 114 and UNFSELF
2013-11-25 17:22:26 -08:00
Hykem 97d65e5563 Missing changes from last commit. 2013-11-26 00:28:08 +00:00
Hykem 03d2525ccc Implemented syscall 114.
Implemented manual unfself routine for debug (homebrew) packages.
2013-11-26 00:23:25 +00:00
DHrpcs3 a852baee5b Merge pull request #25 from FGRE/master
Fix linking
2013-11-25 09:57:22 -08:00
DHrpcs3 12c2e13dfa Merge pull request #26 from O1L/master
Added cellFont module (dummy in this moment) & minor changes in default settings
2013-11-25 09:56:33 -08:00
O1L 206cc6ac91 Added libfont module. Set Renderer to OpenGL, Aspect Ratio to 16:9 and Pad Handler to Windows by default. Partially implemented cellGcmSetDebugOutputLevel and cellGcmSetSecondVFrequency functions. Added 'host_root' path to VFS Manager. 2013-11-25 15:49:55 +04:00
Mislav Blažević 9a8cf34f44 Fix linking 2013-11-24 10:23:04 +01:00
Alexandro Sánchez Bach f43a324937 New GCM commands implemented
- NV4097_SET_DEPTH_BOUNDS_MIN
- NV4097_SET_POLY_OFFSET_FILL_ENABLE
- NV4097_SET_POLY_OFFSET_LINE_ENABLE
- NV4097_SET_POLY_OFFSET_POINT_ENABLE
- NV4097_SET_RESTART_INDEX_ENABLE
- NV4097_SET_RESTART_INDEX
2013-11-24 01:47:17 +01:00
DH c7ca4b996a Fixed compilation errors
Minor improvements
2013-11-24 02:01:57 +02:00
DHrpcs3 0ff38bc8ce Merge pull request #24 from FGRE/master
Fix compilation with GNU compiler
2013-11-23 14:50:13 -08:00
Mislav Blažević 2926d3805c Cleanup OpenGL hacks 2013-11-23 23:31:05 +01:00
Mislav Blažević d8bd34b57e Start porting to GNU compiler 2013-11-23 23:27:58 +01:00
DH f91bd80bc2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-23 20:51:32 +02:00
DH da9c778a4c Improved RAW SPU
Fixed sc binder_func_10
2013-11-23 20:50:54 +02:00
Alexandro Sánchez Bach 268a654fec Implemented Raw Image Preview tool 2013-11-23 18:56:03 +01:00
DH 8463694d4f - Improved call stack. 2013-11-23 17:20:31 +02:00
DH cbe4ab253c Improved Memory Viewer 2013-11-23 07:38:19 +02:00
Alexandro Sánchez Bach 5e1a958ee6 New debugging features, cellGame & minor changes
Two cellGame functions partially implemented:
- cellGameGetParamInt
- cellGameGetParamString

New debugging features:
- Call Stack viewer added
- Memory Viewer rewritten (Not finished yet)

Modified definition of UNIMPLEMENTED_FUNC to improve compatibility with
other compilers: Thanks @krofna

Replaced the "Compiler" menu entry with "Tools" and "Memory Viewer"
entry added.

NOTE: To "quickly" browse the memory using the Memory Viewer you can use
the scrollbar. Notice the irony of the word 'quickly' since the memory
viewer is actually slow as fuck. I will fix that soon. As you can see,
I'd like to add a Raw image viewer in the future in order to "see"
textures directly from memory.
2013-11-23 05:47:19 +01:00
DH 62c1980cac Improved PPU Interpreter
- Fixed MULHW & MULHWU.
- Improved MULHD & MULHDU.
2013-11-23 04:55:26 +02:00
DH aab69513aa Fixed SLD.
Thanks to elisha464.
2013-11-22 17:15:04 +02:00
DHrpcs3 ead70f5c00 Merge pull request #19 from osvcos/master
Change the GUI a little bit
2013-11-19 13:20:29 -08:00
DH 9d5b13839b - Fixed OpenGL renderer LoadVertexArray & DrawArray.
- Improved SPU SCs.
- Renamed mem_ptr_t -> mem_list_ptr_t, mem_struct_ptr_t -> mem_ptr_t.
2013-11-19 23:10:23 +02:00
Osvaldo Costa 19fea00432 Change the GUI a little bit
Removed the launch of the ELF Compiler window at startup. Instead of it,
I added a menubar item called "Compiler", and within it a menu item
called "ELF Compiler", wich will launch the window.
2013-11-17 23:10:59 -03:00
DH 5373747210 - Improved sc function binder.
- Improved Module binder.
- Added Dump Depth Buffer & Dump Color Buffers options (values can be changed on the fly).
2013-11-16 23:12:30 +02:00
DH baea02901b - Implemented cellRescResetFlipStatus & cellRescGetFlipStatus.
- Renamed gs homebrews.
- Updated AboutDialog.
2013-11-16 03:44:08 +02:00
Alexandro Sánchez Bach 382ae8a78f Improved cellResc module
* cellResc module improved

* Many changes in this commit are from [DH]: The implementation of
cellRescSetConvertAndFlip, cellRescSetWaitFlip and cellRescSetSrc as
well as all the other changes that are not in cellResc module.

* Fixed another conflict from O1L/rpcs3 (master): Deleted
"cellPhotoUtility" (which already exists in cellPhotoExport)
Now all the conflicts are solved. :-)

NOTE: We should search for a better name for 's_rescInternalInstance'.
This one is just too long and some lines don't even fit in my screen
because of this.
2013-11-16 01:38:22 +01:00
Alexandro Sánchez Bach 2a5f353e1e Fixed remaining conflicts
Fixed remaining conflicts from O1L/rpcs3 (master):
* Removed cellPhotoDecodeUtil.cpp, cellPhotoImportUtil.cpp and
cellScreenShotUtility.cpp which are already present.
* Updated cellSaveData.cpp to fix the conflicts.
2013-11-14 12:54:37 +01:00
Alexandro Sánchez Bach 45e58d882e Merge pull request #17 from O1L/master
PKG Installer
2013-11-14 03:34:28 -08:00
O1L b1caa5f9c4 Fixed errors from previous commit. Sorry. 2013-11-13 23:43:44 +04:00
O1L 6d56f1ae86 Implemented PKG Installer, improved Boot game. 2013-11-13 22:35:25 +04:00
O1L 584d4eb9d4 Updated 2013-11-13 22:24:24 +04:00
DH 3dd9683b47 Fixed clear mask. 2013-11-09 23:49:01 +02:00
DH 842559804f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-09 23:30:41 +02:00
DH 521244b0e0 Improved GS Renderer. 2013-11-09 23:29:49 +02:00
Alexandro Sánchez Bach a55f76879e Merge pull request #16 from Magn3s1um/master
Floating-Point Status and Control Register (FPSCR) and code fixes
2013-11-09 08:07:17 -08:00
Magn3s1um 63482dcfdc -Fixed MPYU and special registers based on comments 2013-11-09 07:51:26 -08:00
Magn3s1um 1192d20295 -Partial Implementation of Floating-Point Status and Control Register (FPSCR) 2013-11-09 07:41:56 -08:00
DH 6ea2c7d6a8 - Fixed memory leaks in cellRtc module.
- Fixed CPUThread crash.
- Improved ARMv7 Interpreter.
2013-11-09 14:25:12 +02:00
Alexandro Sánchez Bach 3b15f35432 Merge pull request #15 from Hykem/master
Fix for OpenGL error and implementation of cellRtc
2013-11-08 18:55:34 -08:00
Alexandro Sánchez Bach 620b8d0369 Fixed errors of last commit
I forgot to modify one line of code that broke the entire solution. Now
this is fixed. I also disabled the logging of sys_timer_usleep calls.
2013-11-09 03:48:43 +01:00
Hykem 3076571b6f Fixed OpenGL error 0x0502.
Implemented cellRtc module.

Added module name list in cellSysmodule to aid debugging.
2013-11-09 01:27:37 +00:00
Magn3s1um 3c762750a0 -Added SPR registers
-Implemented MTSPR
2013-11-08 17:17:44 -08:00
Alexandro Sánchez Bach 60261408c2 Merge branch 'master' of https://github.com/AlexAltea/rpcs3
NOTE: I included some changes of the forks of O1L and Dante38490 to my
fork. However, a conflict appeared while merging their sources with the
ones of DH. I had to resolve this conflict manually and push all the
changes like a new commit, that's why there changes weren't recorded
individually and (probably) won't appear at in the commits list. I am
very sorry for this, I'll try to avoid this in the future.

In order to preserve the authors of those commits, I write this list
here:
O1L: Dummy Modules (cellAudio, cellSaveData, and more)

https://github.com/O1L/rpcs3/commit/23ece01a0b6381cbbf70f87d6fa5d8d38094a1d3

https://github.com/O1L/rpcs3/commit/784fc571b3d5d7b4a59e52b27c2abba866e6f225

Dante38490: Spotted and fixed an issue in git-version-gen.cmd

https://github.com/Dante38490/rpcs3/commit/44e8867125deff3cecc29c6ed42f3a6fda998e5a

Regarding my changes:
* New lv2 SysCalls implemented (and others improved)
* SDATA unpacker implemented
* Changed layout of sc_table
2013-11-09 02:05:58 +01:00
DH 099333c992 - Implemented some ARMv7 instructions. 2013-11-06 03:01:15 +02:00
DH f18fff08c7 - Fixed compilation errors. 2013-11-05 22:04:55 +02:00
DH b263c3ebaf - Renamed ARM9 to ARMv7.
- Improved ELF32 loader.
2013-11-05 21:22:58 +02:00
DH 6b22e7d90a - Implemented ARM9Interpreter & ARM9DisAsm.
- Implemented MemoryBlockLE & DynamicMemoryBlockLE.
- Implemented CPUDecoder.
2013-11-05 20:12:18 +02:00
DH 0b35be32a4 - Implemented ARM9Thread.
- Improved OpenGL Renderer.
- Improved RAW SPU mfc.
2013-11-03 21:23:16 +02:00
DHrpcs3 6622dc42b5 Merge pull request #9 from Hykem/master
Add SELF decryption and ELF32 little endian support
2013-10-28 15:50:36 -07:00
Hykem 198d0a2fc0 Added ELF32 little endian support for PSP ELF files. 2013-10-28 21:58:03 +00:00
Alexandro Sánchez Bach f1b420eb3b SELF decrypter improves & About... dialog added
SELF decrypter improved:
The files 'scetool.exe' and 'zlib1.dll' are no longer needed. Everything
needed is now included in the rpsc3 project. So the only thing you need
in order to load SELF files are the keys. More information about this
matter in my last commit: c1565e55

Warning for devs! There is a lot of spaghetti code in /scetool/. I
fucked up things a bit while trying to include scetool in rpcs3. There
is a lot of unused code there and I need to make sure that everything is
working properly. In any case, the code seems to work stable so
end-users shouldn't be worried about this warning. ;-)

'About...' dialog added:
Well, I have nothing more to say here. I wish you all a nice day!
2013-10-21 23:02:43 +02:00
Alexandro Sánchez Bach c1565e55e5 Experimental SELF decryption support
This SELF decryption feature is not portable and its code looks really
ugly. It is experimental and is meant to save time to developers when
doing tests with SELF files. Besides that, it works (under Windows). :-)

How to use it:
1. Place "scetool.exe" (and "zlib1.dll") into the main rpcs3 folder.

2. Obtain a LEGAL copy of the SELF decryption keys and place them in a
folder named "data" next to the main executable in a format that is
readable for "scetool.exe". That is, following files should be present:
data/keys
data/ldr_curves
data/vsh_curves

(See screenshot in the comments)

NOTE: These are the steps to enable SELF decryption and it applies to
future commits regarding this matter. We do NOT take any responsibility
about the way you obtain the keys or (until we include SELF decryption
into our code) the actions "scetool.exe" (or "zlib1.dll") perform.
2013-10-14 21:40:44 +02:00
DH 5874a5683e Fixed small error. 2013-10-06 18:41:19 +03:00
DH 64cd9746b8 Fixed minor Debugger errors. 2013-10-06 18:05:58 +03:00
DH 8259006bc3 Improved OpenGL renderer.
- Improved Vertex Shader Decompiler.
- Fixed CMD analyzer.

- Improved sys_fs module.
- Minor fixes.
2013-10-06 17:15:04 +03:00
DH dd48f827c3 - Implemented be_t, mem_struct_ptr_t, vfsFile.
- Improved sys_fs, cellPngDec, cellJpgDec, cellGifDec modules.
2013-10-06 15:07:42 +03:00
O1L f8193fd784 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-10-01 15:05:44 +04:00
O1L 23ece01a0b Minor improved cellAudio module. More dummy modules created. Some modules are not included to the project. If you want to implement a function of any of these modules, add the corresponding file to the project first. 2013-09-30 20:35:28 +04:00
B1ackDaemon efd336b743 Merge pull request #7 from AlexAltea/master
Some modules updated / improved & New dummy modules
2013-09-28 15:07:31 -07:00
Alexandro Sánchez Bach 2eb2a2a197 Small issue fixed 2013-09-28 23:05:56 +02:00
Alexandro Sánchez Bach 9bb2d082e6 Some Modules updated to use mem*_t class
cellKb, cellMouse and cellSysutil now use the mem*_t instances instead
of using "u32 *_addr" variables.
2013-09-28 16:30:04 +02:00
Alexandro Sánchez Bach afb9273823 More dummy modules
* 41 new dummy modules created.

NOTE: I have detached the previous 4 dummy modules of my last commit
(1a85ccbbf4) from the project since they will consume space of the
executable, and compilation time and don't provide anything useful yet,
the same applies to this commit. The only reason to provide this dummy
modules is to avoid that developers have to spend too much time on
creating the template of the module before implementing functions. If
you want to implement a function of any of these modules, add the
corresponding file to the project first.
2013-09-28 04:36:57 +02:00
O1L 784fc571b3 Created new dummy module for cellAudio. 2013-09-27 14:05:29 +04:00
Alexandro Sánchez Bach 1a85ccbbf4 Improved image dec. modules & New dummy modules
* Improved image decoding modules:
- Fixed error that appeared after last commit (eebe859f83).
- Changed some functions to use the mem*_t classes.
- Implemented cell*DecSetParameter.

* Created new dummy modules for sys_net (0x0000), sys_http (0x0001),
cellHttpUtil (0x0002) and cellSsl (0x0003).
2013-09-25 15:43:55 +02:00
DH eebe859f83 Improved mem_t.
- Implemented mem_ptr_t.
- Fixed issue 3.
2013-09-25 00:11:29 +03:00
B1ackDaemon e655999a23 Merge pull request #5 from AlexAltea/master
Improved debugger, modules and the SPU interpreter
2013-09-23 06:55:37 -07:00
Alexandro Sánchez Bach 7d97bbfbbf Changed syntax of last SPU instructions 2013-09-23 14:20:47 +02:00
Alexandro Sánchez Bach 03dcfeabc3 More SPU Instructions: Floating point comparison
* Implemented Floating/Double-floating comparison instructions:
FCGT, FCMGT, FCEQ, FCMEQ, DFCGT, DFCMGT, DFCEQ, DFCMEQ

* Implemented more Floating/Double-floating operations:
FMA, FMS, FNMS, DFMA, DFMS, DFNMS, DFNMA

* Implemented Double / Single floating-point conversion:
FESD, FRSD
2013-09-23 12:48:27 +02:00
Alexandro Sánchez Bach db7e68d308 More SPU Instructions: Floating point arithmetic
Implemented Floating/Double-floating arithmetic operations: Add,
Substract and Multiply: FA, FS, FM, DFA, DFS, DFM respectively.

* Fixed issue in the register editor: Wrong value displayed when reading
64 bit or 128 bit registers.

* Fixed issue in the register editor: Error when writing to 128 bit
registers.
2013-09-23 01:50:16 +02:00
Alexandro Sánchez Bach 9c6ae554fa Debugger improved: Register editor added
How to use the register editor:
1. Load an .ELF file
2. Select any instruction from a thread. (This is a workaround to
activate the appropriate event listener. This will be changed in the
future).
3. Press 'R' key and modify any register you want.

Note:
The register editor only works with PPU and SPU threads.

Additional changes:
* Fixed the filesize problem caused by the instruction editor dialog.
* Instruction Editor: Fixed small issue in SPU threads
2013-09-22 13:34:54 +02:00
Alexandro Sánchez Bach bf293ebbfc Debugger improved: Instruction editor added
How to use the instruction editor:
1. Load an .ELF file
2. Select an instruction from any valid memory address inside any
thread.
3. Press 'E' key and have fun. :P

Note1: I suggest to remove the function InterpreterDisAsmFrame::DClick
and use InterpreterDisAsmFrame::InstrKey to do all debugging-related
actions (Add breakpoint, Edit, Step, Run, etc.) using the same keyboard
layout as debuggers like OllyDbg.

Note2: The final binary is 200 KB larger due to this feature. This issue
should be fixed in the future. This has probably something to do with
the #include's.
2013-09-21 02:40:36 +02:00
Alexandro Sánchez Bach a11de0f607 Improved image decoding modules
* Huge improvement in the speed of cell{Png|Gif|Jpg}DecDecodeData when
reading input files.

Note: Sorry if this commit is too "small", but I need to sync every
change since I use two PCs.
2013-09-19 23:40:43 +02:00
Alexandro Sánchez Bach 20665b9f89 Improved sys_fs module
- cellFsStat now accepts mounting points in the path argument.

- cellFsMkdir, cellFsRmdir, cellFsUnlink and cellFsRename are now using
the real path provided by the VFS.

- cellFsFtruncate, cellFsTruncate and cellFsFGetBlockSize are partially
implemented.

Note: I have spotted a bug in cellFsRename and cellFsRmdir (this has
nothing to do with the changes I made), but I don't dare to fix it since
I am not sure if I will break other functions with my solution.
2013-09-18 23:50:00 +02:00
DHrpcs3 d7e4f7ec3b Merge pull request #4 from AlexAltea/master
New image decodification modules & IO devices
2013-09-15 08:13:23 -07:00
Alexandro Sánchez Bach b85d39bfc3 Minor issues fixed
*Memory leak in image decodification modules.

*Changed mouse wheel delta value.
2013-09-14 22:47:59 +02:00
Alexandro Sánchez Bach 1024a7c7c4 Mouse support added
*Implemented 'cellMouse*' functions from 'sys_io' module, which are part
of the libmouse library.

* Added corresponding entries in the 'Config > Settings' menu to change
the handler of the mouse. Supported handlers: Windows, Null.

* cellGifDec: Fixed some errors and added support for RGBA color.

(Remember: The mouse support is very experimental)
2013-09-14 20:20:57 +02:00
Alexandro Sánchez Bach 1b7302c0ba Keybord support improved
*Improved Keyboard:
- Fixed crash when using Null keyboard handler
- Added support for meta keys
- Added support for {caps, num, scroll} lock.

*Small issues fixed in previous module:
- cellGifDec: Fixed wrong information of packet field in
cellGifDecReadHeader.
- cellGifDec: Set DataOutInfo.recordType as 1 since the output is always
an image.
- cellJpgDec: Set colorSpace as 3, until a better function is
implemented.
- cellJpgDec, cellPngDec: Added RGBA support.

*Changed layout of "Config > Settings" menu.
2013-09-13 19:29:54 +02:00
Alexandro Sánchez Bach 4835ae35af Keybord support Added
* Implemented 'cellKb*' functions from 'sys_io' module, which are part
of the libkb library.

* Added corresponding entries in the 'Config > Settings' menu to change
the handler of the keyboard. Supported handlers: Windows, Null.

INFO: This keyboard library is *very* experimental and I am aware of
some bugs. There will be improvements soon.
2013-09-11 22:49:49 +02:00
Alexandro Sánchez Bach aea7f4aa77 cellGifDec Module Added
*Implemented 'cellGifDec', using 'sys_fs' to access the files and the
'stb_image' (stblib) library to decode GIF buffers to Raw-pixel buffers
that can be used as textures.

*Replace 'lodepng' and 'jpeg-compressor' libraries with 'stb_image' in
cellPngDec and cellJpgDec, respectively.

*Fixed minor issues in cellPngDec and cellJpgDec.
2013-09-10 15:17:02 +02:00
Alexandro Sánchez Bach 0275b430cf cellJpgDec Module Added
*Replaced "sys_jpgdec" with "cellJpgDec" in
"rpcs3\Emu\SysCalls\Modules.cpp".
*Implemented 'cellJpgDec', using 'sys_fs' to access the files and the
'jpg-compressor' (jpgd) library to decode JPG buffers to Raw-pixel
buffers that can be
used as textures.
*Fixed memory leak issue in cellPngDec and minor changes.
2013-09-09 18:27:31 +02:00
Alexandro Sánchez Bach 3123432dcc cellPngDec Module Added
Implemented 'cellPngDec', using 'sys_fs' to access the files and the
'lodepng' library to decode PNG buffers to Raw-pixel buffers that can be
used as textures.
2013-09-08 10:45:10 +02:00
DHrpcs3 43e0c84f64 Merge pull request #2 from cornytrace/master
Several small improvements
2013-09-05 03:44:45 -07:00
Cornee Traas eefd175900 Fix more spelling mistakes 2013-09-05 10:06:59 +02:00
Cornee Traas 9b921f3c2d Update .gitignore 2013-09-05 09:45:46 +02:00
Cornee Traas f25fa26b42 Refactor of game loading 2013-09-05 09:45:33 +02:00
Cornee Traas f4b98074b0 Merge remote-tracking branch 'upstream/master'
Conflicts:
	rpcs3/Emu/GS/GL/GLGSRender.cpp
	rpcs3/Gui/InterpreterDisAsm.cpp
	rpcs3/Gui/MainFrame.cpp
2013-09-03 19:26:31 +02:00
Cornee Traas f42e6d7374 Update .gitignore to include git-version.h 2013-08-12 11:57:25 +02:00
Cornee Traas 96c692aefc Fix spelling of IsRunned to IsRunning 2013-08-12 11:56:56 +02:00
Cornee Traas d249bfef4d When debugging, put the git revision in the title
Useful for bug reports, user-friendly version still used when building
in release mode. A unix script for generating the git version is still
needed.
2013-08-11 00:09:27 +02:00
Cornee Traas cd3ad0b149 (indirectly) Fix ini boolean parsing error 2013-08-10 23:51:24 +02:00
Cornee Traas fafb88672a Fix debugger working directory 2013-08-10 23:48:54 +02:00
Cornee Traas 6fd824fcca Update .gitignore 2013-08-10 23:48:32 +02:00
3024 changed files with 375153 additions and 1040184 deletions
+69 -13
View File
@@ -9,21 +9,77 @@
# Compiled Static libraries
*.lai
*.la
*.a
/libs
# *.a # Commented out since OpenAL Soft's binaries use this extension.
*.opensdf
*.sdf
*.user
/bin/rpcs3.exe
/bin/RPCS3.log
/bin/rpcs3.ini
/bin/compiled.elf
/bin/FragmentProgram.txt
/bin/VertexDataArray.dump
/bin/VertexProgram.txt
/bin/BreakPoints.dat
/bin/textures
*.suo
*.tlog
*.idb
*.pdb
*.obj
*.ilk
*.pch
*.log
*.exe
*.dll
*.elf
*.lastbuildstate
*.unsuccessfulbuild
*.res
*.dump
*.wav
/build
/bin
/lib
/tmp
/ipch
/rpcs3/Debug
/rpcs3/Release
/ipch
/llvm_build
/wxWidgets/lib
/bin/rpcs3.ini
/bin/rpcs3.ipdb
/bin/rpcs3.iobj
/bin/FragmentProgram.txt
/bin/VertexProgram.txt
/bin/*.hlsl
/bin/BreakPoints.dat
/bin/textures
/bin/*.lib
/bin/*.exp
rpcs3/git-version.h
# Visual Studio Files
*.vspx
*.psess
*.VC.*
# Copyrighted files
/bin/data/
/bin/dev_flash/data/font
/bin/dev_flash/sys
/bin/dev_flash/vsh
# Ignore installed games except test homebrews
!/bin/dev_hdd0/game/
/bin/dev_hdd0/game/*
!/bin/dev_hdd0/game/TEST12345/
# Ignore other system generated files
bin/dev_hdd0/*.txt
x64/*
rpcs3/x64/*
rpcs3-tests/x64/*
# cmake
Makefile
*CMakeFiles*
CMakeCache.txt
*cmake_install.cmake*
# cotire
rpcs3/cotire/*
rpcs3/rpcs3_*_cotire.cmake
+27
View File
@@ -0,0 +1,27 @@
[submodule "wxWidgets"]
path = wxWidgets
url = https://github.com/wxWidgets/wxWidgets
ignore = dirty
[submodule "rpcs3-ffmpeg"]
path = ffmpeg
url = https://github.com/hrydgard/ppsspp-ffmpeg
[submodule "asmjit"]
path = asmjit
url = https://github.com/kobalicek/asmjit
ignore = dirty
[submodule "llvm"]
path = llvm
url = https://github.com/llvm-mirror/llvm
branch = release_36
[submodule "minidx9"]
path = minidx9
url = https://github.com/hrydgard/minidx9.git
[submodule "rsx_program_decompiler"]
path = rsx_program_decompiler
url = https://github.com/RPCS3/rsx_program_decompiler
[submodule "GSL"]
path = GSL
url = https://github.com/Microsoft/GSL.git
[submodule "libpng"]
path = libpng
url = https://github.com/RPCS3/libpng
+3
View File
@@ -0,0 +1,3 @@
{
"userBlacklist": ["AlexAltea"]
}
+98
View File
@@ -0,0 +1,98 @@
language: cpp
os:
- linux
- osx
osx_image: xcode6.4
compiler:
- clang
- gcc
env:
global:
- secure: "Vf+FY48nip9JppMnq11105NealdErSWsoUhHo63/V3V+LKfA9guenxCp93/qoSIdSGC/sJwb0yIIMGvkTT/rxDJNh6Z+BWUTb2E0WEIIQbvTJNOSUzoq7dfF1LT61XjVjByFzcbC2xjtaBowmcAYEs1jGUUuEjYVCMmD5lY8hUg="
# Which Travis environment to run Coverity on
- coverity_scan_run_condition='"$TRAVIS_OS_NAME" = linux -a "$CC" = gcc'
# Test mode is for testing if it's working with Coverity. Change to true if testing, to avoid reaching the quota.
- coverity_scan_script_test_mode=false
branches:
except:
- ppu_recompiler
matrix:
exclude:
- os: osx
compiler: gcc
git:
submodules: false
before_install:
# shutdown services on Travis, which may have a memory impact
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo apt-get install libwxgtk3.0-dev;
sudo apt-add-repository -y ppa:libreoffice/ppa;
sudo apt-get update;
sudo apt-get install libglew-dev;
fi;
- if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$CXX" = "g++" ]; then
export CXX="g++-5" CC="gcc-5" CXXFLAGS="-Wno-format-security";
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01';
elif [ "$TRAVIS_OS_NAME" = "linux" ]; then
export CXX="clang++-3.6" CC="clang-3.6";
fi;
# Add coverall for C++ so coverall.io could be triggered. Even it should be --coverage and gcov.
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo pip install cpp-coveralls requests[security];
else
brew update; brew update;
brew install glew wxwidgets llvm36;
fi;
before_script:
- git submodule update --init asmjit ffmpeg rsx_program_decompiler GSL libpng
- mkdir build
- cd build
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cmake ..; else cmake .. -DLLVM_DIR=/usr/local/opt/llvm36/lib/llvm-3.6/share/llvm/cmake; fi
script:
# Add a command to show all the variables. May be useful for debugging Travis.
# - echo "--Shell Export Lists START--" ; export -p; echo "--Shell Export Lists STOP--";
# And to ensure the versions of toolchain
- echo "--CXX version?"; "$CXX" --version; echo "--CXX version confirmed";
- if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then make -j 4; fi
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- kubuntu-backports
packages:
- cmake
- libopenal-dev
- freeglut3-dev
# - libglew-dev apt version is too old
- libc6-dev
- llvm-3.6
- llvm-3.6-dev
- libedit-dev
- g++-5
- gcc-5
- clang-3.6
- libstdc++-4.8-dev
- lib32stdc++6
- zlib1g-dev
coverity_scan:
project:
name: $TRAVIS_REPO_SLUG
description: "PS3 emulator/debugger"
notification_email: raul.tambre@gmail.com
build_command: "make -j 4"
branch_pattern: coverity_scan
after_success:
- if [ "$COVERITY_SCAN_BRANCH" != 1 ] && [ "$TRAVIS_OS_NAME" = linux ]; then coveralls --extension .c --extension .cpp --extension .h; fi
+23
View File
@@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 2.8.12)
set(ASMJIT_STATIC TRUE)
if (NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to Release")
set(CMAKE_BUILD_TYPE "Release")
endif()
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message( FATAL_ERROR "RPCS3 can only be compiled on 64-bit platforms." )
endif()
# We use libpng's static library and don't need to build the shared library and run the tests
set(PNG_SHARED OFF CACHE BOOL "Build shared lib." FORCE)
set(PNG_TESTS OFF CACHE BOOL "Build tests." FORCE)
add_subdirectory( asmjit )
add_subdirectory( libpng )
# TODO: do real installation, including copying directory structure
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/bin")
add_subdirectory( rpcs3 )
+9973 -11256
View File
File diff suppressed because it is too large Load Diff
Submodule
+1
Submodule GSL added at fc5fce4f4f
+339
View File
@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
+656
View File
@@ -0,0 +1,656 @@
#ifndef AL_AL_H
#define AL_AL_H
#if defined(__cplusplus)
extern "C" {
#endif
#ifndef AL_API
#if defined(AL_LIBTYPE_STATIC)
#define AL_API
#elif defined(_WIN32)
#define AL_API __declspec(dllimport)
#else
#define AL_API extern
#endif
#endif
#if defined(_WIN32)
#define AL_APIENTRY __cdecl
#else
#define AL_APIENTRY
#endif
/** Deprecated macro. */
#define OPENAL
#define ALAPI AL_API
#define ALAPIENTRY AL_APIENTRY
#define AL_INVALID (-1)
#define AL_ILLEGAL_ENUM AL_INVALID_ENUM
#define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION
/** Supported AL version. */
#define AL_VERSION_1_0
#define AL_VERSION_1_1
/** 8-bit boolean */
typedef char ALboolean;
/** character */
typedef char ALchar;
/** signed 8-bit 2's complement integer */
typedef signed char ALbyte;
/** unsigned 8-bit integer */
typedef unsigned char ALubyte;
/** signed 16-bit 2's complement integer */
typedef short ALshort;
/** unsigned 16-bit integer */
typedef unsigned short ALushort;
/** signed 32-bit 2's complement integer */
typedef int ALint;
/** unsigned 32-bit integer */
typedef unsigned int ALuint;
/** non-negative 32-bit binary integer size */
typedef int ALsizei;
/** enumerated 32-bit value */
typedef int ALenum;
/** 32-bit IEEE754 floating-point */
typedef float ALfloat;
/** 64-bit IEEE754 floating-point */
typedef double ALdouble;
/** void type (for opaque pointers only) */
typedef void ALvoid;
/* Enumerant values begin at column 50. No tabs. */
/** "no distance model" or "no buffer" */
#define AL_NONE 0
/** Boolean False. */
#define AL_FALSE 0
/** Boolean True. */
#define AL_TRUE 1
/**
* Relative source.
* Type: ALboolean
* Range: [AL_TRUE, AL_FALSE]
* Default: AL_FALSE
*
* Specifies if the Source has relative coordinates.
*/
#define AL_SOURCE_RELATIVE 0x202
/**
* Inner cone angle, in degrees.
* Type: ALint, ALfloat
* Range: [0 - 360]
* Default: 360
*
* The angle covered by the inner cone, where the source will not attenuate.
*/
#define AL_CONE_INNER_ANGLE 0x1001
/**
* Outer cone angle, in degrees.
* Range: [0 - 360]
* Default: 360
*
* The angle covered by the outer cone, where the source will be fully
* attenuated.
*/
#define AL_CONE_OUTER_ANGLE 0x1002
/**
* Source pitch.
* Type: ALfloat
* Range: [0.5 - 2.0]
* Default: 1.0
*
* A multiplier for the frequency (sample rate) of the source's buffer.
*/
#define AL_PITCH 0x1003
/**
* Source or listener position.
* Type: ALfloat[3], ALint[3]
* Default: {0, 0, 0}
*
* The source or listener location in three dimensional space.
*
* OpenAL, like OpenGL, uses a right handed coordinate system, where in a
* frontal default view X (thumb) points right, Y points up (index finger), and
* Z points towards the viewer/camera (middle finger).
*
* To switch from a left handed coordinate system, flip the sign on the Z
* coordinate.
*/
#define AL_POSITION 0x1004
/**
* Source direction.
* Type: ALfloat[3], ALint[3]
* Default: {0, 0, 0}
*
* Specifies the current direction in local space.
* A zero-length vector specifies an omni-directional source (cone is ignored).
*/
#define AL_DIRECTION 0x1005
/**
* Source or listener velocity.
* Type: ALfloat[3], ALint[3]
* Default: {0, 0, 0}
*
* Specifies the current velocity in local space.
*/
#define AL_VELOCITY 0x1006
/**
* Source looping.
* Type: ALboolean
* Range: [AL_TRUE, AL_FALSE]
* Default: AL_FALSE
*
* Specifies whether source is looping.
*/
#define AL_LOOPING 0x1007
/**
* Source buffer.
* Type: ALuint
* Range: any valid Buffer.
*
* Specifies the buffer to provide sound samples.
*/
#define AL_BUFFER 0x1009
/**
* Source or listener gain.
* Type: ALfloat
* Range: [0.0 - ]
*
* A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
* of about -6dB. Each multiplicaton by 2 equals an amplification of about
* +6dB.
*
* A value of 0.0 is meaningless with respect to a logarithmic scale; it is
* silent.
*/
#define AL_GAIN 0x100A
/**
* Minimum source gain.
* Type: ALfloat
* Range: [0.0 - 1.0]
*
* The minimum gain allowed for a source, after distance and cone attenation is
* applied (if applicable).
*/
#define AL_MIN_GAIN 0x100D
/**
* Maximum source gain.
* Type: ALfloat
* Range: [0.0 - 1.0]
*
* The maximum gain allowed for a source, after distance and cone attenation is
* applied (if applicable).
*/
#define AL_MAX_GAIN 0x100E
/**
* Listener orientation.
* Type: ALfloat[6]
* Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
*
* Effectively two three dimensional vectors. The first vector is the front (or
* "at") and the second is the top (or "up").
*
* Both vectors are in local space.
*/
#define AL_ORIENTATION 0x100F
/**
* Source state (query only).
* Type: ALint
* Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]
*/
#define AL_SOURCE_STATE 0x1010
/** Source state value. */
#define AL_INITIAL 0x1011
#define AL_PLAYING 0x1012
#define AL_PAUSED 0x1013
#define AL_STOPPED 0x1014
/**
* Source Buffer Queue size (query only).
* Type: ALint
*
* The number of buffers queued using alSourceQueueBuffers, minus the buffers
* removed with alSourceUnqueueBuffers.
*/
#define AL_BUFFERS_QUEUED 0x1015
/**
* Source Buffer Queue processed count (query only).
* Type: ALint
*
* The number of queued buffers that have been fully processed, and can be
* removed with alSourceUnqueueBuffers.
*
* Looping sources will never fully process buffers because they will be set to
* play again for when the source loops.
*/
#define AL_BUFFERS_PROCESSED 0x1016
/**
* Source reference distance.
* Type: ALfloat
* Range: [0.0 - ]
* Default: 1.0
*
* The distance in units that no attenuation occurs.
*
* At 0.0, no distance attenuation ever occurs on non-linear attenuation models.
*/
#define AL_REFERENCE_DISTANCE 0x1020
/**
* Source rolloff factor.
* Type: ALfloat
* Range: [0.0 - ]
* Default: 1.0
*
* Multiplier to exaggerate or diminish distance attenuation.
*
* At 0.0, no distance attenuation ever occurs.
*/
#define AL_ROLLOFF_FACTOR 0x1021
/**
* Outer cone gain.
* Type: ALfloat
* Range: [0.0 - 1.0]
* Default: 0.0
*
* The gain attenuation applied when the listener is outside of the source's
* outer cone.
*/
#define AL_CONE_OUTER_GAIN 0x1022
/**
* Source maximum distance.
* Type: ALfloat
* Range: [0.0 - ]
* Default: +inf
*
* The distance above which the source is not attenuated any further with a
* clamped distance model, or where attenuation reaches 0.0 gain for linear
* distance models with a default rolloff factor.
*/
#define AL_MAX_DISTANCE 0x1023
/** Source buffer position, in seconds */
#define AL_SEC_OFFSET 0x1024
/** Source buffer position, in sample frames */
#define AL_SAMPLE_OFFSET 0x1025
/** Source buffer position, in bytes */
#define AL_BYTE_OFFSET 0x1026
/**
* Source type (query only).
* Type: ALint
* Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]
*
* A Source is Static if a Buffer has been attached using AL_BUFFER.
*
* A Source is Streaming if one or more Buffers have been attached using
* alSourceQueueBuffers.
*
* A Source is Undetermined when it has the NULL buffer attached using
* AL_BUFFER.
*/
#define AL_SOURCE_TYPE 0x1027
/** Source type value. */
#define AL_STATIC 0x1028
#define AL_STREAMING 0x1029
#define AL_UNDETERMINED 0x1030
/** Buffer format specifier. */
#define AL_FORMAT_MONO8 0x1100
#define AL_FORMAT_MONO16 0x1101
#define AL_FORMAT_STEREO8 0x1102
#define AL_FORMAT_STEREO16 0x1103
/** Buffer frequency (query only). */
#define AL_FREQUENCY 0x2001
/** Buffer bits per sample (query only). */
#define AL_BITS 0x2002
/** Buffer channel count (query only). */
#define AL_CHANNELS 0x2003
/** Buffer data size (query only). */
#define AL_SIZE 0x2004
/**
* Buffer state.
*
* Not for public use.
*/
#define AL_UNUSED 0x2010
#define AL_PENDING 0x2011
#define AL_PROCESSED 0x2012
/** No error. */
#define AL_NO_ERROR 0
/** Invalid name paramater passed to AL call. */
#define AL_INVALID_NAME 0xA001
/** Invalid enum parameter passed to AL call. */
#define AL_INVALID_ENUM 0xA002
/** Invalid value parameter passed to AL call. */
#define AL_INVALID_VALUE 0xA003
/** Illegal AL call. */
#define AL_INVALID_OPERATION 0xA004
/** Not enough memory. */
#define AL_OUT_OF_MEMORY 0xA005
/** Context string: Vendor ID. */
#define AL_VENDOR 0xB001
/** Context string: Version. */
#define AL_VERSION 0xB002
/** Context string: Renderer ID. */
#define AL_RENDERER 0xB003
/** Context string: Space-separated extension list. */
#define AL_EXTENSIONS 0xB004
/**
* Doppler scale.
* Type: ALfloat
* Range: [0.0 - ]
* Default: 1.0
*
* Scale for source and listener velocities.
*/
#define AL_DOPPLER_FACTOR 0xC000
AL_API void AL_APIENTRY alDopplerFactor(ALfloat value);
/**
* Doppler velocity (deprecated).
*
* A multiplier applied to the Speed of Sound.
*/
#define AL_DOPPLER_VELOCITY 0xC001
AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value);
/**
* Speed of Sound, in units per second.
* Type: ALfloat
* Range: [0.0001 - ]
* Default: 343.3
*
* The speed at which sound waves are assumed to travel, when calculating the
* doppler effect.
*/
#define AL_SPEED_OF_SOUND 0xC003
AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value);
/**
* Distance attenuation model.
* Type: ALint
* Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
* AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
* AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
* Default: AL_INVERSE_DISTANCE_CLAMPED
*
* The model by which sources attenuate with distance.
*
* None - No distance attenuation.
* Inverse - Doubling the distance halves the source gain.
* Linear - Linear gain scaling between the reference and max distances.
* Exponent - Exponential gain dropoff.
*
* Clamped variations work like the non-clamped counterparts, except the
* distance calculated is clamped between the reference and max distances.
*/
#define AL_DISTANCE_MODEL 0xD000
AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel);
/** Distance model value. */
#define AL_INVERSE_DISTANCE 0xD001
#define AL_INVERSE_DISTANCE_CLAMPED 0xD002
#define AL_LINEAR_DISTANCE 0xD003
#define AL_LINEAR_DISTANCE_CLAMPED 0xD004
#define AL_EXPONENT_DISTANCE 0xD005
#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006
/** Renderer State management. */
AL_API void AL_APIENTRY alEnable(ALenum capability);
AL_API void AL_APIENTRY alDisable(ALenum capability);
AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability);
/** State retrieval. */
AL_API const ALchar* AL_APIENTRY alGetString(ALenum param);
AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values);
AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values);
AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values);
AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param);
AL_API ALint AL_APIENTRY alGetInteger(ALenum param);
AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param);
AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param);
/**
* Error retrieval.
*
* Obtain the first error generated in the AL context since the last check.
*/
AL_API ALenum AL_APIENTRY alGetError(void);
/**
* Extension support.
*
* Query for the presence of an extension, and obtain any appropriate function
* pointers and enum values.
*/
AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname);
AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname);
AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename);
/** Set Listener parameters */
AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value);
AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values);
AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value);
AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);
AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values);
/** Get Listener parameters */
AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value);
AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value);
AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);
AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values);
/** Create Source objects. */
AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources);
/** Delete Source objects. */
AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources);
/** Verify a handle is a valid Source. */
AL_API ALboolean AL_APIENTRY alIsSource(ALuint source);
/** Set Source parameters. */
AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value);
AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values);
AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value);
AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values);
/** Get Source parameters. */
AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value);
AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value);
AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
AL_API void AL_APIENTRY alGetSourceiv(ALuint source, ALenum param, ALint *values);
/** Play, replay, or resume (if paused) a list of Sources */
AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources);
/** Stop a list of Sources */
AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources);
/** Rewind a list of Sources */
AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources);
/** Pause a list of Sources */
AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources);
/** Play, replay, or resume a Source */
AL_API void AL_APIENTRY alSourcePlay(ALuint source);
/** Stop a Source */
AL_API void AL_APIENTRY alSourceStop(ALuint source);
/** Rewind a Source (set playback postiton to beginning) */
AL_API void AL_APIENTRY alSourceRewind(ALuint source);
/** Pause a Source */
AL_API void AL_APIENTRY alSourcePause(ALuint source);
/** Queue buffers onto a source */
AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);
/** Unqueue processed buffers from a source */
AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);
/** Create Buffer objects */
AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers);
/** Delete Buffer objects */
AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers);
/** Verify a handle is a valid Buffer */
AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer);
/** Specifies the data to be copied into a buffer */
AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
/** Set Buffer parameters, */
AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value);
AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);
AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value);
AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values);
/** Get Buffer parameters. */
AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value);
AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
/** Pointer-to-function type, useful for dynamically getting AL entry points. */
typedef void (AL_APIENTRY *LPALENABLE)(ALenum capability);
typedef void (AL_APIENTRY *LPALDISABLE)(ALenum capability);
typedef ALboolean (AL_APIENTRY *LPALISENABLED)(ALenum capability);
typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param);
typedef void (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values);
typedef void (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values);
typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param);
typedef ALint (AL_APIENTRY *LPALGETINTEGER)(ALenum param);
typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)(ALenum param);
typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)(ALenum param);
typedef ALenum (AL_APIENTRY *LPALGETERROR)(void);
typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname);
typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname);
typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename);
typedef void (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value);
typedef void (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
typedef void (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values);
typedef void (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value);
typedef void (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3);
typedef void (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values);
typedef void (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value);
typedef void (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
typedef void (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value);
typedef void (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3);
typedef void (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources);
typedef void (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources);
typedef ALboolean (AL_APIENTRY *LPALISSOURCE)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value);
typedef void (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
typedef void (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values);
typedef void (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value);
typedef void (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
typedef void (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values);
typedef void (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value);
typedef void (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
typedef void (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value);
typedef void (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
typedef void (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCESTOP)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers);
typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers);
typedef void (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers);
typedef void (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers);
typedef ALboolean (AL_APIENTRY *LPALISBUFFER)(ALuint buffer);
typedef void (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
typedef void (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value);
typedef void (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
typedef void (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values);
typedef void (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value);
typedef void (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
typedef void (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values);
typedef void (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value);
typedef void (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
typedef void (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value);
typedef void (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
typedef void (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value);
typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value);
typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value);
typedef void (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel);
#if defined(__cplusplus)
} /* extern "C" */
#endif
#endif /* AL_AL_H */
+237
View File
@@ -0,0 +1,237 @@
#ifndef AL_ALC_H
#define AL_ALC_H
#if defined(__cplusplus)
extern "C" {
#endif
#ifndef ALC_API
#if defined(AL_LIBTYPE_STATIC)
#define ALC_API
#elif defined(_WIN32)
#define ALC_API __declspec(dllimport)
#else
#define ALC_API extern
#endif
#endif
#if defined(_WIN32)
#define ALC_APIENTRY __cdecl
#else
#define ALC_APIENTRY
#endif
/** Deprecated macro. */
#define ALCAPI ALC_API
#define ALCAPIENTRY ALC_APIENTRY
#define ALC_INVALID 0
/** Supported ALC version? */
#define ALC_VERSION_0_1 1
/** Opaque device handle */
typedef struct ALCdevice_struct ALCdevice;
/** Opaque context handle */
typedef struct ALCcontext_struct ALCcontext;
/** 8-bit boolean */
typedef char ALCboolean;
/** character */
typedef char ALCchar;
/** signed 8-bit 2's complement integer */
typedef signed char ALCbyte;
/** unsigned 8-bit integer */
typedef unsigned char ALCubyte;
/** signed 16-bit 2's complement integer */
typedef short ALCshort;
/** unsigned 16-bit integer */
typedef unsigned short ALCushort;
/** signed 32-bit 2's complement integer */
typedef int ALCint;
/** unsigned 32-bit integer */
typedef unsigned int ALCuint;
/** non-negative 32-bit binary integer size */
typedef int ALCsizei;
/** enumerated 32-bit value */
typedef int ALCenum;
/** 32-bit IEEE754 floating-point */
typedef float ALCfloat;
/** 64-bit IEEE754 floating-point */
typedef double ALCdouble;
/** void type (for opaque pointers only) */
typedef void ALCvoid;
/* Enumerant values begin at column 50. No tabs. */
/** Boolean False. */
#define ALC_FALSE 0
/** Boolean True. */
#define ALC_TRUE 1
/** Context attribute: <int> Hz. */
#define ALC_FREQUENCY 0x1007
/** Context attribute: <int> Hz. */
#define ALC_REFRESH 0x1008
/** Context attribute: AL_TRUE or AL_FALSE. */
#define ALC_SYNC 0x1009
/** Context attribute: <int> requested Mono (3D) Sources. */
#define ALC_MONO_SOURCES 0x1010
/** Context attribute: <int> requested Stereo Sources. */
#define ALC_STEREO_SOURCES 0x1011
/** No error. */
#define ALC_NO_ERROR 0
/** Invalid device handle. */
#define ALC_INVALID_DEVICE 0xA001
/** Invalid context handle. */
#define ALC_INVALID_CONTEXT 0xA002
/** Invalid enum parameter passed to an ALC call. */
#define ALC_INVALID_ENUM 0xA003
/** Invalid value parameter passed to an ALC call. */
#define ALC_INVALID_VALUE 0xA004
/** Out of memory. */
#define ALC_OUT_OF_MEMORY 0xA005
/** Runtime ALC version. */
#define ALC_MAJOR_VERSION 0x1000
#define ALC_MINOR_VERSION 0x1001
/** Context attribute list properties. */
#define ALC_ATTRIBUTES_SIZE 0x1002
#define ALC_ALL_ATTRIBUTES 0x1003
/** String for the default device specifier. */
#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004
/**
* String for the given device's specifier.
*
* If device handle is NULL, it is instead a null-char separated list of
* strings of known device specifiers (list ends with an empty string).
*/
#define ALC_DEVICE_SPECIFIER 0x1005
/** String for space-separated list of ALC extensions. */
#define ALC_EXTENSIONS 0x1006
/** Capture extension */
#define ALC_EXT_CAPTURE 1
/**
* String for the given capture device's specifier.
*
* If device handle is NULL, it is instead a null-char separated list of
* strings of known capture device specifiers (list ends with an empty string).
*/
#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310
/** String for the default capture device specifier. */
#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311
/** Number of sample frames available for capture. */
#define ALC_CAPTURE_SAMPLES 0x312
/** Enumerate All extension */
#define ALC_ENUMERATE_ALL_EXT 1
/** String for the default extended device specifier. */
#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012
/**
* String for the given extended device's specifier.
*
* If device handle is NULL, it is instead a null-char separated list of
* strings of known extended device specifiers (list ends with an empty string).
*/
#define ALC_ALL_DEVICES_SPECIFIER 0x1013
/** Context management. */
ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint* attrlist);
ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context);
ALC_API void ALC_APIENTRY alcProcessContext(ALCcontext *context);
ALC_API void ALC_APIENTRY alcSuspendContext(ALCcontext *context);
ALC_API void ALC_APIENTRY alcDestroyContext(ALCcontext *context);
ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void);
ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *context);
/** Device management. */
ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename);
ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device);
/**
* Error support.
*
* Obtain the most recent Device error.
*/
ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device);
/**
* Extension support.
*
* Query for the presence of an extension, and obtain any appropriate
* function pointers and enum values.
*/
ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname);
ALC_API void* ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname);
ALC_API ALCenum ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname);
/** Query function. */
ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param);
ALC_API void ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
/** Capture function. */
ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device);
ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device);
ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device);
ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
/** Pointer-to-function type, useful for dynamically getting ALC entry points. */
typedef ALCcontext* (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist);
typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context);
typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context);
typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context);
typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context);
typedef ALCcontext* (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void);
typedef ALCdevice* (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context);
typedef ALCdevice* (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename);
typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device);
typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device);
typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname);
typedef void* (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname);
typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname);
typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param);
typedef void (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
typedef ALCdevice* (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device);
typedef void (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device);
typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device);
typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
#if defined(__cplusplus)
}
#endif
#endif /* AL_ALC_H */
+400
View File
@@ -0,0 +1,400 @@
/**
* OpenAL cross platform audio library
* Copyright (C) 2008 by authors.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
* Or go to http://www.gnu.org/copyleft/lgpl.html
*/
#ifndef AL_ALEXT_H
#define AL_ALEXT_H
#include <stddef.h>
/* Define int64_t and uint64_t types */
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#include <inttypes.h>
#elif defined(_WIN32) && defined(__GNUC__)
#include <stdint.h>
#elif defined(_WIN32)
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#else
/* Fallback if nothing above works */
#include <inttypes.h>
#endif
#include "alc.h"
#include "al.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef AL_LOKI_IMA_ADPCM_format
#define AL_LOKI_IMA_ADPCM_format 1
#define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000
#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001
#endif
#ifndef AL_LOKI_WAVE_format
#define AL_LOKI_WAVE_format 1
#define AL_FORMAT_WAVE_EXT 0x10002
#endif
#ifndef AL_EXT_vorbis
#define AL_EXT_vorbis 1
#define AL_FORMAT_VORBIS_EXT 0x10003
#endif
#ifndef AL_LOKI_quadriphonic
#define AL_LOKI_quadriphonic 1
#define AL_FORMAT_QUAD8_LOKI 0x10004
#define AL_FORMAT_QUAD16_LOKI 0x10005
#endif
#ifndef AL_EXT_float32
#define AL_EXT_float32 1
#define AL_FORMAT_MONO_FLOAT32 0x10010
#define AL_FORMAT_STEREO_FLOAT32 0x10011
#endif
#ifndef AL_EXT_double
#define AL_EXT_double 1
#define AL_FORMAT_MONO_DOUBLE_EXT 0x10012
#define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013
#endif
#ifndef AL_EXT_MULAW
#define AL_EXT_MULAW 1
#define AL_FORMAT_MONO_MULAW_EXT 0x10014
#define AL_FORMAT_STEREO_MULAW_EXT 0x10015
#endif
#ifndef AL_EXT_ALAW
#define AL_EXT_ALAW 1
#define AL_FORMAT_MONO_ALAW_EXT 0x10016
#define AL_FORMAT_STEREO_ALAW_EXT 0x10017
#endif
#ifndef ALC_LOKI_audio_channel
#define ALC_LOKI_audio_channel 1
#define ALC_CHAN_MAIN_LOKI 0x500001
#define ALC_CHAN_PCM_LOKI 0x500002
#define ALC_CHAN_CD_LOKI 0x500003
#endif
#ifndef AL_EXT_MCFORMATS
#define AL_EXT_MCFORMATS 1
#define AL_FORMAT_QUAD8 0x1204
#define AL_FORMAT_QUAD16 0x1205
#define AL_FORMAT_QUAD32 0x1206
#define AL_FORMAT_REAR8 0x1207
#define AL_FORMAT_REAR16 0x1208
#define AL_FORMAT_REAR32 0x1209
#define AL_FORMAT_51CHN8 0x120A
#define AL_FORMAT_51CHN16 0x120B
#define AL_FORMAT_51CHN32 0x120C
#define AL_FORMAT_61CHN8 0x120D
#define AL_FORMAT_61CHN16 0x120E
#define AL_FORMAT_61CHN32 0x120F
#define AL_FORMAT_71CHN8 0x1210
#define AL_FORMAT_71CHN16 0x1211
#define AL_FORMAT_71CHN32 0x1212
#endif
#ifndef AL_EXT_MULAW_MCFORMATS
#define AL_EXT_MULAW_MCFORMATS 1
#define AL_FORMAT_MONO_MULAW 0x10014
#define AL_FORMAT_STEREO_MULAW 0x10015
#define AL_FORMAT_QUAD_MULAW 0x10021
#define AL_FORMAT_REAR_MULAW 0x10022
#define AL_FORMAT_51CHN_MULAW 0x10023
#define AL_FORMAT_61CHN_MULAW 0x10024
#define AL_FORMAT_71CHN_MULAW 0x10025
#endif
#ifndef AL_EXT_IMA4
#define AL_EXT_IMA4 1
#define AL_FORMAT_MONO_IMA4 0x1300
#define AL_FORMAT_STEREO_IMA4 0x1301
#endif
#ifndef AL_EXT_STATIC_BUFFER
#define AL_EXT_STATIC_BUFFER 1
typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
#endif
#endif
#ifndef ALC_EXT_EFX
#define ALC_EXT_EFX 1
#include "efx.h"
#endif
#ifndef ALC_EXT_disconnect
#define ALC_EXT_disconnect 1
#define ALC_CONNECTED 0x313
#endif
#ifndef ALC_EXT_thread_local_context
#define ALC_EXT_thread_local_context 1
typedef ALCboolean (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context);
typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void);
#ifdef AL_ALEXT_PROTOTYPES
ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
#endif
#endif
#ifndef AL_EXT_source_distance_model
#define AL_EXT_source_distance_model 1
#define AL_SOURCE_DISTANCE_MODEL 0x200
#endif
#ifndef AL_SOFT_buffer_sub_data
#define AL_SOFT_buffer_sub_data 1
#define AL_BYTE_RW_OFFSETS_SOFT 0x1031
#define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032
typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
#endif
#endif
#ifndef AL_SOFT_loop_points
#define AL_SOFT_loop_points 1
#define AL_LOOP_POINTS_SOFT 0x2015
#endif
#ifndef AL_EXT_FOLDBACK
#define AL_EXT_FOLDBACK 1
#define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK"
#define AL_FOLDBACK_EVENT_BLOCK 0x4112
#define AL_FOLDBACK_EVENT_START 0x4111
#define AL_FOLDBACK_EVENT_STOP 0x4113
#define AL_FOLDBACK_MODE_MONO 0x4101
#define AL_FOLDBACK_MODE_STEREO 0x4102
typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
#ifdef AL_ALEXT_PROTOTYPES
AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
AL_API void AL_APIENTRY alRequestFoldbackStop(void);
#endif
#endif
#ifndef ALC_EXT_DEDICATED
#define ALC_EXT_DEDICATED 1
#define AL_DEDICATED_GAIN 0x0001
#define AL_EFFECT_DEDICATED_DIALOGUE 0x9001
#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
#endif
#ifndef AL_SOFT_buffer_samples
#define AL_SOFT_buffer_samples 1
/* Channel configurations */
#define AL_MONO_SOFT 0x1500
#define AL_STEREO_SOFT 0x1501
#define AL_REAR_SOFT 0x1502
#define AL_QUAD_SOFT 0x1503
#define AL_5POINT1_SOFT 0x1504
#define AL_6POINT1_SOFT 0x1505
#define AL_7POINT1_SOFT 0x1506
/* Sample types */
#define AL_BYTE_SOFT 0x1400
#define AL_UNSIGNED_BYTE_SOFT 0x1401
#define AL_SHORT_SOFT 0x1402
#define AL_UNSIGNED_SHORT_SOFT 0x1403
#define AL_INT_SOFT 0x1404
#define AL_UNSIGNED_INT_SOFT 0x1405
#define AL_FLOAT_SOFT 0x1406
#define AL_DOUBLE_SOFT 0x1407
#define AL_BYTE3_SOFT 0x1408
#define AL_UNSIGNED_BYTE3_SOFT 0x1409
/* Storage formats */
#define AL_MONO8_SOFT 0x1100
#define AL_MONO16_SOFT 0x1101
#define AL_MONO32F_SOFT 0x10010
#define AL_STEREO8_SOFT 0x1102
#define AL_STEREO16_SOFT 0x1103
#define AL_STEREO32F_SOFT 0x10011
#define AL_QUAD8_SOFT 0x1204
#define AL_QUAD16_SOFT 0x1205
#define AL_QUAD32F_SOFT 0x1206
#define AL_REAR8_SOFT 0x1207
#define AL_REAR16_SOFT 0x1208
#define AL_REAR32F_SOFT 0x1209
#define AL_5POINT1_8_SOFT 0x120A
#define AL_5POINT1_16_SOFT 0x120B
#define AL_5POINT1_32F_SOFT 0x120C
#define AL_6POINT1_8_SOFT 0x120D
#define AL_6POINT1_16_SOFT 0x120E
#define AL_6POINT1_32F_SOFT 0x120F
#define AL_7POINT1_8_SOFT 0x1210
#define AL_7POINT1_16_SOFT 0x1211
#define AL_7POINT1_32F_SOFT 0x1212
/* Buffer attributes */
#define AL_INTERNAL_FORMAT_SOFT 0x2008
#define AL_BYTE_LENGTH_SOFT 0x2009
#define AL_SAMPLE_LENGTH_SOFT 0x200A
#define AL_SEC_LENGTH_SOFT 0x200B
typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
#ifdef AL_ALEXT_PROTOTYPES
AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
#endif
#endif
#ifndef AL_SOFT_direct_channels
#define AL_SOFT_direct_channels 1
#define AL_DIRECT_CHANNELS_SOFT 0x1033
#endif
#ifndef ALC_SOFT_loopback
#define ALC_SOFT_loopback 1
#define ALC_FORMAT_CHANNELS_SOFT 0x1990
#define ALC_FORMAT_TYPE_SOFT 0x1991
/* Sample types */
#define ALC_BYTE_SOFT 0x1400
#define ALC_UNSIGNED_BYTE_SOFT 0x1401
#define ALC_SHORT_SOFT 0x1402
#define ALC_UNSIGNED_SHORT_SOFT 0x1403
#define ALC_INT_SOFT 0x1404
#define ALC_UNSIGNED_INT_SOFT 0x1405
#define ALC_FLOAT_SOFT 0x1406
/* Channel configurations */
#define ALC_MONO_SOFT 0x1500
#define ALC_STEREO_SOFT 0x1501
#define ALC_QUAD_SOFT 0x1503
#define ALC_5POINT1_SOFT 0x1504
#define ALC_6POINT1_SOFT 0x1505
#define ALC_7POINT1_SOFT 0x1506
typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
#ifdef AL_ALEXT_PROTOTYPES
ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
#endif
#endif
#ifndef AL_EXT_STEREO_ANGLES
#define AL_EXT_STEREO_ANGLES 1
#define AL_STEREO_ANGLES 0x1030
#endif
#ifndef AL_EXT_SOURCE_RADIUS
#define AL_EXT_SOURCE_RADIUS 1
#define AL_SOURCE_RADIUS 0x1031
#endif
#ifndef AL_SOFT_source_latency
#define AL_SOFT_source_latency 1
#define AL_SAMPLE_OFFSET_LATENCY_SOFT 0x1200
#define AL_SEC_OFFSET_LATENCY_SOFT 0x1201
typedef int64_t ALint64SOFT;
typedef uint64_t ALuint64SOFT;
typedef void (AL_APIENTRY*LPALSOURCEDSOFT)(ALuint,ALenum,ALdouble);
typedef void (AL_APIENTRY*LPALSOURCE3DSOFT)(ALuint,ALenum,ALdouble,ALdouble,ALdouble);
typedef void (AL_APIENTRY*LPALSOURCEDVSOFT)(ALuint,ALenum,const ALdouble*);
typedef void (AL_APIENTRY*LPALGETSOURCEDSOFT)(ALuint,ALenum,ALdouble*);
typedef void (AL_APIENTRY*LPALGETSOURCE3DSOFT)(ALuint,ALenum,ALdouble*,ALdouble*,ALdouble*);
typedef void (AL_APIENTRY*LPALGETSOURCEDVSOFT)(ALuint,ALenum,ALdouble*);
typedef void (AL_APIENTRY*LPALSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT);
typedef void (AL_APIENTRY*LPALSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT,ALint64SOFT,ALint64SOFT);
typedef void (AL_APIENTRY*LPALSOURCEI64VSOFT)(ALuint,ALenum,const ALint64SOFT*);
typedef void (AL_APIENTRY*LPALGETSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT*);
typedef void (AL_APIENTRY*LPALGETSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT*,ALint64SOFT*,ALint64SOFT*);
typedef void (AL_APIENTRY*LPALGETSOURCEI64VSOFT)(ALuint,ALenum,ALint64SOFT*);
#ifdef AL_ALEXT_PROTOTYPES
AL_API void AL_APIENTRY alSourcedSOFT(ALuint source, ALenum param, ALdouble value);
AL_API void AL_APIENTRY alSource3dSOFT(ALuint source, ALenum param, ALdouble value1, ALdouble value2, ALdouble value3);
AL_API void AL_APIENTRY alSourcedvSOFT(ALuint source, ALenum param, const ALdouble *values);
AL_API void AL_APIENTRY alGetSourcedSOFT(ALuint source, ALenum param, ALdouble *value);
AL_API void AL_APIENTRY alGetSource3dSOFT(ALuint source, ALenum param, ALdouble *value1, ALdouble *value2, ALdouble *value3);
AL_API void AL_APIENTRY alGetSourcedvSOFT(ALuint source, ALenum param, ALdouble *values);
AL_API void AL_APIENTRY alSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT value);
AL_API void AL_APIENTRY alSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT value1, ALint64SOFT value2, ALint64SOFT value3);
AL_API void AL_APIENTRY alSourcei64vSOFT(ALuint source, ALenum param, const ALint64SOFT *values);
AL_API void AL_APIENTRY alGetSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT *value);
AL_API void AL_APIENTRY alGetSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT *value1, ALint64SOFT *value2, ALint64SOFT *value3);
AL_API void AL_APIENTRY alGetSourcei64vSOFT(ALuint source, ALenum param, ALint64SOFT *values);
#endif
#endif
#ifndef ALC_EXT_DEFAULT_FILTER_ORDER
#define ALC_EXT_DEFAULT_FILTER_ORDER 1
#define ALC_DEFAULT_FILTER_ORDER 0x1100
#endif
#ifndef AL_SOFT_deferred_updates
#define AL_SOFT_deferred_updates 1
#define AL_DEFERRED_UPDATES_SOFT 0xC002
typedef ALvoid (AL_APIENTRY*LPALDEFERUPDATESSOFT)(void);
typedef ALvoid (AL_APIENTRY*LPALPROCESSUPDATESSOFT)(void);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void);
AL_API ALvoid AL_APIENTRY alProcessUpdatesSOFT(void);
#endif
#endif
#ifndef AL_SOFT_block_alignment
#define AL_SOFT_block_alignment 1
#define AL_UNPACK_BLOCK_ALIGNMENT_SOFT 0x200C
#define AL_PACK_BLOCK_ALIGNMENT_SOFT 0x200D
#endif
#ifndef AL_SOFT_MSADPCM
#define AL_SOFT_MSADPCM 1
#define AL_FORMAT_MONO_MSADPCM_SOFT 0x1302
#define AL_FORMAT_STEREO_MSADPCM_SOFT 0x1303
#endif
#ifndef AL_SOFT_source_length
#define AL_SOFT_source_length 1
/*#define AL_BYTE_LENGTH_SOFT 0x2009*/
/*#define AL_SAMPLE_LENGTH_SOFT 0x200A*/
/*#define AL_SEC_LENGTH_SOFT 0x200B*/
#endif
#ifndef ALC_SOFT_pause_device
#define ALC_SOFT_pause_device 1
typedef void (ALC_APIENTRY*LPALCDEVICEPAUSESOFT)(ALCdevice *device);
typedef void (ALC_APIENTRY*LPALCDEVICERESUMESOFT)(ALCdevice *device);
#ifdef AL_ALEXT_PROTOTYPES
ALC_API void ALC_APIENTRY alcDevicePauseSOFT(ALCdevice *device);
ALC_API void ALC_APIENTRY alcDeviceResumeSOFT(ALCdevice *device);
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif
+3
View File
@@ -0,0 +1,3 @@
/* The tokens that would be defined here are already defined in efx.h. This
* empty file is here to provide compatibility with Windows-based projects
* that would include it. */
+402
View File
@@ -0,0 +1,402 @@
/* Reverb presets for EFX */
#ifndef EFX_PRESETS_H
#define EFX_PRESETS_H
#ifndef EFXEAXREVERBPROPERTIES_DEFINED
#define EFXEAXREVERBPROPERTIES_DEFINED
typedef struct {
float flDensity;
float flDiffusion;
float flGain;
float flGainHF;
float flGainLF;
float flDecayTime;
float flDecayHFRatio;
float flDecayLFRatio;
float flReflectionsGain;
float flReflectionsDelay;
float flReflectionsPan[3];
float flLateReverbGain;
float flLateReverbDelay;
float flLateReverbPan[3];
float flEchoTime;
float flEchoDepth;
float flModulationTime;
float flModulationDepth;
float flAirAbsorptionGainHF;
float flHFReference;
float flLFReference;
float flRoomRolloffFactor;
int iDecayHFLimit;
} EFXEAXREVERBPROPERTIES, *LPEFXEAXREVERBPROPERTIES;
#endif
/* Default Presets */
#define EFX_REVERB_PRESET_GENERIC \
{ 1.0000f, 1.0000f, 0.3162f, 0.8913f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PADDEDCELL \
{ 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, { 0.0000f, 0.0000f, 0.0000f }, 1.2691f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ROOM \
{ 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.0629f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_BATHROOM \
{ 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 3.2734f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_LIVINGROOM \
{ 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2805f, 0.0040f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_STONEROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1003f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_AUDITORIUM \
{ 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7170f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CONCERTHALL \
{ 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.9977f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CAVE \
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.7063f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_ARENA \
{ 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.0186f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_HANGAR \
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2560f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CARPETEDHALLWAY \
{ 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.1531f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_HALLWAY \
{ 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.6615f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_STONECORRIDOR \
{ 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 1.5758f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ALLEY \
{ 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.9954f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FOREST \
{ 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, { 0.0000f, 0.0000f, 0.0000f }, 0.7682f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY \
{ 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1427f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_MOUNTAINS \
{ 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, { 0.0000f, 0.0000f, 0.0000f }, 0.1919f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_QUARRY \
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PLAIN \
{ 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, { 0.0000f, 0.0000f, 0.0000f }, 0.1089f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PARKINGLOT \
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, { 0.0000f, 0.0000f, 0.0000f }, 0.2652f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_SEWERPIPE \
{ 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, { 0.0000f, 0.0000f, 0.0000f }, 3.2471f, 0.0210f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_UNDERWATER \
{ 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 7.0795f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRUGGED \
{ 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 3.1081f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DIZZY \
{ 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4937f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PSYCHOTIC \
{ 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
/* Castle Presets */
#define EFX_REVERB_PRESET_CASTLE_SMALLROOM \
{ 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 1.2200f, 0.8300f, 0.3100f, 0.8913f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_SHORTPASSAGE \
{ 1.0000f, 0.8900f, 0.3162f, 0.3162f, 0.1000f, 2.3200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_MEDIUMROOM \
{ 1.0000f, 0.9300f, 0.3162f, 0.2818f, 0.1000f, 2.0400f, 0.8300f, 0.4600f, 0.6310f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1550f, 0.0300f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_LARGEROOM \
{ 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.1259f, 2.5300f, 0.8300f, 0.5000f, 0.4467f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1850f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_LONGPASSAGE \
{ 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 3.4200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_HALL \
{ 1.0000f, 0.8100f, 0.3162f, 0.2818f, 0.1778f, 3.1400f, 0.7900f, 0.6200f, 0.1778f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_CUPBOARD \
{ 1.0000f, 0.8900f, 0.3162f, 0.2818f, 0.1000f, 0.6700f, 0.8700f, 0.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 3.5481f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_COURTYARD \
{ 1.0000f, 0.4200f, 0.3162f, 0.4467f, 0.1995f, 2.1300f, 0.6100f, 0.2300f, 0.2239f, 0.1600f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3700f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_CASTLE_ALCOVE \
{ 1.0000f, 0.8900f, 0.3162f, 0.5012f, 0.1000f, 1.6400f, 0.8700f, 0.3100f, 1.0000f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
/* Factory Presets */
#define EFX_REVERB_PRESET_FACTORY_SMALLROOM \
{ 0.3645f, 0.8200f, 0.3162f, 0.7943f, 0.5012f, 1.7200f, 0.6500f, 1.3100f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.1190f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_SHORTPASSAGE \
{ 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 2.5300f, 0.6500f, 1.3100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_MEDIUMROOM \
{ 0.4287f, 0.8200f, 0.2512f, 0.7943f, 0.5012f, 2.7600f, 0.6500f, 1.3100f, 0.2818f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1740f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_LARGEROOM \
{ 0.4287f, 0.7500f, 0.2512f, 0.7079f, 0.6310f, 4.2400f, 0.5100f, 1.3100f, 0.1778f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2310f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_LONGPASSAGE \
{ 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 4.0600f, 0.6500f, 1.3100f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_HALL \
{ 0.4287f, 0.7500f, 0.3162f, 0.7079f, 0.6310f, 7.4300f, 0.5100f, 1.3100f, 0.0631f, 0.0730f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_CUPBOARD \
{ 0.3071f, 0.6300f, 0.2512f, 0.7943f, 0.5012f, 0.4900f, 0.6500f, 1.3100f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.1070f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_COURTYARD \
{ 0.3071f, 0.5700f, 0.3162f, 0.3162f, 0.6310f, 2.3200f, 0.2900f, 0.5600f, 0.2239f, 0.1400f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2900f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_ALCOVE \
{ 0.3645f, 0.5900f, 0.2512f, 0.7943f, 0.5012f, 3.1400f, 0.6500f, 1.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1140f, 0.1000f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
/* Ice Palace Presets */
#define EFX_REVERB_PRESET_ICEPALACE_SMALLROOM \
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 1.5100f, 1.5300f, 0.2700f, 0.8913f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1640f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE \
{ 1.0000f, 0.7500f, 0.3162f, 0.5623f, 0.2818f, 1.7900f, 1.4600f, 0.2800f, 0.5012f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM \
{ 1.0000f, 0.8700f, 0.3162f, 0.5623f, 0.4467f, 2.2200f, 1.5300f, 0.3200f, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_LARGEROOM \
{ 1.0000f, 0.8100f, 0.3162f, 0.5623f, 0.4467f, 3.1400f, 1.5300f, 0.3200f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE \
{ 1.0000f, 0.7700f, 0.3162f, 0.5623f, 0.3981f, 3.0100f, 1.4600f, 0.2800f, 0.7943f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.0400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_HALL \
{ 1.0000f, 0.7600f, 0.3162f, 0.4467f, 0.5623f, 5.4900f, 1.5300f, 0.3800f, 0.1122f, 0.0540f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0520f, { 0.0000f, 0.0000f, 0.0000f }, 0.2260f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_CUPBOARD \
{ 1.0000f, 0.8300f, 0.3162f, 0.5012f, 0.2239f, 0.7600f, 1.5300f, 0.2600f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1430f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_COURTYARD \
{ 1.0000f, 0.5900f, 0.3162f, 0.2818f, 0.3162f, 2.0400f, 1.2000f, 0.3800f, 0.3162f, 0.1730f, { 0.0000f, 0.0000f, 0.0000f }, 0.3162f, 0.0430f, { 0.0000f, 0.0000f, 0.0000f }, 0.2350f, 0.4800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_ALCOVE \
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 2.7600f, 1.4600f, 0.2800f, 1.1220f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1610f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
/* Space Station Presets */
#define EFX_REVERB_PRESET_SPACESTATION_SMALLROOM \
{ 0.2109f, 0.7000f, 0.3162f, 0.7079f, 0.8913f, 1.7200f, 0.8200f, 0.5500f, 0.7943f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 0.1880f, 0.2600f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE \
{ 0.2109f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 3.5700f, 0.5000f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1720f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM \
{ 0.2109f, 0.7500f, 0.3162f, 0.6310f, 0.8913f, 3.0100f, 0.5000f, 0.5500f, 0.3981f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2090f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_LARGEROOM \
{ 0.3645f, 0.8100f, 0.3162f, 0.6310f, 0.8913f, 3.8900f, 0.3800f, 0.6100f, 0.3162f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2330f, 0.2800f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE \
{ 0.4287f, 0.8200f, 0.3162f, 0.6310f, 0.8913f, 4.6200f, 0.6200f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_HALL \
{ 0.4287f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 7.1100f, 0.3800f, 0.6100f, 0.1778f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2500f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_CUPBOARD \
{ 0.1715f, 0.5600f, 0.3162f, 0.7079f, 0.8913f, 0.7900f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1810f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_ALCOVE \
{ 0.2109f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.1600f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1920f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
/* Wooden Galleon Presets */
#define EFX_REVERB_PRESET_WOODEN_SMALLROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.1122f, 0.3162f, 0.7900f, 0.3200f, 0.8700f, 1.0000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_SHORTPASSAGE \
{ 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.7500f, 0.5000f, 0.8700f, 0.8913f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_MEDIUMROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.2818f, 1.4700f, 0.4200f, 0.8200f, 0.8913f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_LARGEROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.2818f, 2.6500f, 0.3300f, 0.8200f, 0.8913f, 0.0660f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_LONGPASSAGE \
{ 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.3162f, 1.9900f, 0.4000f, 0.7900f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4467f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_HALL \
{ 1.0000f, 1.0000f, 0.3162f, 0.0794f, 0.2818f, 3.4500f, 0.3000f, 0.8200f, 0.8913f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_CUPBOARD \
{ 1.0000f, 1.0000f, 0.3162f, 0.1413f, 0.3162f, 0.5600f, 0.4600f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_COURTYARD \
{ 1.0000f, 0.6500f, 0.3162f, 0.0794f, 0.3162f, 1.7900f, 0.3500f, 0.7900f, 0.5623f, 0.1230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_ALCOVE \
{ 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.2200f, 0.6200f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
/* Sports Presets */
#define EFX_REVERB_PRESET_SPORT_EMPTYSTADIUM \
{ 1.0000f, 1.0000f, 0.3162f, 0.4467f, 0.7943f, 6.2600f, 0.5100f, 1.1000f, 0.0631f, 0.1830f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_SQUASHCOURT \
{ 1.0000f, 0.7500f, 0.3162f, 0.3162f, 0.7943f, 2.2200f, 0.9100f, 1.1600f, 0.4467f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1260f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \
{ 1.0000f, 0.7000f, 0.3162f, 0.7943f, 0.8913f, 2.7600f, 1.2500f, 1.1400f, 0.6310f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL \
{ 1.0000f, 0.8200f, 0.3162f, 0.7943f, 1.0000f, 5.4900f, 1.3100f, 1.1400f, 0.4467f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2220f, 0.5500f, 1.1590f, 0.2100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_SPORT_GYMNASIUM \
{ 1.0000f, 0.8100f, 0.3162f, 0.4467f, 0.8913f, 3.1400f, 1.0600f, 1.3500f, 0.3981f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0450f, { 0.0000f, 0.0000f, 0.0000f }, 0.1460f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_FULLSTADIUM \
{ 1.0000f, 1.0000f, 0.3162f, 0.0708f, 0.7943f, 5.2500f, 0.1700f, 0.8000f, 0.1000f, 0.1880f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_STADIUMTANNOY \
{ 1.0000f, 0.7800f, 0.3162f, 0.5623f, 0.5012f, 2.5300f, 0.8800f, 0.6800f, 0.2818f, 0.2300f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
/* Prefab Presets */
#define EFX_REVERB_PRESET_PREFAB_WORKSHOP \
{ 0.4287f, 1.0000f, 0.3162f, 0.1413f, 0.3981f, 0.7600f, 1.0000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PREFAB_SCHOOLROOM \
{ 0.4022f, 0.6900f, 0.3162f, 0.6310f, 0.5012f, 0.9800f, 0.4500f, 0.1800f, 1.4125f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PREFAB_PRACTISEROOM \
{ 0.4022f, 0.8700f, 0.3162f, 0.3981f, 0.5012f, 1.1200f, 0.5600f, 0.1800f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PREFAB_OUTHOUSE \
{ 1.0000f, 0.8200f, 0.3162f, 0.1122f, 0.1585f, 1.3800f, 0.3800f, 0.3500f, 0.8913f, 0.0240f, { 0.0000f, 0.0000f, -0.0000f }, 0.6310f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.1210f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PREFAB_CARAVAN \
{ 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.1259f, 0.4300f, 1.5000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
/* Dome and Pipe Presets */
#define EFX_REVERB_PRESET_DOME_TOMB \
{ 1.0000f, 0.7900f, 0.3162f, 0.3548f, 0.2239f, 4.1800f, 0.2100f, 0.1000f, 0.3868f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 1.6788f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PIPE_SMALL \
{ 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 5.0400f, 0.1000f, 0.1000f, 0.5012f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 2.5119f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DOME_SAINTPAULS \
{ 1.0000f, 0.8700f, 0.3162f, 0.3548f, 0.2239f, 10.4800f, 0.1900f, 0.1000f, 0.1778f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0420f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PIPE_LONGTHIN \
{ 0.2560f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 9.2100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PIPE_LARGE \
{ 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 8.4500f, 0.1000f, 0.1000f, 0.3981f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PIPE_RESONANT \
{ 0.1373f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 6.8100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
/* Outdoors Presets */
#define EFX_REVERB_PRESET_OUTDOORS_BACKYARD \
{ 1.0000f, 0.4500f, 0.3162f, 0.2512f, 0.5012f, 1.1200f, 0.3400f, 0.4600f, 0.4467f, 0.0690f, { 0.0000f, 0.0000f, -0.0000f }, 0.7079f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \
{ 1.0000f, 0.0000f, 0.3162f, 0.0112f, 0.6310f, 2.1300f, 0.2100f, 0.4600f, 0.1778f, 0.3000f, { 0.0000f, 0.0000f, -0.0000f }, 0.4467f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_DEEPCANYON \
{ 1.0000f, 0.7400f, 0.3162f, 0.1778f, 0.6310f, 3.8900f, 0.2100f, 0.4600f, 0.3162f, 0.2230f, { 0.0000f, 0.0000f, -0.0000f }, 0.3548f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_CREEK \
{ 1.0000f, 0.3500f, 0.3162f, 0.1778f, 0.5012f, 2.1300f, 0.2100f, 0.4600f, 0.3981f, 0.1150f, { 0.0000f, 0.0000f, -0.0000f }, 0.1995f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_VALLEY \
{ 1.0000f, 0.2800f, 0.3162f, 0.0282f, 0.1585f, 2.8800f, 0.2600f, 0.3500f, 0.1413f, 0.2630f, { 0.0000f, 0.0000f, -0.0000f }, 0.3981f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
/* Mood Presets */
#define EFX_REVERB_PRESET_MOOD_HEAVEN \
{ 1.0000f, 0.9400f, 0.3162f, 0.7943f, 0.4467f, 5.0400f, 1.1200f, 0.5600f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0800f, 2.7420f, 0.0500f, 0.9977f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_MOOD_HELL \
{ 1.0000f, 0.5700f, 0.3162f, 0.3548f, 0.4467f, 3.5700f, 0.4900f, 2.0000f, 0.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1100f, 0.0400f, 2.1090f, 0.5200f, 0.9943f, 5000.0000f, 139.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_MOOD_MEMORY \
{ 1.0000f, 0.8500f, 0.3162f, 0.6310f, 0.3548f, 4.0600f, 0.8200f, 0.5600f, 0.0398f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.4740f, 0.4500f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
/* Driving Presets */
#define EFX_REVERB_PRESET_DRIVING_COMMENTATOR \
{ 1.0000f, 0.0000f, 3.1623f, 0.5623f, 0.5012f, 2.4200f, 0.8800f, 0.6800f, 0.1995f, 0.0930f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_PITGARAGE \
{ 0.4287f, 0.5900f, 0.3162f, 0.7079f, 0.5623f, 1.7200f, 0.9300f, 0.8700f, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DRIVING_INCAR_RACER \
{ 0.0832f, 0.8000f, 0.3162f, 1.0000f, 0.7943f, 0.1700f, 2.0000f, 0.4100f, 1.7783f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_INCAR_SPORTS \
{ 0.0832f, 0.8000f, 0.3162f, 0.6310f, 1.0000f, 0.1700f, 0.7500f, 0.4100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_INCAR_LUXURY \
{ 0.2560f, 1.0000f, 0.3162f, 0.1000f, 0.5012f, 0.1300f, 0.4100f, 0.4600f, 0.7943f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND \
{ 1.0000f, 1.0000f, 0.3162f, 0.2818f, 0.6310f, 3.0100f, 1.3700f, 1.2800f, 0.3548f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.1778f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 0.7943f, 4.6200f, 1.7500f, 1.4000f, 0.2082f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DRIVING_TUNNEL \
{ 1.0000f, 0.8100f, 0.3162f, 0.3981f, 0.8913f, 3.4200f, 0.9400f, 1.3100f, 0.7079f, 0.0510f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.0500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 155.3000f, 0.0000f, 0x1 }
/* City Presets */
#define EFX_REVERB_PRESET_CITY_STREETS \
{ 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 0.1995f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY_SUBWAY \
{ 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY_MUSEUM \
{ 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_CITY_LIBRARY \
{ 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_CITY_UNDERPASS \
{ 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY_ABANDONED \
{ 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
/* Misc. Presets */
#define EFX_REVERB_PRESET_DUSTYROOM \
{ 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0060f, { 0.0000f, 0.0000f, 0.0000f }, 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CHAPEL \
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SMALLWATERROOM \
{ 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#endif /* EFX_PRESETS_H */
+761
View File
@@ -0,0 +1,761 @@
#ifndef AL_EFX_H
#define AL_EFX_H
#include "alc.h"
#include "al.h"
#ifdef __cplusplus
extern "C" {
#endif
#define ALC_EXT_EFX_NAME "ALC_EXT_EFX"
#define ALC_EFX_MAJOR_VERSION 0x20001
#define ALC_EFX_MINOR_VERSION 0x20002
#define ALC_MAX_AUXILIARY_SENDS 0x20003
/* Listener properties. */
#define AL_METERS_PER_UNIT 0x20004
/* Source properties. */
#define AL_DIRECT_FILTER 0x20005
#define AL_AUXILIARY_SEND_FILTER 0x20006
#define AL_AIR_ABSORPTION_FACTOR 0x20007
#define AL_ROOM_ROLLOFF_FACTOR 0x20008
#define AL_CONE_OUTER_GAINHF 0x20009
#define AL_DIRECT_FILTER_GAINHF_AUTO 0x2000A
#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B
#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C
/* Effect properties. */
/* Reverb effect parameters */
#define AL_REVERB_DENSITY 0x0001
#define AL_REVERB_DIFFUSION 0x0002
#define AL_REVERB_GAIN 0x0003
#define AL_REVERB_GAINHF 0x0004
#define AL_REVERB_DECAY_TIME 0x0005
#define AL_REVERB_DECAY_HFRATIO 0x0006
#define AL_REVERB_REFLECTIONS_GAIN 0x0007
#define AL_REVERB_REFLECTIONS_DELAY 0x0008
#define AL_REVERB_LATE_REVERB_GAIN 0x0009
#define AL_REVERB_LATE_REVERB_DELAY 0x000A
#define AL_REVERB_AIR_ABSORPTION_GAINHF 0x000B
#define AL_REVERB_ROOM_ROLLOFF_FACTOR 0x000C
#define AL_REVERB_DECAY_HFLIMIT 0x000D
/* EAX Reverb effect parameters */
#define AL_EAXREVERB_DENSITY 0x0001
#define AL_EAXREVERB_DIFFUSION 0x0002
#define AL_EAXREVERB_GAIN 0x0003
#define AL_EAXREVERB_GAINHF 0x0004
#define AL_EAXREVERB_GAINLF 0x0005
#define AL_EAXREVERB_DECAY_TIME 0x0006
#define AL_EAXREVERB_DECAY_HFRATIO 0x0007
#define AL_EAXREVERB_DECAY_LFRATIO 0x0008
#define AL_EAXREVERB_REFLECTIONS_GAIN 0x0009
#define AL_EAXREVERB_REFLECTIONS_DELAY 0x000A
#define AL_EAXREVERB_REFLECTIONS_PAN 0x000B
#define AL_EAXREVERB_LATE_REVERB_GAIN 0x000C
#define AL_EAXREVERB_LATE_REVERB_DELAY 0x000D
#define AL_EAXREVERB_LATE_REVERB_PAN 0x000E
#define AL_EAXREVERB_ECHO_TIME 0x000F
#define AL_EAXREVERB_ECHO_DEPTH 0x0010
#define AL_EAXREVERB_MODULATION_TIME 0x0011
#define AL_EAXREVERB_MODULATION_DEPTH 0x0012
#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF 0x0013
#define AL_EAXREVERB_HFREFERENCE 0x0014
#define AL_EAXREVERB_LFREFERENCE 0x0015
#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR 0x0016
#define AL_EAXREVERB_DECAY_HFLIMIT 0x0017
/* Chorus effect parameters */
#define AL_CHORUS_WAVEFORM 0x0001
#define AL_CHORUS_PHASE 0x0002
#define AL_CHORUS_RATE 0x0003
#define AL_CHORUS_DEPTH 0x0004
#define AL_CHORUS_FEEDBACK 0x0005
#define AL_CHORUS_DELAY 0x0006
/* Distortion effect parameters */
#define AL_DISTORTION_EDGE 0x0001
#define AL_DISTORTION_GAIN 0x0002
#define AL_DISTORTION_LOWPASS_CUTOFF 0x0003
#define AL_DISTORTION_EQCENTER 0x0004
#define AL_DISTORTION_EQBANDWIDTH 0x0005
/* Echo effect parameters */
#define AL_ECHO_DELAY 0x0001
#define AL_ECHO_LRDELAY 0x0002
#define AL_ECHO_DAMPING 0x0003
#define AL_ECHO_FEEDBACK 0x0004
#define AL_ECHO_SPREAD 0x0005
/* Flanger effect parameters */
#define AL_FLANGER_WAVEFORM 0x0001
#define AL_FLANGER_PHASE 0x0002
#define AL_FLANGER_RATE 0x0003
#define AL_FLANGER_DEPTH 0x0004
#define AL_FLANGER_FEEDBACK 0x0005
#define AL_FLANGER_DELAY 0x0006
/* Frequency shifter effect parameters */
#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001
#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002
#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003
/* Vocal morpher effect parameters */
#define AL_VOCAL_MORPHER_PHONEMEA 0x0001
#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002
#define AL_VOCAL_MORPHER_PHONEMEB 0x0003
#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004
#define AL_VOCAL_MORPHER_WAVEFORM 0x0005
#define AL_VOCAL_MORPHER_RATE 0x0006
/* Pitchshifter effect parameters */
#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001
#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002
/* Ringmodulator effect parameters */
#define AL_RING_MODULATOR_FREQUENCY 0x0001
#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002
#define AL_RING_MODULATOR_WAVEFORM 0x0003
/* Autowah effect parameters */
#define AL_AUTOWAH_ATTACK_TIME 0x0001
#define AL_AUTOWAH_RELEASE_TIME 0x0002
#define AL_AUTOWAH_RESONANCE 0x0003
#define AL_AUTOWAH_PEAK_GAIN 0x0004
/* Compressor effect parameters */
#define AL_COMPRESSOR_ONOFF 0x0001
/* Equalizer effect parameters */
#define AL_EQUALIZER_LOW_GAIN 0x0001
#define AL_EQUALIZER_LOW_CUTOFF 0x0002
#define AL_EQUALIZER_MID1_GAIN 0x0003
#define AL_EQUALIZER_MID1_CENTER 0x0004
#define AL_EQUALIZER_MID1_WIDTH 0x0005
#define AL_EQUALIZER_MID2_GAIN 0x0006
#define AL_EQUALIZER_MID2_CENTER 0x0007
#define AL_EQUALIZER_MID2_WIDTH 0x0008
#define AL_EQUALIZER_HIGH_GAIN 0x0009
#define AL_EQUALIZER_HIGH_CUTOFF 0x000A
/* Effect type */
#define AL_EFFECT_FIRST_PARAMETER 0x0000
#define AL_EFFECT_LAST_PARAMETER 0x8000
#define AL_EFFECT_TYPE 0x8001
/* Effect types, used with the AL_EFFECT_TYPE property */
#define AL_EFFECT_NULL 0x0000
#define AL_EFFECT_REVERB 0x0001
#define AL_EFFECT_CHORUS 0x0002
#define AL_EFFECT_DISTORTION 0x0003
#define AL_EFFECT_ECHO 0x0004
#define AL_EFFECT_FLANGER 0x0005
#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006
#define AL_EFFECT_VOCAL_MORPHER 0x0007
#define AL_EFFECT_PITCH_SHIFTER 0x0008
#define AL_EFFECT_RING_MODULATOR 0x0009
#define AL_EFFECT_AUTOWAH 0x000A
#define AL_EFFECT_COMPRESSOR 0x000B
#define AL_EFFECT_EQUALIZER 0x000C
#define AL_EFFECT_EAXREVERB 0x8000
/* Auxiliary Effect Slot properties. */
#define AL_EFFECTSLOT_EFFECT 0x0001
#define AL_EFFECTSLOT_GAIN 0x0002
#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003
/* NULL Auxiliary Slot ID to disable a source send. */
#define AL_EFFECTSLOT_NULL 0x0000
/* Filter properties. */
/* Lowpass filter parameters */
#define AL_LOWPASS_GAIN 0x0001
#define AL_LOWPASS_GAINHF 0x0002
/* Highpass filter parameters */
#define AL_HIGHPASS_GAIN 0x0001
#define AL_HIGHPASS_GAINLF 0x0002
/* Bandpass filter parameters */
#define AL_BANDPASS_GAIN 0x0001
#define AL_BANDPASS_GAINLF 0x0002
#define AL_BANDPASS_GAINHF 0x0003
/* Filter type */
#define AL_FILTER_FIRST_PARAMETER 0x0000
#define AL_FILTER_LAST_PARAMETER 0x8000
#define AL_FILTER_TYPE 0x8001
/* Filter types, used with the AL_FILTER_TYPE property */
#define AL_FILTER_NULL 0x0000
#define AL_FILTER_LOWPASS 0x0001
#define AL_FILTER_HIGHPASS 0x0002
#define AL_FILTER_BANDPASS 0x0003
/* Effect object function types. */
typedef void (AL_APIENTRY *LPALGENEFFECTS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint);
typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*);
/* Filter object function types. */
typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint);
typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*);
/* Auxiliary Effect Slot object function types. */
typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects);
AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues);
AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters);
AL_API ALvoid AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters);
AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter);
AL_API ALvoid AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue);
AL_API ALvoid AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues);
AL_API ALvoid AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue);
AL_API ALvoid AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue);
AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues);
AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue);
AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots);
AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
#endif
/* Filter ranges and defaults. */
/* Lowpass filter */
#define AL_LOWPASS_MIN_GAIN (0.0f)
#define AL_LOWPASS_MAX_GAIN (1.0f)
#define AL_LOWPASS_DEFAULT_GAIN (1.0f)
#define AL_LOWPASS_MIN_GAINHF (0.0f)
#define AL_LOWPASS_MAX_GAINHF (1.0f)
#define AL_LOWPASS_DEFAULT_GAINHF (1.0f)
/* Highpass filter */
#define AL_HIGHPASS_MIN_GAIN (0.0f)
#define AL_HIGHPASS_MAX_GAIN (1.0f)
#define AL_HIGHPASS_DEFAULT_GAIN (1.0f)
#define AL_HIGHPASS_MIN_GAINLF (0.0f)
#define AL_HIGHPASS_MAX_GAINLF (1.0f)
#define AL_HIGHPASS_DEFAULT_GAINLF (1.0f)
/* Bandpass filter */
#define AL_BANDPASS_MIN_GAIN (0.0f)
#define AL_BANDPASS_MAX_GAIN (1.0f)
#define AL_BANDPASS_DEFAULT_GAIN (1.0f)
#define AL_BANDPASS_MIN_GAINHF (0.0f)
#define AL_BANDPASS_MAX_GAINHF (1.0f)
#define AL_BANDPASS_DEFAULT_GAINHF (1.0f)
#define AL_BANDPASS_MIN_GAINLF (0.0f)
#define AL_BANDPASS_MAX_GAINLF (1.0f)
#define AL_BANDPASS_DEFAULT_GAINLF (1.0f)
/* Effect parameter ranges and defaults. */
/* Standard reverb effect */
#define AL_REVERB_MIN_DENSITY (0.0f)
#define AL_REVERB_MAX_DENSITY (1.0f)
#define AL_REVERB_DEFAULT_DENSITY (1.0f)
#define AL_REVERB_MIN_DIFFUSION (0.0f)
#define AL_REVERB_MAX_DIFFUSION (1.0f)
#define AL_REVERB_DEFAULT_DIFFUSION (1.0f)
#define AL_REVERB_MIN_GAIN (0.0f)
#define AL_REVERB_MAX_GAIN (1.0f)
#define AL_REVERB_DEFAULT_GAIN (0.32f)
#define AL_REVERB_MIN_GAINHF (0.0f)
#define AL_REVERB_MAX_GAINHF (1.0f)
#define AL_REVERB_DEFAULT_GAINHF (0.89f)
#define AL_REVERB_MIN_DECAY_TIME (0.1f)
#define AL_REVERB_MAX_DECAY_TIME (20.0f)
#define AL_REVERB_DEFAULT_DECAY_TIME (1.49f)
#define AL_REVERB_MIN_DECAY_HFRATIO (0.1f)
#define AL_REVERB_MAX_DECAY_HFRATIO (2.0f)
#define AL_REVERB_DEFAULT_DECAY_HFRATIO (0.83f)
#define AL_REVERB_MIN_REFLECTIONS_GAIN (0.0f)
#define AL_REVERB_MAX_REFLECTIONS_GAIN (3.16f)
#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN (0.05f)
#define AL_REVERB_MIN_REFLECTIONS_DELAY (0.0f)
#define AL_REVERB_MAX_REFLECTIONS_DELAY (0.3f)
#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY (0.007f)
#define AL_REVERB_MIN_LATE_REVERB_GAIN (0.0f)
#define AL_REVERB_MAX_LATE_REVERB_GAIN (10.0f)
#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN (1.26f)
#define AL_REVERB_MIN_LATE_REVERB_DELAY (0.0f)
#define AL_REVERB_MAX_LATE_REVERB_DELAY (0.1f)
#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY (0.011f)
#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f)
#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f)
#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE
#define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE
#define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
/* EAX reverb effect */
#define AL_EAXREVERB_MIN_DENSITY (0.0f)
#define AL_EAXREVERB_MAX_DENSITY (1.0f)
#define AL_EAXREVERB_DEFAULT_DENSITY (1.0f)
#define AL_EAXREVERB_MIN_DIFFUSION (0.0f)
#define AL_EAXREVERB_MAX_DIFFUSION (1.0f)
#define AL_EAXREVERB_DEFAULT_DIFFUSION (1.0f)
#define AL_EAXREVERB_MIN_GAIN (0.0f)
#define AL_EAXREVERB_MAX_GAIN (1.0f)
#define AL_EAXREVERB_DEFAULT_GAIN (0.32f)
#define AL_EAXREVERB_MIN_GAINHF (0.0f)
#define AL_EAXREVERB_MAX_GAINHF (1.0f)
#define AL_EAXREVERB_DEFAULT_GAINHF (0.89f)
#define AL_EAXREVERB_MIN_GAINLF (0.0f)
#define AL_EAXREVERB_MAX_GAINLF (1.0f)
#define AL_EAXREVERB_DEFAULT_GAINLF (1.0f)
#define AL_EAXREVERB_MIN_DECAY_TIME (0.1f)
#define AL_EAXREVERB_MAX_DECAY_TIME (20.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_TIME (1.49f)
#define AL_EAXREVERB_MIN_DECAY_HFRATIO (0.1f)
#define AL_EAXREVERB_MAX_DECAY_HFRATIO (2.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO (0.83f)
#define AL_EAXREVERB_MIN_DECAY_LFRATIO (0.1f)
#define AL_EAXREVERB_MAX_DECAY_LFRATIO (2.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO (1.0f)
#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN (0.0f)
#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN (3.16f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN (0.05f)
#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY (0.0f)
#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY (0.3f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY (0.007f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f)
#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN (0.0f)
#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN (10.0f)
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN (1.26f)
#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY (0.0f)
#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY (0.1f)
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY (0.011f)
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f)
#define AL_EAXREVERB_MIN_ECHO_TIME (0.075f)
#define AL_EAXREVERB_MAX_ECHO_TIME (0.25f)
#define AL_EAXREVERB_DEFAULT_ECHO_TIME (0.25f)
#define AL_EAXREVERB_MIN_ECHO_DEPTH (0.0f)
#define AL_EAXREVERB_MAX_ECHO_DEPTH (1.0f)
#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH (0.0f)
#define AL_EAXREVERB_MIN_MODULATION_TIME (0.04f)
#define AL_EAXREVERB_MAX_MODULATION_TIME (4.0f)
#define AL_EAXREVERB_DEFAULT_MODULATION_TIME (0.25f)
#define AL_EAXREVERB_MIN_MODULATION_DEPTH (0.0f)
#define AL_EAXREVERB_MAX_MODULATION_DEPTH (1.0f)
#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH (0.0f)
#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f)
#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f)
#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
#define AL_EAXREVERB_MIN_HFREFERENCE (1000.0f)
#define AL_EAXREVERB_MAX_HFREFERENCE (20000.0f)
#define AL_EAXREVERB_DEFAULT_HFREFERENCE (5000.0f)
#define AL_EAXREVERB_MIN_LFREFERENCE (20.0f)
#define AL_EAXREVERB_MAX_LFREFERENCE (1000.0f)
#define AL_EAXREVERB_DEFAULT_LFREFERENCE (250.0f)
#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_EAXREVERB_MIN_DECAY_HFLIMIT AL_FALSE
#define AL_EAXREVERB_MAX_DECAY_HFLIMIT AL_TRUE
#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
/* Chorus effect */
#define AL_CHORUS_WAVEFORM_SINUSOID (0)
#define AL_CHORUS_WAVEFORM_TRIANGLE (1)
#define AL_CHORUS_MIN_WAVEFORM (0)
#define AL_CHORUS_MAX_WAVEFORM (1)
#define AL_CHORUS_DEFAULT_WAVEFORM (1)
#define AL_CHORUS_MIN_PHASE (-180)
#define AL_CHORUS_MAX_PHASE (180)
#define AL_CHORUS_DEFAULT_PHASE (90)
#define AL_CHORUS_MIN_RATE (0.0f)
#define AL_CHORUS_MAX_RATE (10.0f)
#define AL_CHORUS_DEFAULT_RATE (1.1f)
#define AL_CHORUS_MIN_DEPTH (0.0f)
#define AL_CHORUS_MAX_DEPTH (1.0f)
#define AL_CHORUS_DEFAULT_DEPTH (0.1f)
#define AL_CHORUS_MIN_FEEDBACK (-1.0f)
#define AL_CHORUS_MAX_FEEDBACK (1.0f)
#define AL_CHORUS_DEFAULT_FEEDBACK (0.25f)
#define AL_CHORUS_MIN_DELAY (0.0f)
#define AL_CHORUS_MAX_DELAY (0.016f)
#define AL_CHORUS_DEFAULT_DELAY (0.016f)
/* Distortion effect */
#define AL_DISTORTION_MIN_EDGE (0.0f)
#define AL_DISTORTION_MAX_EDGE (1.0f)
#define AL_DISTORTION_DEFAULT_EDGE (0.2f)
#define AL_DISTORTION_MIN_GAIN (0.01f)
#define AL_DISTORTION_MAX_GAIN (1.0f)
#define AL_DISTORTION_DEFAULT_GAIN (0.05f)
#define AL_DISTORTION_MIN_LOWPASS_CUTOFF (80.0f)
#define AL_DISTORTION_MAX_LOWPASS_CUTOFF (24000.0f)
#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF (8000.0f)
#define AL_DISTORTION_MIN_EQCENTER (80.0f)
#define AL_DISTORTION_MAX_EQCENTER (24000.0f)
#define AL_DISTORTION_DEFAULT_EQCENTER (3600.0f)
#define AL_DISTORTION_MIN_EQBANDWIDTH (80.0f)
#define AL_DISTORTION_MAX_EQBANDWIDTH (24000.0f)
#define AL_DISTORTION_DEFAULT_EQBANDWIDTH (3600.0f)
/* Echo effect */
#define AL_ECHO_MIN_DELAY (0.0f)
#define AL_ECHO_MAX_DELAY (0.207f)
#define AL_ECHO_DEFAULT_DELAY (0.1f)
#define AL_ECHO_MIN_LRDELAY (0.0f)
#define AL_ECHO_MAX_LRDELAY (0.404f)
#define AL_ECHO_DEFAULT_LRDELAY (0.1f)
#define AL_ECHO_MIN_DAMPING (0.0f)
#define AL_ECHO_MAX_DAMPING (0.99f)
#define AL_ECHO_DEFAULT_DAMPING (0.5f)
#define AL_ECHO_MIN_FEEDBACK (0.0f)
#define AL_ECHO_MAX_FEEDBACK (1.0f)
#define AL_ECHO_DEFAULT_FEEDBACK (0.5f)
#define AL_ECHO_MIN_SPREAD (-1.0f)
#define AL_ECHO_MAX_SPREAD (1.0f)
#define AL_ECHO_DEFAULT_SPREAD (-1.0f)
/* Flanger effect */
#define AL_FLANGER_WAVEFORM_SINUSOID (0)
#define AL_FLANGER_WAVEFORM_TRIANGLE (1)
#define AL_FLANGER_MIN_WAVEFORM (0)
#define AL_FLANGER_MAX_WAVEFORM (1)
#define AL_FLANGER_DEFAULT_WAVEFORM (1)
#define AL_FLANGER_MIN_PHASE (-180)
#define AL_FLANGER_MAX_PHASE (180)
#define AL_FLANGER_DEFAULT_PHASE (0)
#define AL_FLANGER_MIN_RATE (0.0f)
#define AL_FLANGER_MAX_RATE (10.0f)
#define AL_FLANGER_DEFAULT_RATE (0.27f)
#define AL_FLANGER_MIN_DEPTH (0.0f)
#define AL_FLANGER_MAX_DEPTH (1.0f)
#define AL_FLANGER_DEFAULT_DEPTH (1.0f)
#define AL_FLANGER_MIN_FEEDBACK (-1.0f)
#define AL_FLANGER_MAX_FEEDBACK (1.0f)
#define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f)
#define AL_FLANGER_MIN_DELAY (0.0f)
#define AL_FLANGER_MAX_DELAY (0.004f)
#define AL_FLANGER_DEFAULT_DELAY (0.002f)
/* Frequency shifter effect */
#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY (0.0f)
#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY (24000.0f)
#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY (0.0f)
#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION (0)
#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION (2)
#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0)
#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN (0)
#define AL_FREQUENCY_SHIFTER_DIRECTION_UP (1)
#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF (2)
#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0)
#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2)
#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0)
/* Vocal morpher effect */
#define AL_VOCAL_MORPHER_MIN_PHONEMEA (0)
#define AL_VOCAL_MORPHER_MAX_PHONEMEA (29)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA (0)
#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24)
#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0)
#define AL_VOCAL_MORPHER_MIN_PHONEMEB (0)
#define AL_VOCAL_MORPHER_MAX_PHONEMEB (29)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB (10)
#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24)
#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0)
#define AL_VOCAL_MORPHER_PHONEME_A (0)
#define AL_VOCAL_MORPHER_PHONEME_E (1)
#define AL_VOCAL_MORPHER_PHONEME_I (2)
#define AL_VOCAL_MORPHER_PHONEME_O (3)
#define AL_VOCAL_MORPHER_PHONEME_U (4)
#define AL_VOCAL_MORPHER_PHONEME_AA (5)
#define AL_VOCAL_MORPHER_PHONEME_AE (6)
#define AL_VOCAL_MORPHER_PHONEME_AH (7)
#define AL_VOCAL_MORPHER_PHONEME_AO (8)
#define AL_VOCAL_MORPHER_PHONEME_EH (9)
#define AL_VOCAL_MORPHER_PHONEME_ER (10)
#define AL_VOCAL_MORPHER_PHONEME_IH (11)
#define AL_VOCAL_MORPHER_PHONEME_IY (12)
#define AL_VOCAL_MORPHER_PHONEME_UH (13)
#define AL_VOCAL_MORPHER_PHONEME_UW (14)
#define AL_VOCAL_MORPHER_PHONEME_B (15)
#define AL_VOCAL_MORPHER_PHONEME_D (16)
#define AL_VOCAL_MORPHER_PHONEME_F (17)
#define AL_VOCAL_MORPHER_PHONEME_G (18)
#define AL_VOCAL_MORPHER_PHONEME_J (19)
#define AL_VOCAL_MORPHER_PHONEME_K (20)
#define AL_VOCAL_MORPHER_PHONEME_L (21)
#define AL_VOCAL_MORPHER_PHONEME_M (22)
#define AL_VOCAL_MORPHER_PHONEME_N (23)
#define AL_VOCAL_MORPHER_PHONEME_P (24)
#define AL_VOCAL_MORPHER_PHONEME_R (25)
#define AL_VOCAL_MORPHER_PHONEME_S (26)
#define AL_VOCAL_MORPHER_PHONEME_T (27)
#define AL_VOCAL_MORPHER_PHONEME_V (28)
#define AL_VOCAL_MORPHER_PHONEME_Z (29)
#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID (0)
#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE (1)
#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH (2)
#define AL_VOCAL_MORPHER_MIN_WAVEFORM (0)
#define AL_VOCAL_MORPHER_MAX_WAVEFORM (2)
#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM (0)
#define AL_VOCAL_MORPHER_MIN_RATE (0.0f)
#define AL_VOCAL_MORPHER_MAX_RATE (10.0f)
#define AL_VOCAL_MORPHER_DEFAULT_RATE (1.41f)
/* Pitch shifter effect */
#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12)
#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE (12)
#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE (12)
#define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50)
#define AL_PITCH_SHIFTER_MAX_FINE_TUNE (50)
#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE (0)
/* Ring modulator effect */
#define AL_RING_MODULATOR_MIN_FREQUENCY (0.0f)
#define AL_RING_MODULATOR_MAX_FREQUENCY (8000.0f)
#define AL_RING_MODULATOR_DEFAULT_FREQUENCY (440.0f)
#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF (0.0f)
#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF (24000.0f)
#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f)
#define AL_RING_MODULATOR_SINUSOID (0)
#define AL_RING_MODULATOR_SAWTOOTH (1)
#define AL_RING_MODULATOR_SQUARE (2)
#define AL_RING_MODULATOR_MIN_WAVEFORM (0)
#define AL_RING_MODULATOR_MAX_WAVEFORM (2)
#define AL_RING_MODULATOR_DEFAULT_WAVEFORM (0)
/* Autowah effect */
#define AL_AUTOWAH_MIN_ATTACK_TIME (0.0001f)
#define AL_AUTOWAH_MAX_ATTACK_TIME (1.0f)
#define AL_AUTOWAH_DEFAULT_ATTACK_TIME (0.06f)
#define AL_AUTOWAH_MIN_RELEASE_TIME (0.0001f)
#define AL_AUTOWAH_MAX_RELEASE_TIME (1.0f)
#define AL_AUTOWAH_DEFAULT_RELEASE_TIME (0.06f)
#define AL_AUTOWAH_MIN_RESONANCE (2.0f)
#define AL_AUTOWAH_MAX_RESONANCE (1000.0f)
#define AL_AUTOWAH_DEFAULT_RESONANCE (1000.0f)
#define AL_AUTOWAH_MIN_PEAK_GAIN (0.00003f)
#define AL_AUTOWAH_MAX_PEAK_GAIN (31621.0f)
#define AL_AUTOWAH_DEFAULT_PEAK_GAIN (11.22f)
/* Compressor effect */
#define AL_COMPRESSOR_MIN_ONOFF (0)
#define AL_COMPRESSOR_MAX_ONOFF (1)
#define AL_COMPRESSOR_DEFAULT_ONOFF (1)
/* Equalizer effect */
#define AL_EQUALIZER_MIN_LOW_GAIN (0.126f)
#define AL_EQUALIZER_MAX_LOW_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_LOW_GAIN (1.0f)
#define AL_EQUALIZER_MIN_LOW_CUTOFF (50.0f)
#define AL_EQUALIZER_MAX_LOW_CUTOFF (800.0f)
#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF (200.0f)
#define AL_EQUALIZER_MIN_MID1_GAIN (0.126f)
#define AL_EQUALIZER_MAX_MID1_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_MID1_GAIN (1.0f)
#define AL_EQUALIZER_MIN_MID1_CENTER (200.0f)
#define AL_EQUALIZER_MAX_MID1_CENTER (3000.0f)
#define AL_EQUALIZER_DEFAULT_MID1_CENTER (500.0f)
#define AL_EQUALIZER_MIN_MID1_WIDTH (0.01f)
#define AL_EQUALIZER_MAX_MID1_WIDTH (1.0f)
#define AL_EQUALIZER_DEFAULT_MID1_WIDTH (1.0f)
#define AL_EQUALIZER_MIN_MID2_GAIN (0.126f)
#define AL_EQUALIZER_MAX_MID2_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_MID2_GAIN (1.0f)
#define AL_EQUALIZER_MIN_MID2_CENTER (1000.0f)
#define AL_EQUALIZER_MAX_MID2_CENTER (8000.0f)
#define AL_EQUALIZER_DEFAULT_MID2_CENTER (3000.0f)
#define AL_EQUALIZER_MIN_MID2_WIDTH (0.01f)
#define AL_EQUALIZER_MAX_MID2_WIDTH (1.0f)
#define AL_EQUALIZER_DEFAULT_MID2_WIDTH (1.0f)
#define AL_EQUALIZER_MIN_HIGH_GAIN (0.126f)
#define AL_EQUALIZER_MAX_HIGH_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_HIGH_GAIN (1.0f)
#define AL_EQUALIZER_MIN_HIGH_CUTOFF (4000.0f)
#define AL_EQUALIZER_MAX_HIGH_CUTOFF (16000.0f)
#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF (6000.0f)
/* Source parameter value ranges and defaults. */
#define AL_MIN_AIR_ABSORPTION_FACTOR (0.0f)
#define AL_MAX_AIR_ABSORPTION_FACTOR (10.0f)
#define AL_DEFAULT_AIR_ABSORPTION_FACTOR (0.0f)
#define AL_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_MIN_CONE_OUTER_GAINHF (0.0f)
#define AL_MAX_CONE_OUTER_GAINHF (1.0f)
#define AL_DEFAULT_CONE_OUTER_GAINHF (1.0f)
#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE
#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE
#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE
#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
/* Listener parameter value ranges and defaults. */
#define AL_MIN_METERS_PER_UNIT FLT_MIN
#define AL_MAX_METERS_PER_UNIT FLT_MAX
#define AL_DEFAULT_METERS_PER_UNIT (1.0f)
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* AL_EFX_H */
+187
View File
@@ -0,0 +1,187 @@
EXPORTS
alAuxiliaryEffectSlotf
alAuxiliaryEffectSlotfv
alAuxiliaryEffectSloti
alAuxiliaryEffectSlotiv
alBuffer3f
alBuffer3i
alBufferData
alBufferSamplesSOFT
alBufferSubDataSOFT
alBufferSubSamplesSOFT
alBufferf
alBufferfv
alBufferi
alBufferiv
alDeferUpdatesSOFT
alDeleteAuxiliaryEffectSlots
alDeleteBuffers
alDeleteEffects
alDeleteFilters
alDeleteFontsoundsSOFT
alDeletePresetsSOFT
alDeleteSoundfontsSOFT
alDeleteSources
alDisable
alDistanceModel
alDopplerFactor
alDopplerVelocity
alEffectf
alEffectfv
alEffecti
alEffectiv
alEnable
alFilterf
alFilterfv
alFilteri
alFilteriv
alFontsound2iSOFT
alFontsoundModulatoriSOFT
alFontsoundiSOFT
alFontsoundivSOFT
alGenAuxiliaryEffectSlots
alGenBuffers
alGenEffects
alGenFilters
alGenFontsoundsSOFT
alGenPresetsSOFT
alGenSoundfontsSOFT
alGenSources
alGetAuxiliaryEffectSlotf
alGetAuxiliaryEffectSlotfv
alGetAuxiliaryEffectSloti
alGetAuxiliaryEffectSlotiv
alGetBoolean
alGetBooleanv
alGetBuffer3f
alGetBuffer3i
alGetBufferSamplesSOFT
alGetBufferf
alGetBufferfv
alGetBufferi
alGetBufferiv
alGetDouble
alGetDoublev
alGetEffectf
alGetEffectfv
alGetEffecti
alGetEffectiv
alGetEnumValue
alGetError
alGetFilterf
alGetFilterfv
alGetFilteri
alGetFilteriv
alGetFloat
alGetFloatv
alGetFontsoundModulatorivSOFT
alGetFontsoundivSOFT
alGetInteger
alGetInteger64SOFT
alGetInteger64vSOFT
alGetIntegerv
alGetListener3f
alGetListener3i
alGetListenerf
alGetListenerfv
alGetListeneri
alGetListeneriv
alGetPresetivSOFT
alGetProcAddress
alGetSoundfontivSOFT
alGetSource3dSOFT
alGetSource3f
alGetSource3i
alGetSource3i64SOFT
alGetSourcedSOFT
alGetSourcedvSOFT
alGetSourcef
alGetSourcefv
alGetSourcei
alGetSourcei64SOFT
alGetSourcei64vSOFT
alGetSourceiv
alGetString
alIsAuxiliaryEffectSlot
alIsBuffer
alIsBufferFormatSupportedSOFT
alIsEffect
alIsEnabled
alIsExtensionPresent
alIsFilter
alIsFontsoundSOFT
alIsPresetSOFT
alIsSoundfontSOFT
alIsSource
alListener3f
alListener3i
alListenerf
alListenerfv
alListeneri
alListeneriv
alLoadSoundfontSOFT
alMidiEventSOFT
alMidiGainSOFT
alMidiPauseSOFT
alMidiPlaySOFT
alMidiResetSOFT
alMidiSoundfontSOFT
alMidiSoundfontvSOFT
alMidiStopSOFT
alMidiSysExSOFT
alPresetFontsoundsSOFT
alPresetiSOFT
alPresetivSOFT
alProcessUpdatesSOFT
alSoundfontPresetsSOFT
alSource3dSOFT
alSource3f
alSource3i
alSource3i64SOFT
alSourcePause
alSourcePausev
alSourcePlay
alSourcePlayv
alSourceQueueBuffers
alSourceRewind
alSourceRewindv
alSourceStop
alSourceStopv
alSourceUnqueueBuffers
alSourcedSOFT
alSourcedvSOFT
alSourcef
alSourcefv
alSourcei
alSourcei64SOFT
alSourcei64vSOFT
alSourceiv
alSpeedOfSound
alcCaptureCloseDevice
alcCaptureOpenDevice
alcCaptureSamples
alcCaptureStart
alcCaptureStop
alcCloseDevice
alcCreateContext
alcDestroyContext
alcDevicePauseSOFT
alcDeviceResumeSOFT
alcGetContextsDevice
alcGetCurrentContext
alcGetEnumValue
alcGetError
alcGetInteger64vSOFT
alcGetIntegerv
alcGetProcAddress
alcGetString
alcGetThreadContext
alcIsExtensionPresent
alcIsRenderFormatSupportedSOFT
alcLoopbackOpenDeviceSOFT
alcMakeContextCurrent
alcOpenDevice
alcProcessContext
alcRenderSamplesSOFT
alcSetThreadContext
alcSuspendContext
Binary file not shown.
+48 -2
View File
@@ -1,4 +1,50 @@
rpcs3
RPCS3
=====
PS3 emulator/debugger
[![Build Status](https://travis-ci.org/RPCS3/rpcs3.svg?branch=master)](https://travis-ci.org/RPCS3/rpcs3)
[![Build status](https://ci.appveyor.com/api/projects/status/411c4clmiohtx7eo/branch/master?svg=true)](https://ci.appveyor.com/project/rpcs3/rpcs3/branch/master)
[![Coverity Status](https://img.shields.io/coverity/scan/3960.svg)](https://scan.coverity.com/projects/3960)
[![Coverage Status](https://coveralls.io/repos/RPCS3/rpcs3/badge.svg)](https://coveralls.io/r/RPCS3/rpcs3)
An open-source PlayStation 3 emulator/debugger written in C++.
You can find some basic information in the [FAQ](https://github.com/RPCS3/rpcs3/wiki/FAQ). For discussion about this emulator and PS3 emulation please visit the [official forums](http://www.emunewz.net/forum/forumdisplay.php?fid=162).
### Development
If you want to contribute please take a took at the [Coding Style](https://github.com/RPCS3/rpcs3/wiki/Coding-Style), [Roadmap](https://github.com/RPCS3/rpcs3/wiki/Roadmap) and [Developer Information](https://github.com/RPCS3/rpcs3/wiki/Developer-Information) pages. You should as well contact any of the developers in the forum in order to know about the current situation of the emulator.
### Dependencies
__Windows__
* [Visual Studio 2015](https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx)
* [Visual C++ Redistributable Packages for Visual Studio 2015](http://www.microsoft.com/en-us/download/details.aspx?id=48145)
* [Cmake 3.1.0+](http://www.cmake.org/download/) (optional, required only for LLVM build; add to PATH)
* [Python](https://www.python.org/downloads/) (optional, required only for LLVM build; add to PATH)
__Linux__
* GCC 5.1+ or Clang 3.5.0+
* Debian & Ubuntu: `sudo apt-get install libopenal-dev libwxgtk3.0-dev build-essential libglew-dev`
* Arch: `sudo pacman -S glew openal wxgtk cmake llvm`
__Mac OSX__
* Xcode 6+ (tested with Xcode 6.4)
* Install with Homebrew: `brew install glew wxwidgets` (add `llvm36` to that list if you want to build with ppu jit)
* Remove '-framework QuickTime' from '_ldflags' in /usr/local/bin/wx-config
### Building
To initialize the repository don't forget to execute `git submodule update --init` to pull the wxWidgets source.
* __Windows__:
Open the *.SLN* file, and press *Build* > *Clean Solution*, then *Build Solution*. *Rebuild* may not work correctly.
* __Linux & Mac OSX__:
If you want to build with LLVM, then LLVM 3.6.2 is required.
`cd rpcs3 && cmake CMakeLists.txt && make && cd ../` then run with `cd bin && ./rpcs3`.
If you are on OSX and want to build with llvm don't forget to add `-DLLVM_DIR=/usr/local/opt/llvm36/lib/llvm-3.6/share/llvm/cmake` (or wherever llvm brew was installed) to cmake invocation.
When using GDB, configure it to ignore SIGSEGV signal (`handle SIGSEGV nostop noprint`).
### Support
* [Donate by PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MPJ3S9XQXCE3G)
-501
View File
@@ -1,501 +0,0 @@
#pragma once
template<typename T> class Array
{
protected:
u32 m_count;
T* m_array;
public:
Array()
: m_count(0)
, m_array(NULL)
{
}
~Array()
{
Clear();
}
inline bool RemoveAt(const u32 from, const u32 count = 1)
{
if(!GetCount()) return false;
const u32 to = from + count;
if(to > GetCount()) return false;
for(u32 i=0; i<count; ++i) m_array[from + i].~T();
memmove(m_array + from, m_array + to, (m_count-to) * sizeof(T));
m_count -= count;
return true;
}
void InsertRoomEnd(const u32 size)
{
_InsertRoomEnd(size);
}
bool InsertRoom(const u32 pos, const u32 size)
{
if(pos >= m_count) return false;
_InsertRoomEnd(size);
memmove(m_array + pos + size, m_array + pos, sizeof(T) * (m_count - size - pos));
return true;
}
inline bool Move(const u32 pos, T* data)
{
if(!InsertRoom(pos, 1)) return false;
memcpy(m_array + pos, data, sizeof(T));
free(data);
return true;
}
inline u32 Move(T* data)
{
_InsertRoomEnd(1);
memcpy(m_array + GetCount() - 1, data, sizeof(T));
free(data);
return m_count - 1;
}
inline bool Add(const u32 pos, T*& data)
{
if(!InsertRoom(pos, 1)) return false;
memcpy(m_array + pos, data, sizeof(T));
free(data);
data = m_array + pos;
return true;
}
inline u32 Add(T*& data)
{
_InsertRoomEnd(1);
memcpy(m_array + GetCount() - 1, data, sizeof(T));
free(data);
data = m_array + GetCount() - 1;
return m_count - 1;
}
inline bool AddCpy(const u32 pos, const T* data, u32 count = 1)
{
if(!InsertRoom(pos, count)) return false;
for(u32 i=0; i<count; ++i)
{
new (m_array + pos + i) T(data[i]);
}
return true;
}
inline bool AddCpy(const u32 pos, const T& data)
{
return AddCpy(pos, &data);
}
inline u32 AddCpy(const T* data, u32 count = 1)
{
_InsertRoomEnd(count);
for(u32 i=0; i<count; ++i)
{
new (m_array + m_count - count + i) T(data[i]);
}
return m_count - count;
}
inline u32 AddCpy(const T& data)
{
return AddCpy(&data);
}
inline void Clear()
{
u32 count = m_count;
m_count = 0;
for(u32 i=0; i<count; ++i) m_array[i].~T();
safe_free(m_array);
}
inline void ClearF()
{
m_count = 0;
safe_free(m_array);
}
inline T& Get(u32 num)
{
//if(num >= GetCount()) return *new T();
return m_array[num];
}
virtual u32 GetCount() const { return m_count; }
virtual void SetCount(const u32 count, bool memzero = true)
{
if(m_count >= count) return;
_InsertRoomEnd(count - m_count);
if(memzero) memset(m_array + m_count - count, 0, sizeof(T) * (m_count - count));
}
void Reserve(const u32 count)
{
SetCount(GetCount() + count);
}
void AppendFrom(const Array<T>& src)
{
if(!src.GetCount()) return;
Reserve(src.GetCount());
memcpy(m_array, &src[0], GetCount() * sizeof(T));
}
void CopyFrom(const Array<T>& src)
{
Clear();
AppendFrom(src);
}
inline T* GetPtr() { return m_array; }
inline const T* GetPtr() const { return m_array; }
T& operator[](u32 num) const { return m_array[num]; }
T* operator + (u32 right) const
{
return m_array + right;
}
T* operator ->()
{
return m_array;
}
protected:
void _InsertRoomEnd(const u32 size)
{
if(!size) return;
m_array = m_count ? (T*)realloc(m_array, sizeof(T) * (m_count + size)) : (T*)malloc(sizeof(T) * size);
m_count += size;
}
};
class ArrayString : public Array<char>
{
public:
ArrayString() : Array()
{
}
ArrayString(const wxString& value) : Array()
{
*this = value;
}
ArrayString(const char* value) : Array()
{
*this = value;
}
virtual u32 GetCount() const
{
return m_array ? strlen(m_array) : 0;
}
virtual void SetCount(const u32 count, bool memzero = true)
{
if(m_count && count < m_count - 1)
{
m_array[count] = '\0';
}
else
{
Array::SetCount(count + 1, memzero);
}
}
ArrayString& operator = (const char* right)
{
Clear();
if(right)
{
size_t len = strlen(right);
if(len)
{
SetCount(len);
memcpy(m_array, right, len * sizeof(char));
m_array[len] = '\0';
}
}
return *this;
}
ArrayString& operator = (const ArrayString& right)
{
Clear();
if(size_t len = right.GetCount())
{
SetCount(len);
memcpy(m_array, right.GetPtr(), len * sizeof(char));
m_array[len] = '\0';
}
return *this;
}
ArrayString& operator = (const wxString& right)
{
Clear();
if(size_t len = right.Len())
{
SetCount(len);
memcpy(m_array, right.c_str(), len * sizeof(char));
m_array[len] = '\0';
}
return *this;
}
ArrayString* Clone() const
{
ArrayString* new_array = new ArrayString();
(*new_array) = m_array;
return new_array;
}
};
template<typename T> struct Stack : public Array<T>
{
Stack() : Array<T>()
{
}
~Stack()
{
Clear();
}
void Push(const T data) { AddCpy(data); }
T Pop()
{
const u32 pos = GetCount() - 1;
const T ret = Get(pos);
RemoveAt(pos);
return ret;
}
};
template<typename T, size_t size> class SizedStack
{
T m_ptr[size];
uint m_count;
public:
SizedStack()
{
Clear();
}
~SizedStack()
{
Clear();
}
void Clear()
{
m_count = 0;
}
bool Pop(T& dst)
{
if(!m_count)
return false;
dst = m_ptr[--m_count];
return true;
}
bool Push(const T& src)
{
if(m_count + 1 > size)
return false;
m_ptr[m_count++] = src;
return true;
}
size_t GetFreeCount() const
{
return size - m_count;
}
size_t GetCount() const
{
return m_count;
}
size_t GetMaxCount() const
{
return size;
}
};
template<typename T> class ArrayF
{
u32 m_count;
T** m_array;
public:
ArrayF()
: m_count(0)
, m_array(NULL)
{
}
virtual ~ArrayF()
{
Clear();
}
inline bool RemoveFAt(const u32 from, const u32 count = 1)
{
if(from + count > m_count) return false;
memmove(&m_array[from], &m_array[from+count], (m_count-(from+count)) * sizeof(T**));
m_count -= count;
return true;
}
inline bool RemoveAt(const u32 from, const u32 count = 1)
{
if(from + count > m_count) return false;
for(uint i = from; i < from + count; ++i)
{
free(m_array[i]);
}
return RemoveFAt(from, count);
}
inline u32 Add(T& data)
{
return Add(&data);
}
inline u32 Add(T* data)
{
if(!m_array)
{
m_array = (T**)malloc(sizeof(T*));
}
else
{
m_array = (T**)realloc(m_array, sizeof(T*) * (m_count + 1));
}
m_array[m_count] = data;
return m_count++;
}
inline void ClearF()
{
if(m_count == 0) return;
m_count = 0;
m_array = NULL;
}
inline void Clear()
{
if(m_count == 0) return;
m_count = 0;
safe_free(m_array);
}
inline T& Get(const u64 num)
{
//if(m_count <= num) *m_array[0]; //TODO
return *m_array[num];
}
T** operator + (u32 right) const
{
return m_array + right;
}
T* operator ->()
{
return *m_array;
}
inline T** GetPtr()
{
return m_array;
}
inline u32 GetCount() const { return m_count; }
T& operator[](u32 num) const { return *m_array[num]; }
};
template<typename T> struct ScopedPtr
{
private:
T* m_ptr;
public:
ScopedPtr() : m_ptr(nullptr)
{
}
ScopedPtr(T* ptr) : m_ptr(ptr)
{
}
~ScopedPtr()
{
Swap(nullptr);
}
operator T*() { return m_ptr; }
operator const T*() const { return m_ptr; }
T* operator ->() { return m_ptr; }
const T* operator ->() const { return m_ptr; }
void Swap(T* ptr)
{
delete m_ptr;
m_ptr = ptr;
}
};
+696
View File
@@ -0,0 +1,696 @@
#pragma once
#if defined(__GNUG__)
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_val_compare_and_swap(volatile T* dest, T2 comp, T2 exch)
{
return __sync_val_compare_and_swap(dest, comp, exch);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), bool> sync_bool_compare_and_swap(volatile T* dest, T2 comp, T2 exch)
{
return __sync_bool_compare_and_swap(dest, comp, exch);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_lock_test_and_set(volatile T* dest, T2 value)
{
return __sync_lock_test_and_set(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_add(volatile T* dest, T2 value)
{
return __sync_fetch_and_add(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_sub(volatile T* dest, T2 value)
{
return __sync_fetch_and_sub(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_or(volatile T* dest, T2 value)
{
return __sync_fetch_and_or(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_and(volatile T* dest, T2 value)
{
return __sync_fetch_and_and(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_xor(volatile T* dest, T2 value)
{
return __sync_fetch_and_xor(dest, value);
}
#elif defined(_MSC_VER)
// atomic compare and swap functions
inline u8 sync_val_compare_and_swap(volatile u8* dest, u8 comp, u8 exch)
{
return _InterlockedCompareExchange8((volatile char*)dest, exch, comp);
}
inline u16 sync_val_compare_and_swap(volatile u16* dest, u16 comp, u16 exch)
{
return _InterlockedCompareExchange16((volatile short*)dest, exch, comp);
}
inline u32 sync_val_compare_and_swap(volatile u32* dest, u32 comp, u32 exch)
{
return _InterlockedCompareExchange((volatile long*)dest, exch, comp);
}
inline u64 sync_val_compare_and_swap(volatile u64* dest, u64 comp, u64 exch)
{
return _InterlockedCompareExchange64((volatile long long*)dest, exch, comp);
}
inline u128 sync_val_compare_and_swap(volatile u128* dest, u128 comp, u128 exch)
{
_InterlockedCompareExchange128((volatile long long*)dest, exch.hi, exch.lo, (long long*)&comp);
return comp;
}
inline bool sync_bool_compare_and_swap(volatile u8* dest, u8 comp, u8 exch)
{
return (u8)_InterlockedCompareExchange8((volatile char*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u16* dest, u16 comp, u16 exch)
{
return (u16)_InterlockedCompareExchange16((volatile short*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u32* dest, u32 comp, u32 exch)
{
return (u32)_InterlockedCompareExchange((volatile long*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u64* dest, u64 comp, u64 exch)
{
return (u64)_InterlockedCompareExchange64((volatile long long*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u128* dest, u128 comp, u128 exch)
{
return _InterlockedCompareExchange128((volatile long long*)dest, exch.hi, exch.lo, (long long*)&comp) != 0;
}
// atomic exchange functions
inline u8 sync_lock_test_and_set(volatile u8* dest, u8 value)
{
return _InterlockedExchange8((volatile char*)dest, value);
}
inline u16 sync_lock_test_and_set(volatile u16* dest, u16 value)
{
return _InterlockedExchange16((volatile short*)dest, value);
}
inline u32 sync_lock_test_and_set(volatile u32* dest, u32 value)
{
return _InterlockedExchange((volatile long*)dest, value);
}
inline u64 sync_lock_test_and_set(volatile u64* dest, u64 value)
{
return _InterlockedExchange64((volatile long long*)dest, value);
}
inline u128 sync_lock_test_and_set(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
if (sync_bool_compare_and_swap(dest, old, value)) return old;
}
}
// atomic add functions
inline u8 sync_fetch_and_add(volatile u8* dest, u8 value)
{
return _InterlockedExchangeAdd8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_add(volatile u16* dest, u16 value)
{
return _InterlockedExchangeAdd16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_add(volatile u32* dest, u32 value)
{
return _InterlockedExchangeAdd((volatile long*)dest, value);
}
inline u64 sync_fetch_and_add(volatile u64* dest, u64 value)
{
return _InterlockedExchangeAdd64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_add(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
if (sync_bool_compare_and_swap(dest, old, old + value)) return old;
}
}
// atomic sub functions
inline u8 sync_fetch_and_sub(volatile u8* dest, u8 value)
{
return _InterlockedExchangeAdd8((volatile char*)dest, -(char)value);
}
inline u16 sync_fetch_and_sub(volatile u16* dest, u16 value)
{
return _InterlockedExchangeAdd16((volatile short*)dest, -(short)value);
}
inline u32 sync_fetch_and_sub(volatile u32* dest, u32 value)
{
return _InterlockedExchangeAdd((volatile long*)dest, -(long)value);
}
inline u64 sync_fetch_and_sub(volatile u64* dest, u64 value)
{
return _InterlockedExchangeAdd64((volatile long long*)dest, -(long long)value);
}
inline u128 sync_fetch_and_sub(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
if (sync_bool_compare_and_swap(dest, old, old - value)) return old;
}
}
// atomic `bitwise or` functions
inline u8 sync_fetch_and_or(volatile u8* dest, u8 value)
{
return _InterlockedOr8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_or(volatile u16* dest, u16 value)
{
return _InterlockedOr16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_or(volatile u32* dest, u32 value)
{
return _InterlockedOr((volatile long*)dest, value);
}
inline u64 sync_fetch_and_or(volatile u64* dest, u64 value)
{
return _InterlockedOr64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_or(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
if (sync_bool_compare_and_swap(dest, old, old | value)) return old;
}
}
// atomic `bitwise and` functions
inline u8 sync_fetch_and_and(volatile u8* dest, u8 value)
{
return _InterlockedAnd8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_and(volatile u16* dest, u16 value)
{
return _InterlockedAnd16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_and(volatile u32* dest, u32 value)
{
return _InterlockedAnd((volatile long*)dest, value);
}
inline u64 sync_fetch_and_and(volatile u64* dest, u64 value)
{
return _InterlockedAnd64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_and(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
if (sync_bool_compare_and_swap(dest, old, old & value)) return old;
}
}
// atomic `bitwise xor` functions
inline u8 sync_fetch_and_xor(volatile u8* dest, u8 value)
{
return _InterlockedXor8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_xor(volatile u16* dest, u16 value)
{
return _InterlockedXor16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_xor(volatile u32* dest, u32 value)
{
return _InterlockedXor((volatile long*)dest, value);
}
inline u64 sync_fetch_and_xor(volatile u64* dest, u64 value)
{
return _InterlockedXor64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_xor(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
if (sync_bool_compare_and_swap(dest, old, old ^ value)) return old;
}
}
#endif /* _MSC_VER */
template<typename T, std::size_t Size = sizeof(T)> struct atomic_storage
{
static_assert(!Size, "Invalid atomic type");
};
template<typename T> struct atomic_storage<T, 1>
{
using type = u8;
};
template<typename T> struct atomic_storage<T, 2>
{
using type = u16;
};
template<typename T> struct atomic_storage<T, 4>
{
using type = u32;
};
template<typename T> struct atomic_storage<T, 8>
{
using type = u64;
};
template<typename T> struct atomic_storage<T, 16>
{
using type = u128;
};
template<typename T> using atomic_storage_t = typename atomic_storage<T>::type;
// atomic result wrapper; implements special behaviour for void result type
template<typename T, typename RT, typename VT> struct atomic_op_result_t
{
RT result;
template<typename... Args> atomic_op_result_t(T func, VT& var, Args&&... args)
: result(std::move(func(var, std::forward<Args>(args)...)))
{
}
RT move()
{
return std::move(result);
}
};
// void specialization: result is the initial value of the first arg
template<typename T, typename VT> struct atomic_op_result_t<T, void, VT>
{
VT result;
template<typename... Args> atomic_op_result_t(T func, VT& var, Args&&... args)
: result(var)
{
func(var, std::forward<Args>(args)...);
}
VT move()
{
return std::move(result);
}
};
// member function specialization
template<typename CT, typename... FArgs, typename RT, typename VT> struct atomic_op_result_t<RT(CT::*)(FArgs...), RT, VT>
{
RT result;
template<typename... Args> atomic_op_result_t(RT(CT::*func)(FArgs...), VT& var, Args&&... args)
: result(std::move((var.*func)(std::forward<Args>(args)...)))
{
}
RT move()
{
return std::move(result);
}
};
// member function void specialization
template<typename CT, typename... FArgs, typename VT> struct atomic_op_result_t<void(CT::*)(FArgs...), void, VT>
{
VT result;
template<typename... Args> atomic_op_result_t(void(CT::*func)(FArgs...), VT& var, Args&&... args)
: result(var)
{
(var.*func)(std::forward<Args>(args)...);
}
VT move()
{
return std::move(result);
}
};
// Atomic type with lock-free and standard layout guarantees (and appropriate limitations)
template<typename T> class atomic_t
{
using type = std::remove_cv_t<T>;
using stype = atomic_storage_t<type>;
using storage = atomic_storage<type>;
static_assert(alignof(type) <= alignof(stype), "atomic_t<> error: unexpected alignment");
stype m_data;
template<typename T2> static inline void write_relaxed(volatile T2& data, const T2& value)
{
data = value;
}
static inline void write_relaxed(volatile u128& data, const u128& value)
{
sync_lock_test_and_set(&data, value);
}
template<typename T2> static inline T2 read_relaxed(const volatile T2& data)
{
return data;
}
static inline u128 read_relaxed(const volatile u128& value)
{
return sync_val_compare_and_swap(const_cast<volatile u128*>(&value), u128{0}, u128{0});
}
public:
static inline const stype to_subtype(const type& value)
{
return reinterpret_cast<const stype&>(value);
}
static inline const type from_subtype(const stype value)
{
return reinterpret_cast<const type&>(value);
}
atomic_t() = default;
atomic_t(const atomic_t&) = delete;
atomic_t(type value)
: m_data(to_subtype(value))
{
}
atomic_t& operator =(const atomic_t&) = delete;
atomic_t& operator =(type value)
{
return write_relaxed(m_data, to_subtype(value)), *this;
}
operator type() const volatile
{
return from_subtype(read_relaxed(m_data));
}
// Unsafe direct access
stype* raw_data()
{
return reinterpret_cast<stype*>(&m_data);
}
// Unsafe direct access
type& raw()
{
return reinterpret_cast<type&>(m_data);
}
// Atomically compare data with cmp, replace with exch if equal, return previous data value anyway
type compare_and_swap(const type& cmp, const type& exch) volatile
{
return from_subtype(sync_val_compare_and_swap(&m_data, to_subtype(cmp), to_subtype(exch)));
}
// Atomically compare data with cmp, replace with exch if equal, return true if data was replaced
bool compare_and_swap_test(const type& cmp, const type& exch) volatile
{
return sync_bool_compare_and_swap(&m_data, to_subtype(cmp), to_subtype(exch));
}
// Atomically replace data with exch, return previous data value
type exchange(const type& exch) volatile
{
return from_subtype(sync_lock_test_and_set(&m_data, to_subtype(exch)));
}
// Atomically read data, possibly without memory barrier (not for 128 bit)
type load() const volatile
{
return from_subtype(read_relaxed(m_data));
}
// Atomically write data, possibly without memory barrier (not for 128 bit)
void store(const type& value) volatile
{
write_relaxed(m_data, to_subtype(value));
}
// Perform an atomic operation on data (func is either pointer to member function or callable object with a T& first arg);
// Returns the result of the callable object call or previous (old) value of the atomic variable if the return type is void
template<typename F, typename... Args, typename RT = std::result_of_t<F(T&, Args...)>> auto atomic_op(F func, Args&&... args) volatile -> decltype(atomic_op_result_t<F, RT, T>::result)
{
while (true)
{
// Read the old value from memory
const stype old = read_relaxed(m_data);
// Copy the old value
stype _new = old;
// Call atomic op for the local copy of the old value and save the return value of the function
atomic_op_result_t<F, RT, T> result(func, reinterpret_cast<type&>(_new), args...);
// Atomically compare value with `old`, replace with `_new` and return on success
if (sync_bool_compare_and_swap(&m_data, old, _new)) return result.move();
}
}
// Atomic bitwise OR, returns previous data
type _or(const type& right) volatile
{
return from_subtype(sync_fetch_and_or(&m_data, to_subtype(right)));
}
// Atomic bitwise AND, returns previous data
type _and(const type& right) volatile
{
return from_subtype(sync_fetch_and_and(&m_data, to_subtype(right)));
}
// Atomic bitwise AND NOT (inverts right argument), returns previous data
type _and_not(const type& right) volatile
{
return from_subtype(sync_fetch_and_and(&m_data, ~to_subtype(right)));
}
// Atomic bitwise XOR, returns previous data
type _xor(const type& right) volatile
{
return from_subtype(sync_fetch_and_xor(&m_data, to_subtype(right)));
}
type operator |=(const type& right) volatile
{
return from_subtype(sync_fetch_and_or(&m_data, to_subtype(right)) | to_subtype(right));
}
type operator &=(const type& right) volatile
{
return from_subtype(sync_fetch_and_and(&m_data, to_subtype(right)) & to_subtype(right));
}
type operator ^=(const type& right) volatile
{
return from_subtype(sync_fetch_and_xor(&m_data, to_subtype(right)) ^ to_subtype(right));
}
};
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator ++(atomic_t<T>& left)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1) + 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator --(atomic_t<T>& left)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1) - 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator ++(atomic_t<T>& left, int)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1));
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator --(atomic_t<T>& left, int)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1));
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, T> operator +=(atomic_t<T>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), right) + right);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, T> operator -=(atomic_t<T>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), right) - right);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator ++(atomic_t<nse_t<T>>& left)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1) + 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator --(atomic_t<nse_t<T>>& left)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1) - 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator ++(atomic_t<nse_t<T>>& left, int)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1));
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator --(atomic_t<nse_t<T>>& left, int)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1));
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, nse_t<T>> operator +=(atomic_t<nse_t<T>>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), right) + right);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, nse_t<T>> operator -=(atomic_t<nse_t<T>>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), right) - right);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator ++(atomic_t<se_t<T>>& left)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return ++value;
});
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator --(atomic_t<se_t<T>>& left)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return --value;
});
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator ++(atomic_t<se_t<T>>& left, int)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return value++;
});
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator --(atomic_t<se_t<T>>& left, int)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return value--;
});
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, se_t<T>> operator +=(atomic_t<se_t<T>>& left, const T2& right)
{
return left.atomic_op([&](se_t<T>& value) -> se_t<T>
{
return value += right;
});
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, se_t<T>> operator -=(atomic_t<se_t<T>>& left, const T2& right)
{
return left.atomic_op([&](se_t<T>& value) -> se_t<T>
{
return value -= right;
});
}
// Atomic BE Type (for PS3 virtual memory)
template<typename T> using atomic_be_t = atomic_t<be_t<T>>;
// Atomic LE Type (for PSV virtual memory)
template<typename T> using atomic_le_t = atomic_t<le_t<T>>;
// Algorithm for std::atomic; similar to atomic_t::atomic_op()
template<typename T, typename F, typename... Args, typename RT = std::result_of_t<F(T&, Args...)>> auto atomic_op(std::atomic<T>& var, F func, Args&&... args) -> decltype(atomic_op_result_t<F, RT, T>::result)
{
auto old = var.load();
while (true)
{
auto _new = old;
atomic_op_result_t<F, RT, T> result(func, _new, args...);
if (var.compare_exchange_strong(old, _new)) return result.move();
}
}
+123
View File
@@ -0,0 +1,123 @@
#include "stdafx.h"
#include "AutoPause.h"
#include "Utilities/Log.h"
#include "Utilities/File.h"
#include "Emu/System.h"
#include "Emu/state.h"
using namespace Debug;
std::unique_ptr<AutoPause> g_autopause;
AutoPause& AutoPause::getInstance(void)
{
if (!g_autopause)
{
g_autopause.reset(new AutoPause);
}
return *g_autopause;
}
//Still use binary format. Default Setting should be "disable all auto pause".
AutoPause::AutoPause(void)
{
m_pause_function.reserve(16);
m_pause_syscall.reserve(16);
initialized = false;
//Reload(false, false);
Reload();
}
//Notice: I would not allow to write the binary to file in this command.
AutoPause::~AutoPause(void)
{
initialized = false;
m_pause_function.clear();
m_pause_syscall.clear();
m_pause_function_enable = false;
m_pause_syscall_enable = false;
}
//Load Auto Pause Configuration from file "pause.bin"
//This would be able to create in a GUI window.
void AutoPause::Reload(void)
{
if (fs::is_file(fs::get_config_dir() + "pause.bin"))
{
m_pause_function.clear();
m_pause_function.reserve(16);
m_pause_syscall.clear();
m_pause_syscall.reserve(16);
fs::file list(fs::get_config_dir() + "pause.bin");
//System calls ID and Function calls ID are all u32 iirc.
u32 num;
size_t fmax = list.size();
size_t fcur = 0;
list.seek(0);
while (fcur <= fmax - sizeof(u32))
{
list.read(&num, sizeof(u32));
fcur += sizeof(u32);
if (num == 0xFFFFFFFF) break;
if (num < 1024)
{
//Less than 1024 - be regarded as a system call.
//emplace_back may not cause reductant move/copy operation.
m_pause_syscall.emplace_back(num);
LOG_WARNING(HLE, "Auto Pause: Find System Call ID 0x%x", num);
}
else
{
m_pause_function.emplace_back(num);
LOG_WARNING(HLE, "Auto Pause: Find Function Call ID 0x%x", num);
}
}
}
m_pause_syscall_enable = rpcs3::config.misc.debug.auto_pause_syscall.value();
m_pause_function_enable = rpcs3::config.misc.debug.auto_pause_func_call.value();
initialized = true;
}
void AutoPause::TryPause(u32 code)
{
if (code < 1024)
{
//Would first check Enable setting. Then the list length.
if ((!m_pause_syscall_enable)
|| (m_pause_syscall.size() <= 0))
{
return;
}
for (u32 i = 0; i < m_pause_syscall.size(); ++i)
{
if (code == m_pause_syscall[i])
{
Emu.Pause();
LOG_ERROR(HLE, "Auto Pause Triggered: System call 0x%x", code); // Used Error
}
}
}
else
{
//Well similiar.. Seperate the list caused by possible setting difference.
if ((!m_pause_function_enable)
|| (m_pause_function.size() <= 0))
{
return;
}
for (u32 i = 0; i < m_pause_function.size(); ++i)
{
if (code == m_pause_function[i])
{
Emu.Pause();
LOG_ERROR(HLE, "Auto Pause Triggered: Function call 0x%x", code); // Used Error
}
}
}
}
+24
View File
@@ -0,0 +1,24 @@
#pragma once
//Regarded as a Debugger Enchantment
namespace Debug {
//To store the pause function/call id, and let those pause there.
//Would be with a GUI to configure those.
struct AutoPause
{
std::vector<u32> m_pause_syscall;
std::vector<u32> m_pause_function;
bool initialized;
bool m_pause_syscall_enable;
bool m_pause_function_enable;
AutoPause();
~AutoPause();
public:
static AutoPause& getInstance(void);
void Reload(void);
void TryPause(u32 code);
};
}
+940
View File
@@ -0,0 +1,940 @@
#pragma once
#ifdef _MSC_VER
#include <intrin.h>
#else
#include <x86intrin.h>
#endif
#define IS_LE_MACHINE // only draft
union v128
{
template<typename T, std::size_t N, std::size_t M> class masked_array_t // array type accessed as (index ^ M)
{
T m_data[N];
public:
T& operator [](std::size_t index)
{
return m_data[index ^ M];
}
const T& operator [](std::size_t index) const
{
return m_data[index ^ M];
}
T& at(std::size_t index)
{
return (index ^ M) < N ? m_data[index ^ M] : throw std::out_of_range(__FUNCTION__);
}
const T& at(std::size_t index) const
{
return (index ^ M) < N ? m_data[index ^ M] : throw std::out_of_range(__FUNCTION__);
}
};
#ifdef IS_LE_MACHINE
template<typename T, std::size_t N = 16 / sizeof(T)> using normal_array_t = masked_array_t<T, N, 0>;
template<typename T, std::size_t N = 16 / sizeof(T)> using reversed_array_t = masked_array_t<T, N, N - 1>;
#else
template<typename T, std::size_t N = 16 / sizeof(T)> using normal_array_t = masked_array_t<T, N, N - 1>;
template<typename T, std::size_t N = 16 / sizeof(T)> using reversed_array_t = masked_array_t<T, N, 0>;
#endif
normal_array_t<u64> _u64;
normal_array_t<s64> _s64;
reversed_array_t<u64> u64r;
reversed_array_t<s64> s64r;
normal_array_t<u32> _u32;
normal_array_t<s32> _s32;
reversed_array_t<u32> u32r;
reversed_array_t<s32> s32r;
normal_array_t<u16> _u16;
normal_array_t<s16> _s16;
reversed_array_t<u16> u16r;
reversed_array_t<s16> s16r;
normal_array_t<u8> _u8;
normal_array_t<s8> _s8;
reversed_array_t<u8> u8r;
reversed_array_t<s8> s8r;
normal_array_t<f32> _f;
normal_array_t<f64> _d;
reversed_array_t<f32> fr;
reversed_array_t<f64> dr;
__m128 vf;
__m128i vi;
__m128d vd;
class bit_array_128
{
u64 m_data[2];
public:
class bit_element
{
u64& data;
const u64 mask;
public:
bit_element(u64& data, const u64 mask)
: data(data)
, mask(mask)
{
}
operator bool() const
{
return (data & mask) != 0;
}
bit_element& operator =(const bool right)
{
if (right)
{
data |= mask;
}
else
{
data &= ~mask;
}
return *this;
}
bit_element& operator =(const bit_element& right)
{
if (right)
{
data |= mask;
}
else
{
data &= ~mask;
}
return *this;
}
};
// Index 0 returns the MSB and index 127 returns the LSB
bit_element operator [](u32 index)
{
#ifdef IS_LE_MACHINE
return bit_element(m_data[1 - (index >> 6)], 0x8000000000000000ull >> (index & 0x3F));
#else
return bit_element(m_data[index >> 6], 0x8000000000000000ull >> (index & 0x3F));
#endif
}
// Index 0 returns the MSB and index 127 returns the LSB
bool operator [](u32 index) const
{
#ifdef IS_LE_MACHINE
return (m_data[1 - (index >> 6)] & (0x8000000000000000ull >> (index & 0x3F))) != 0;
#else
return (m_data[index >> 6] & (0x8000000000000000ull >> (index & 0x3F))) != 0;
#endif
}
bit_element at(u32 index)
{
if (index >= 128) throw std::out_of_range(__FUNCTION__);
return operator[](index);
}
bool at(u32 index) const
{
if (index >= 128) throw std::out_of_range(__FUNCTION__);
return operator[](index);
}
}
_bit;
static v128 from64(u64 _0, u64 _1 = 0)
{
v128 ret;
ret._u64[0] = _0;
ret._u64[1] = _1;
return ret;
}
static v128 from64r(u64 _1, u64 _0 = 0)
{
return from64(_0, _1);
}
static v128 from32(u32 _0, u32 _1 = 0, u32 _2 = 0, u32 _3 = 0)
{
v128 ret;
ret._u32[0] = _0;
ret._u32[1] = _1;
ret._u32[2] = _2;
ret._u32[3] = _3;
return ret;
}
static v128 from32r(u32 _3, u32 _2 = 0, u32 _1 = 0, u32 _0 = 0)
{
return from32(_0, _1, _2, _3);
}
static v128 from32p(u32 value)
{
v128 ret;
ret.vi = _mm_set1_epi32(static_cast<s32>(value));
return ret;
}
static v128 from16p(u16 value)
{
v128 ret;
ret.vi = _mm_set1_epi16(static_cast<s16>(value));
return ret;
}
static v128 from8p(u8 value)
{
v128 ret;
ret.vi = _mm_set1_epi8(static_cast<s8>(value));
return ret;
}
static v128 fromBit(u32 bit)
{
v128 ret = {};
ret._bit[bit] = true;
return ret;
}
static v128 fromV(__m128i value)
{
v128 ret;
ret.vi = value;
return ret;
}
static v128 fromF(__m128 value)
{
v128 ret;
ret.vf = value;
return ret;
}
static v128 fromD(__m128d value)
{
v128 ret;
ret.vd = value;
return ret;
}
static inline v128 add8(const v128& left, const v128& right)
{
return fromV(_mm_add_epi8(left.vi, right.vi));
}
static inline v128 add16(const v128& left, const v128& right)
{
return fromV(_mm_add_epi16(left.vi, right.vi));
}
static inline v128 add32(const v128& left, const v128& right)
{
return fromV(_mm_add_epi32(left.vi, right.vi));
}
static inline v128 addfs(const v128& left, const v128& right)
{
return fromF(_mm_add_ps(left.vf, right.vf));
}
static inline v128 addfd(const v128& left, const v128& right)
{
return fromD(_mm_add_pd(left.vd, right.vd));
}
static inline v128 sub8(const v128& left, const v128& right)
{
return fromV(_mm_sub_epi8(left.vi, right.vi));
}
static inline v128 sub16(const v128& left, const v128& right)
{
return fromV(_mm_sub_epi16(left.vi, right.vi));
}
static inline v128 sub32(const v128& left, const v128& right)
{
return fromV(_mm_sub_epi32(left.vi, right.vi));
}
static inline v128 subfs(const v128& left, const v128& right)
{
return fromF(_mm_sub_ps(left.vf, right.vf));
}
static inline v128 subfd(const v128& left, const v128& right)
{
return fromD(_mm_sub_pd(left.vd, right.vd));
}
static inline v128 maxu8(const v128& left, const v128& right)
{
return fromV(_mm_max_epu8(left.vi, right.vi));
}
static inline v128 minu8(const v128& left, const v128& right)
{
return fromV(_mm_min_epu8(left.vi, right.vi));
}
static inline v128 eq8(const v128& left, const v128& right)
{
return fromV(_mm_cmpeq_epi8(left.vi, right.vi));
}
static inline v128 eq16(const v128& left, const v128& right)
{
return fromV(_mm_cmpeq_epi16(left.vi, right.vi));
}
static inline v128 eq32(const v128& left, const v128& right)
{
return fromV(_mm_cmpeq_epi32(left.vi, right.vi));
}
bool operator ==(const v128& right) const
{
return _u64[0] == right._u64[0] && _u64[1] == right._u64[1];
}
bool operator !=(const v128& right) const
{
return _u64[0] != right._u64[0] || _u64[1] != right._u64[1];
}
bool is_any_1() const // check if any bit is 1
{
return _u64[0] || _u64[1];
}
bool is_any_0() const // check if any bit is 0
{
return ~_u64[0] || ~_u64[1];
}
// result = (~left) & (right)
static inline v128 andnot(const v128& left, const v128& right)
{
return fromV(_mm_andnot_si128(left.vi, right.vi));
}
void clear()
{
_u64[0] = 0;
_u64[1] = 0;
}
std::string to_hex() const;
std::string to_xyzw() const;
static inline v128 byteswap(const v128 val)
{
return fromV(_mm_shuffle_epi8(val.vi, _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)));
}
};
CHECK_SIZE_ALIGN(v128, 16, 16);
inline v128 operator |(const v128& left, const v128& right)
{
return v128::fromV(_mm_or_si128(left.vi, right.vi));
}
inline v128 operator &(const v128& left, const v128& right)
{
return v128::fromV(_mm_and_si128(left.vi, right.vi));
}
inline v128 operator ^(const v128& left, const v128& right)
{
return v128::fromV(_mm_xor_si128(left.vi, right.vi));
}
inline v128 operator ~(const v128& other)
{
return v128::from64(~other._u64[0], ~other._u64[1]);
}
template<typename T, std::size_t Size = sizeof(T)> struct se_storage
{
static_assert(!Size, "Bad se_storage<> type");
};
template<typename T> struct se_storage<T, 2>
{
using type = u16;
[[deprecated]] static constexpr u16 _swap(u16 src) // for reference
{
return (src >> 8) | (src << 8);
}
static inline u16 swap(u16 src)
{
#if defined(__GNUG__)
return __builtin_bswap16(src);
#else
return _byteswap_ushort(src);
#endif
}
static inline u16 to(const T& src)
{
return swap(reinterpret_cast<const u16&>(src));
}
static inline T from(u16 src)
{
const u16 result = swap(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> struct se_storage<T, 4>
{
using type = u32;
[[deprecated]] static constexpr u32 _swap(u32 src) // for reference
{
return (src >> 24) | (src << 24) | ((src >> 8) & 0x0000ff00) | ((src << 8) & 0x00ff0000);
}
static inline u32 swap(u32 src)
{
#if defined(__GNUG__)
return __builtin_bswap32(src);
#else
return _byteswap_ulong(src);
#endif
}
static inline u32 to(const T& src)
{
return swap(reinterpret_cast<const u32&>(src));
}
static inline T from(u32 src)
{
const u32 result = swap(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> struct se_storage<T, 8>
{
using type = u64;
[[deprecated]] static constexpr u64 _swap(u64 src) // for reference
{
return (src >> 56) | (src << 56) |
((src >> 40) & 0x000000000000ff00) |
((src >> 24) & 0x0000000000ff0000) |
((src >> 8) & 0x00000000ff000000) |
((src << 8) & 0x000000ff00000000) |
((src << 24) & 0x0000ff0000000000) |
((src << 40) & 0x00ff000000000000);
}
static inline u64 swap(u64 src)
{
#if defined(__GNUG__)
return __builtin_bswap64(src);
#else
return _byteswap_uint64(src);
#endif
}
static inline u64 to(const T& src)
{
return swap(reinterpret_cast<const u64&>(src));
}
static inline T from(u64 src)
{
const u64 result = swap(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> struct se_storage<T, 16>
{
using type = v128;
static inline v128 to(const T& src)
{
return v128::byteswap(reinterpret_cast<const v128&>(src));
}
static inline T from(const v128& src)
{
const v128 result = v128::byteswap(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> using se_storage_t = typename se_storage<T>::type;
template<typename T1, typename T2> struct se_convert
{
using type_from = std::remove_cv_t<T1>;
using type_to = std::remove_cv_t<T2>;
using stype_from = se_storage_t<std::remove_cv_t<T1>>;
using stype_to = se_storage_t<std::remove_cv_t<T2>>;
using storage_from = se_storage<std::remove_cv_t<T1>>;
using storage_to = se_storage<std::remove_cv_t<T2>>;
static inline std::enable_if_t<std::is_same<type_from, type_to>::value, stype_to> convert(const stype_from& data)
{
return data;
}
static inline stype_to convert(const stype_from& data, ...)
{
return storage_to::to(storage_from::from(data));
}
};
static struct se_raw_tag_t {} constexpr se_raw{};
template<typename T, bool Se = true> class se_t;
// se_t with switched endianness
template<typename T> class se_t<T, true>
{
using type = typename std::remove_cv<T>::type;
using stype = se_storage_t<type>;
using storage = se_storage<type>;
stype m_data;
static_assert(!std::is_union<type>::value && !std::is_class<type>::value || std::is_same<type, v128>::value || std::is_same<type, u128>::value, "se_t<> error: invalid type (struct or union)");
static_assert(!std::is_pointer<type>::value, "se_t<> error: invalid type (pointer)");
static_assert(!std::is_reference<type>::value, "se_t<> error: invalid type (reference)");
static_assert(!std::is_array<type>::value, "se_t<> error: invalid type (array)");
//static_assert(!std::is_enum<type>::value, "se_t<> error: invalid type (enumeration), use integral type instead");
static_assert(alignof(type) == alignof(stype), "se_t<> error: unexpected alignment");
template<typename T2, typename = void> struct bool_converter
{
static inline bool to_bool(const se_t<T2>& value)
{
return static_cast<bool>(value.value());
}
};
template<typename T2> struct bool_converter<T2, std::enable_if_t<std::is_integral<T2>::value>>
{
static inline bool to_bool(const se_t<T2>& value)
{
return value.m_data != 0;
}
};
public:
se_t() = default;
se_t(const se_t& right) = default;
se_t(type value)
: m_data(storage::to(value))
{
}
// construct directly from raw data (don't use)
constexpr se_t(const stype& raw_value, const se_raw_tag_t&)
: m_data(raw_value)
{
}
type value() const
{
return storage::from(m_data);
}
// access underlying raw data (don't use)
constexpr const stype& raw_data() const noexcept
{
return m_data;
}
se_t& operator =(const se_t&) = default;
se_t& operator =(type value)
{
return m_data = storage::to(value), *this;
}
operator type() const
{
return storage::from(m_data);
}
// optimization
explicit operator bool() const
{
return bool_converter<type>::to_bool(*this);
}
// optimization
template<typename T2> std::enable_if_t<IS_BINARY_COMPARABLE(T, T2), se_t&> operator &=(const se_t<T2>& right)
{
return m_data &= right.raw_data(), *this;
}
// optimization
template<typename CT> std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator &=(CT right)
{
return m_data &= storage::to(right), *this;
}
// optimization
template<typename T2> std::enable_if_t<IS_BINARY_COMPARABLE(T, T2), se_t&> operator |=(const se_t<T2>& right)
{
return m_data |= right.raw_data(), *this;
}
// optimization
template<typename CT> std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator |=(CT right)
{
return m_data |= storage::to(right), *this;
}
// optimization
template<typename T2> std::enable_if_t<IS_BINARY_COMPARABLE(T, T2), se_t&> operator ^=(const se_t<T2>& right)
{
return m_data ^= right.raw_data(), *this;
}
// optimization
template<typename CT> std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator ^=(CT right)
{
return m_data ^= storage::to(right), *this;
}
};
// se_t with native endianness
template<typename T> class se_t<T, false>
{
using type = typename std::remove_cv<T>::type;
type m_data;
static_assert(!std::is_union<type>::value && !std::is_class<type>::value || std::is_same<type, v128>::value || std::is_same<type, u128>::value, "se_t<> error: invalid type (struct or union)");
static_assert(!std::is_pointer<type>::value, "se_t<> error: invalid type (pointer)");
static_assert(!std::is_reference<type>::value, "se_t<> error: invalid type (reference)");
static_assert(!std::is_array<type>::value, "se_t<> error: invalid type (array)");
//static_assert(!std::is_enum<type>::value, "se_t<> error: invalid type (enumeration), use integral type instead");
public:
se_t() = default;
se_t(const se_t&) = default;
constexpr se_t(type value)
: m_data(value)
{
}
type value() const
{
return m_data;
}
se_t& operator =(const se_t& value) = default;
se_t& operator =(type value)
{
return m_data = value, *this;
}
operator type() const
{
return m_data;
}
template<typename CT> std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator &=(const CT& right)
{
return m_data &= right, *this;
}
template<typename CT> std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator |=(const CT& right)
{
return m_data |= right, *this;
}
template<typename CT> std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator ^=(const CT& right)
{
return m_data ^= right, *this;
}
};
// se_t with native endianness (alias)
template<typename T> using nse_t = se_t<T, false>;
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator +=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value += right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator -=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value -= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator *=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value *= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator /=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value /= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator %=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value %= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator <<=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value <<= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator >>=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value >>= right);
}
template<typename T, bool Se> inline se_t<T, Se> operator ++(se_t<T, Se>& left, int)
{
auto value = left.value();
auto result = value++;
left = value;
return result;
}
template<typename T, bool Se> inline se_t<T, Se> operator --(se_t<T, Se>& left, int)
{
auto value = left.value();
auto result = value--;
left = value;
return result;
}
template<typename T, bool Se> inline se_t<T, Se>& operator ++(se_t<T, Se>& right)
{
auto value = right.value();
return right = ++value;
}
template<typename T, bool Se> inline se_t<T, Se>& operator --(se_t<T, Se>& right)
{
auto value = right.value();
return right = --value;
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2), bool> operator ==(const se_t<T1>& left, const se_t<T2>& right)
{
return left.raw_data() == right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2), bool> operator ==(const se_t<T1>& left, T2 right)
{
return left.raw_data() == se_storage<T1>::to(right);
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2), bool> operator ==(T1 left, const se_t<T2>& right)
{
return se_storage<T2>::to(left) == right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2), bool> operator !=(const se_t<T1>& left, const se_t<T2>& right)
{
return left.raw_data() != right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2), bool> operator !=(const se_t<T1>& left, T2 right)
{
return left.raw_data() != se_storage<T1>::to(right);
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2), bool> operator !=(T1 left, const se_t<T2>& right)
{
return se_storage<T2>::to(left) != right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2) && sizeof(T1) >= 4, se_t<decltype(T1() & T2())>> operator &(const se_t<T1>& left, const se_t<T2>& right)
{
return{ left.raw_data() & right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2) && sizeof(T1) >= 4, se_t<decltype(T1() & T2())>> operator &(const se_t<T1>& left, T2 right)
{
return{ left.raw_data() & se_storage<T1>::to(right), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2) && sizeof(T2) >= 4, se_t<decltype(T1() & T2())>> operator &(T1 left, const se_t<T2>& right)
{
return{ se_storage<T2>::to(left) & right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2) && sizeof(T1) >= 4, se_t<decltype(T1() | T2())>> operator |(const se_t<T1>& left, const se_t<T2>& right)
{
return{ left.raw_data() | right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2) && sizeof(T1) >= 4, se_t<decltype(T1() | T2())>> operator |(const se_t<T1>& left, T2 right)
{
return{ left.raw_data() | se_storage<T1>::to(right), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2) && sizeof(T2) >= 4, se_t<decltype(T1() | T2())>> operator |(T1 left, const se_t<T2>& right)
{
return{ se_storage<T2>::to(left) | right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2) && sizeof(T1) >= 4, se_t<decltype(T1() ^ T2())>> operator ^(const se_t<T1>& left, const se_t<T2>& right)
{
return{ left.raw_data() ^ right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2) && sizeof(T1) >= 4, se_t<decltype(T1() ^ T2())>> operator ^(const se_t<T1>& left, T2 right)
{
return{ left.raw_data() ^ se_storage<T1>::to(right), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2) && sizeof(T2) >= 4, se_t<decltype(T1() ^ T2())>> operator ^(T1 left, const se_t<T2>& right)
{
return{ se_storage<T2>::to(left) ^ right.raw_data(), se_raw };
}
// optimization
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T) && sizeof(T) >= 4, se_t<decltype(~T())>> operator ~(const se_t<T>& right)
{
return{ ~right.raw_data(), se_raw };
}
#ifdef IS_LE_MACHINE
template<typename T> using be_t = se_t<T, true>;
template<typename T> using le_t = se_t<T, false>;
#else
template<typename T> using be_t = se_t<T, false>;
template<typename T> using le_t = se_t<T, true>;
#endif
template<typename T, bool Se, typename = void> struct to_se
{
using type = typename std::conditional<std::is_arithmetic<T>::value || std::is_enum<T>::value, se_t<T, Se>, T>::type;
};
template<typename T, bool Se> struct to_se<const T, Se, std::enable_if_t<!std::is_array<T>::value>> // move const qualifier
{
using type = const typename to_se<T, Se>::type;
};
template<typename T, bool Se> struct to_se<volatile T, Se, std::enable_if_t<!std::is_array<T>::value && !std::is_const<T>::value>> // move volatile qualifier
{
using type = volatile typename to_se<T, Se>::type;
};
template<typename T, bool Se> struct to_se<T[], Se>
{
using type = typename to_se<T, Se>::type[];
};
template<typename T, bool Se, std::size_t N> struct to_se<T[N], Se>
{
using type = typename to_se<T, Se>::type[N];
};
template<bool Se> struct to_se<u128, Se> { using type = se_t<u128, Se>; };
template<bool Se> struct to_se<v128, Se> { using type = se_t<v128, Se>; };
template<bool Se> struct to_se<bool, Se> { using type = bool; };
template<bool Se> struct to_se<char, Se> { using type = char; };
template<bool Se> struct to_se<u8, Se> { using type = u8; };
template<bool Se> struct to_se<s8, Se> { using type = s8; };
#ifdef IS_LE_MACHINE
template<typename T> using to_be_t = typename to_se<T, true>::type;
template<typename T> using to_le_t = typename to_se<T, false>::type;
#else
template<typename T> using to_be_t = typename to_se<T, false>::type;
template<typename T> using to_le_t = typename to_se<T, true>::type;
#endif
template<typename T, typename = void> struct to_ne
{
using type = T;
};
template<typename T, bool Se> struct to_ne<se_t<T, Se>>
{
using type = typename std::remove_cv<T>::type;
};
template<typename T> struct to_ne<const T, std::enable_if_t<!std::is_array<T>::value>> // move const qualifier
{
using type = const typename to_ne<T>::type;
};
template<typename T> struct to_ne<volatile T, std::enable_if_t<!std::is_array<T>::value && !std::is_const<T>::value>> // move volatile qualifier
{
using type = volatile typename to_ne<T>::type;
};
template<typename T> struct to_ne<T[]>
{
using type = typename to_ne<T>::type[];
};
template<typename T, std::size_t N> struct to_ne<T[N]>
{
using type = typename to_ne<T>::type[N];
};
// restore native endianness for T: returns T for be_t<T> or le_t<T>, T otherwise
template<typename T> using to_ne_t = typename to_ne<T>::type;
+140
View File
@@ -0,0 +1,140 @@
#pragma once
// BitField access helper class (N bits from I position), intended to be put in union
template<typename T, u32 I, u32 N> class bf_t
{
// Checks
static_assert(I < sizeof(T) * 8, "bf_t<> error: I out of bounds");
static_assert(N < sizeof(T) * 8, "bf_t<> error: N out of bounds");
static_assert(I + N <= sizeof(T) * 8, "bf_t<> error: values out of bounds");
// Underlying data type
using type = typename std::remove_cv<T>::type;
// Underlying value type (native endianness)
using vtype = typename to_ne<type>::type;
// Mask of size N
constexpr static vtype s_mask = (static_cast<vtype>(1) << N) - 1;
// Underlying data member
type m_data;
// Conversion operator helper (uses SFINAE)
template<typename T2, typename = void> struct converter {};
template<typename T2> struct converter<T2, std::enable_if_t<std::is_unsigned<T2>::value>>
{
// Load unsigned value
static inline T2 convert(const type& data)
{
return (data >> I) & s_mask;
}
};
template<typename T2> struct converter<T2, std::enable_if_t<std::is_signed<T2>::value>>
{
// Load signed value (sign-extended)
static inline T2 convert(const type& data)
{
return data << (sizeof(T) * 8 - I - N) >> (sizeof(T) * 8 - N);
}
};
public:
// Assignment operator (store bitfield value)
bf_t& operator =(vtype value)
{
m_data = (m_data & ~(s_mask << I)) | (value & s_mask) << I;
return *this;
}
// Conversion operator (load bitfield value)
operator vtype() const
{
return converter<vtype>::convert(m_data);
}
// Get raw data with mask applied
type unshifted() const
{
return (m_data & (s_mask << I));
}
// Optimized bool conversion
explicit operator bool() const
{
return unshifted() != 0;
}
// Postfix increment operator
vtype operator ++(int)
{
vtype result = *this;
*this = result + 1;
return result;
}
// Prefix increment operator
bf_t& operator ++()
{
return *this = *this + 1;
}
// Postfix decrement operator
vtype operator --(int)
{
vtype result = *this;
*this = result - 1;
return result;
}
// Prefix decrement operator
bf_t& operator --()
{
return *this = *this - 1;
}
// Addition assignment operator
bf_t& operator +=(vtype right)
{
return *this = *this + right;
}
// Subtraction assignment operator
bf_t& operator -=(vtype right)
{
return *this = *this - right;
}
// Multiplication assignment operator
bf_t& operator *=(vtype right)
{
return *this = *this * right;
}
// Bitwise AND assignment operator
bf_t& operator &=(vtype right)
{
m_data &= (right & s_mask) << I;
return *this;
}
// Bitwise OR assignment operator
bf_t& operator |=(vtype right)
{
m_data |= (right & s_mask) << I;
return *this;
}
// Bitwise XOR assignment operator
bf_t& operator ^=(vtype right)
{
m_data ^= (right & s_mask) << I;
return *this;
}
};
template<typename T, u32 I, u32 N> using bf_be_t = bf_t<be_t<T>, I, N>;
template<typename T, u32 I, u32 N> using bf_le_t = bf_t<le_t<T>, I, N>;
+1057
View File
File diff suppressed because it is too large Load Diff
+431
View File
@@ -0,0 +1,431 @@
#pragma once
namespace fom // file open mode
{
enum open_mode : u32
{
read = 1 << 0, // enable reading
write = 1 << 1, // enable writing
append = 1 << 2, // enable appending (always write to the end of file)
create = 1 << 3, // create file if it doesn't exist
trunc = 1 << 4, // clear opened file if it's not empty
excl = 1 << 5, // failure if the file already exists (used with `create`)
rewrite = write | create | trunc,
};
};
namespace fs
{
enum seek_mode : u32 // file seek mode
{
seek_set,
seek_cur,
seek_end,
};
struct stat_t
{
bool is_directory;
bool is_writable;
u64 size;
s64 atime;
s64 mtime;
s64 ctime;
};
// Get parent directory for the path (returns empty string on failure)
std::string get_parent_dir(const std::string& path);
// Get file information
bool stat(const std::string& path, stat_t& info);
// Check whether a file or a directory exists (not recommended, use is_file() or is_dir() instead)
bool exists(const std::string& path);
// Check whether the file exists and is NOT a directory
bool is_file(const std::string& path);
// Check whether the directory exists and is NOT a file
bool is_dir(const std::string& path);
// Delete empty directory
bool remove_dir(const std::string& path);
// Create directory
bool create_dir(const std::string& path);
// Create directories
bool create_path(const std::string& path);
// Rename (move) file or directory
bool rename(const std::string& from, const std::string& to);
// Copy file contents
bool copy_file(const std::string& from, const std::string& to, bool overwrite);
// Delete file
bool remove_file(const std::string& path);
// Change file size (possibly appending zeros)
bool truncate_file(const std::string& path, u64 length);
class file final
{
using handle_type = std::intptr_t;
constexpr static handle_type null = -1;
handle_type m_fd = null;
friend class file_read_map;
friend class file_write_map;
public:
file() = default;
explicit file(const std::string& path, u32 mode = fom::read)
{
open(path, mode);
}
file(file&& other)
: m_fd(other.m_fd)
{
other.m_fd = null;
}
file& operator =(file&& right)
{
std::swap(m_fd, right.m_fd);
return *this;
}
~file();
// Check whether the handle is valid (opened file)
bool is_opened() const
{
return m_fd != null;
}
// Check whether the handle is valid (opened file)
explicit operator bool() const
{
return is_opened();
}
// Open specified file with specified mode
bool open(const std::string& path, u32 mode = fom::read);
// Change file size (possibly appending zero bytes)
bool trunc(u64 size) const;
// Get file information
bool stat(stat_t& info) const;
// Close the file explicitly (destructor automatically closes the file)
void close();
// Read the data from the file and return the amount of data written in buffer
u64 read(void* buffer, u64 count) const;
// Write the data to the file and return the amount of data actually written
u64 write(const void* buffer, u64 count) const;
// Move file pointer
u64 seek(s64 offset, seek_mode whence = seek_set) const;
// Get file size
u64 size() const;
// Write std::string unconditionally
const file& write(const std::string& str) const
{
CHECK_ASSERTION(write(str.data(), str.size()) == str.size());
return *this;
}
// Write POD unconditionally
template<typename T>
std::enable_if_t<std::is_pod<T>::value && !std::is_pointer<T>::value, const file&> write(const T& data) const
{
CHECK_ASSERTION(write(std::addressof(data), sizeof(T)) == sizeof(T));
return *this;
}
// Write POD std::vector unconditionally
template<typename T>
std::enable_if_t<std::is_pod<T>::value && !std::is_pointer<T>::value, const file&> write(const std::vector<T>& vec) const
{
CHECK_ASSERTION(write(vec.data(), vec.size() * sizeof(T)) == vec.size() * sizeof(T));
return *this;
}
// Read std::string, size must be set by resize() method
bool read(std::string& str) const
{
return read(&str[0], str.size()) == str.size();
}
// Read POD, sizeof(T) is used
template<typename T>
std::enable_if_t<std::is_pod<T>::value && !std::is_pointer<T>::value, bool> read(T& data) const
{
return read(&data, sizeof(T)) == sizeof(T);
}
// Read POD std::vector, size must be set by resize() method
template<typename T>
std::enable_if_t<std::is_pod<T>::value && !std::is_pointer<T>::value, bool> read(std::vector<T>& vec) const
{
return read(vec.data(), sizeof(T) * vec.size()) == sizeof(T) * vec.size();
}
// Read POD (experimental)
template<typename T>
std::enable_if_t<std::is_pod<T>::value && !std::is_pointer<T>::value, T> read() const
{
T result;
CHECK_ASSERTION(read(result));
return result;
}
// Read full file to std::string
std::string to_string() const
{
std::string result;
result.resize(size());
CHECK_ASSERTION(seek(0) != -1 && read(result));
return result;
}
// Read full file to std::vector
template<typename T>
std::enable_if_t<std::is_pod<T>::value && !std::is_pointer<T>::value, std::vector<T>> to_vector() const
{
std::vector<T> result;
result.resize(size() / sizeof(T));
CHECK_ASSERTION(seek(0) != -1 && read(result));
return result;
}
};
// TODO
class file_read_map final
{
char* m_ptr = nullptr;
u64 m_size;
public:
file_read_map() = default;
file_read_map(file_read_map&& right)
: m_ptr(right.m_ptr)
, m_size(right.m_size)
{
right.m_ptr = 0;
}
file_read_map& operator =(file_read_map&& right)
{
std::swap(m_ptr, right.m_ptr);
std::swap(m_size, right.m_size);
return *this;
}
file_read_map(const file& f)
{
reset(f);
}
~file_read_map()
{
reset();
}
// Open file mapping
void reset(const file& f);
// Close file mapping
void reset();
// Get pointer
operator const char*() const
{
return m_ptr;
}
};
// TODO
class file_write_map final
{
char* m_ptr = nullptr;
u64 m_size;
public:
file_write_map() = default;
file_write_map(file_write_map&& right)
: m_ptr(right.m_ptr)
, m_size(right.m_size)
{
right.m_ptr = 0;
}
file_write_map& operator =(file_write_map&& right)
{
std::swap(m_ptr, right.m_ptr);
std::swap(m_size, right.m_size);
return *this;
}
file_write_map(const file& f)
{
reset(f);
}
~file_write_map()
{
reset();
}
// Open file mapping
void reset(const file& f);
// Close file mapping
void reset();
// Get pointer
operator char*() const
{
return m_ptr;
}
};
class dir final
{
std::unique_ptr<char[]> m_path;
std::intptr_t m_dd; // handle (aux)
public:
dir() = default;
explicit dir(const std::string& dirname)
{
open(dirname);
}
dir(dir&& other)
: m_dd(other.m_dd)
, m_path(std::move(other.m_path))
{
}
dir& operator =(dir&& right)
{
std::swap(m_dd, right.m_dd);
std::swap(m_path, right.m_path);
return *this;
}
~dir();
// Check whether the handle is valid (opened directory)
bool is_opened() const
{
return m_path.operator bool();
}
// Check whether the handle is valid (opened directory)
explicit operator bool() const
{
return is_opened();
}
// Open specified directory
bool open(const std::string& dirname);
// Close the directory explicitly (destructor automatically closes the directory)
void close();
// Get next directory entry (UTF-8 name and file stat)
bool read(std::string& name, stat_t& info);
bool first(std::string& name, stat_t& info);
struct entry
{
std::string name;
stat_t info;
};
class iterator
{
entry m_entry;
dir* m_parent;
public:
enum class mode
{
from_first,
from_current
};
iterator(dir* parent, mode mode_ = mode::from_first)
: m_parent(parent)
{
if (!m_parent)
{
return;
}
if (mode_ == mode::from_first)
{
m_parent->first(m_entry.name, m_entry.info);
}
else
{
m_parent->read(m_entry.name, m_entry.info);
}
if (m_entry.name.empty())
{
m_parent = nullptr;
}
}
entry& operator *()
{
return m_entry;
}
iterator& operator++()
{
*this = { m_parent, mode::from_current };
return *this;
}
bool operator !=(const iterator& rhs) const
{
return m_parent != rhs.m_parent;
}
};
iterator begin()
{
return{ this };
}
iterator end()
{
return{ nullptr };
}
};
// Get configuration directory
const std::string& get_config_dir();
// Get executable directory
const std::string& get_executable_dir();
}
+51
View File
@@ -0,0 +1,51 @@
#include "GNU.h"
#ifdef __APPLE__
#include <sys/types.h>
#include <sys/_types/_timespec.h>
#include <mach/mach.h>
#include <mach/clock.h>
#include <mach/mach_time.h>
#undef CPU_STATE_MAX
#define MT_NANO (+1.0E-9)
#define MT_GIGA UINT64_C(1000000000)
// TODO create a list of timers,
static double mt_timebase = 0.0;
static uint64_t mt_timestart = 0;
// TODO be more careful in a multithreaded environement
int clock_gettime(clockid_t clk_id, struct timespec *tp)
{
kern_return_t retval = KERN_SUCCESS;
if( clk_id == TIMER_ABSTIME)
{
if (!mt_timestart) { // only one timer, initilized on the first call to the TIMER
mach_timebase_info_data_t tb = { 0 };
mach_timebase_info(&tb);
mt_timebase = tb.numer;
mt_timebase /= tb.denom;
mt_timestart = mach_absolute_time();
}
double diff = (mach_absolute_time() - mt_timestart) * mt_timebase;
tp->tv_sec = diff * MT_NANO;
tp->tv_nsec = diff - (tp->tv_sec * MT_GIGA);
}
else // other clk_ids are mapped to the coresponding mach clock_service
{
clock_serv_t cclock;
mach_timespec_t mts;
host_get_clock_service(mach_host_self(), clk_id, &cclock);
retval = clock_get_time(cclock, &mts);
mach_port_deallocate(mach_task_self(), cclock);
tp->tv_sec = mts.tv_sec;
tp->tv_nsec = mts.tv_nsec;
}
return retval;
}
#endif /* __APPLE__ */
+292
View File
@@ -0,0 +1,292 @@
#pragma once
#include <emmintrin.h>
#if defined(_MSC_VER) && _MSC_VER <= 1800
#define thread_local __declspec(thread)
#elif __APPLE__
#define thread_local __thread
#endif
#if defined(_MSC_VER)
#define never_inline __declspec(noinline)
#else
#define never_inline __attribute__((noinline))
#endif
#if defined(_MSC_VER)
#define safe_buffers __declspec(safebuffers)
#else
#define safe_buffers
#endif
#if defined(_MSC_VER)
#define force_inline __forceinline
#else
#define force_inline __attribute__((always_inline))
#endif
#if defined(_MSC_VER) && _MSC_VER <= 1800
#define alignas(x) _CRT_ALIGN(x)
#endif
#if defined(__GNUG__)
#include <stdlib.h>
#include <cstdint>
#define _fpclass(x) std::fpclassify(x)
#define INFINITE 0xFFFFFFFF
#ifdef __APPLE__
// XXX only supports a single timer
#define TIMER_ABSTIME -1
/* The opengroup spec isn't clear on the mapping from REALTIME to CALENDAR
being appropriate or not.
http://pubs.opengroup.org/onlinepubs/009695299/basedefs/time.h.html */
#define CLOCK_REALTIME 1 // #define CALENDAR_CLOCK 1 from mach/clock_types.h
#define CLOCK_MONOTONIC 0 // #define SYSTEM_CLOCK 0
typedef int clockid_t;
/* the mach kernel uses struct mach_timespec, so struct timespec
is loaded from <sys/_types/_timespec.h> for compatability */
// struct timespec { time_t tv_sec; long tv_nsec; };
int clock_gettime(clockid_t clk_id, struct timespec *tp);
#endif /* __APPLE__ */
#endif /* __GNUG__ */
#if defined(_MSC_VER)
// Unsigned 128-bit integer implementation
struct alignas(16) u128
{
std::uint64_t lo, hi;
u128() = default;
u128(const u128&) = default;
u128(std::uint64_t l)
: lo(l)
, hi(0)
{
}
u128 operator +(const u128& r) const
{
u128 value;
_addcarry_u64(_addcarry_u64(0, r.lo, lo, &value.lo), r.hi, hi, &value.hi);
return value;
}
friend u128 operator +(const u128& l, std::uint64_t r)
{
u128 value;
_addcarry_u64(_addcarry_u64(0, r, l.lo, &value.lo), l.hi, 0, &value.hi);
return value;
}
friend u128 operator +(std::uint64_t l, const u128& r)
{
u128 value;
_addcarry_u64(_addcarry_u64(0, r.lo, l, &value.lo), 0, r.hi, &value.hi);
return value;
}
u128 operator -(const u128& r) const
{
u128 value;
_subborrow_u64(_subborrow_u64(0, r.lo, lo, &value.lo), r.hi, hi, &value.hi);
return value;
}
friend u128 operator -(const u128& l, std::uint64_t r)
{
u128 value;
_subborrow_u64(_subborrow_u64(0, r, l.lo, &value.lo), 0, l.hi, &value.hi);
return value;
}
friend u128 operator -(std::uint64_t l, const u128& r)
{
u128 value;
_subborrow_u64(_subborrow_u64(0, r.lo, l, &value.lo), r.hi, 0, &value.hi);
return value;
}
u128 operator +() const
{
return *this;
}
u128 operator -() const
{
u128 value;
_subborrow_u64(_subborrow_u64(0, lo, 0, &value.lo), hi, 0, &value.hi);
return value;
}
u128& operator ++()
{
_addcarry_u64(_addcarry_u64(0, 1, lo, &lo), 0, hi, &hi);
return *this;
}
u128 operator ++(int)
{
u128 value = *this;
_addcarry_u64(_addcarry_u64(0, 1, lo, &lo), 0, hi, &hi);
return value;
}
u128& operator --()
{
_subborrow_u64(_subborrow_u64(0, 1, lo, &lo), 0, hi, &hi);
return *this;
}
u128 operator --(int)
{
u128 value = *this;
_subborrow_u64(_subborrow_u64(0, 1, lo, &lo), 0, hi, &hi);
return value;
}
u128 operator ~() const
{
u128 value;
value.lo = ~lo;
value.hi = ~hi;
return value;
}
u128 operator &(const u128& r) const
{
u128 value;
value.lo = lo & r.lo;
value.hi = hi & r.hi;
return value;
}
u128 operator |(const u128& r) const
{
u128 value;
value.lo = lo | r.lo;
value.hi = hi | r.hi;
return value;
}
u128 operator ^(const u128& r) const
{
u128 value;
value.lo = lo ^ r.lo;
value.hi = hi ^ r.hi;
return value;
}
u128& operator +=(const u128& r)
{
_addcarry_u64(_addcarry_u64(0, r.lo, lo, &lo), r.hi, hi, &hi);
return *this;
}
u128& operator +=(uint64_t r)
{
_addcarry_u64(_addcarry_u64(0, r, lo, &lo), 0, hi, &hi);
return *this;
}
u128& operator &=(const u128& r)
{
lo &= r.lo;
hi &= r.hi;
return *this;
}
u128& operator |=(const u128& r)
{
lo |= r.lo;
hi |= r.hi;
return *this;
}
u128& operator ^=(const u128& r)
{
lo ^= r.lo;
hi ^= r.hi;
return *this;
}
};
#endif
inline std::uint32_t cntlz32(std::uint32_t arg)
{
#if defined(_MSC_VER)
unsigned long res;
return _BitScanReverse(&res, arg) ? res ^ 31 : 32;
#else
return arg ? __builtin_clzll(arg) - 32 : 32;
#endif
}
inline std::uint64_t cntlz64(std::uint64_t arg)
{
#if defined(_MSC_VER)
unsigned long res;
return _BitScanReverse64(&res, arg) ? res ^ 63 : 64;
#else
return arg ? __builtin_clzll(arg) : 64;
#endif
}
// compare 16 packed unsigned bytes (greater than)
inline __m128i sse_cmpgt_epu8(__m128i A, __m128i B)
{
// (A xor 0x80) > (B xor 0x80)
const auto sign = _mm_set1_epi32(0x80808080);
return _mm_cmpgt_epi8(_mm_xor_si128(A, sign), _mm_xor_si128(B, sign));
}
inline __m128i sse_cmpgt_epu16(__m128i A, __m128i B)
{
const auto sign = _mm_set1_epi32(0x80008000);
return _mm_cmpgt_epi16(_mm_xor_si128(A, sign), _mm_xor_si128(B, sign));
}
inline __m128i sse_cmpgt_epu32(__m128i A, __m128i B)
{
const auto sign = _mm_set1_epi32(0x80000000);
return _mm_cmpgt_epi32(_mm_xor_si128(A, sign), _mm_xor_si128(B, sign));
}
inline __m128 sse_exp2_ps(__m128 A)
{
const auto x0 = _mm_max_ps(_mm_min_ps(A, _mm_set1_ps(127.4999961f)), _mm_set1_ps(-127.4999961f));
const auto x1 = _mm_add_ps(x0, _mm_set1_ps(0.5f));
const auto x2 = _mm_sub_epi32(_mm_cvtps_epi32(x1), _mm_and_si128(_mm_castps_si128(_mm_cmpnlt_ps(_mm_setzero_ps(), x1)), _mm_set1_epi32(1)));
const auto x3 = _mm_sub_ps(x0, _mm_cvtepi32_ps(x2));
const auto x4 = _mm_mul_ps(x3, x3);
const auto x5 = _mm_mul_ps(x3, _mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(x4, _mm_set1_ps(0.023093347705f)), _mm_set1_ps(20.20206567f)), x4), _mm_set1_ps(1513.906801f)));
const auto x6 = _mm_mul_ps(x5, _mm_rcp_ps(_mm_sub_ps(_mm_add_ps(_mm_mul_ps(_mm_set1_ps(233.1842117f), x4), _mm_set1_ps(4368.211667f)), x5)));
return _mm_mul_ps(_mm_add_ps(_mm_add_ps(x6, x6), _mm_set1_ps(1.0f)), _mm_castsi128_ps(_mm_slli_epi32(_mm_add_epi32(x2, _mm_set1_epi32(127)), 23)));
}
inline __m128 sse_log2_ps(__m128 A)
{
const auto _1 = _mm_set1_ps(1.0f);
const auto _c = _mm_set1_ps(1.442695040f);
const auto x0 = _mm_max_ps(A, _mm_castsi128_ps(_mm_set1_epi32(0x00800000)));
const auto x1 = _mm_or_ps(_mm_and_ps(x0, _mm_castsi128_ps(_mm_set1_epi32(0x807fffff))), _1);
const auto x2 = _mm_rcp_ps(_mm_add_ps(x1, _1));
const auto x3 = _mm_mul_ps(_mm_sub_ps(x1, _1), x2);
const auto x4 = _mm_add_ps(x3, x3);
const auto x5 = _mm_mul_ps(x4, x4);
const auto x6 = _mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(_mm_set1_ps(-0.7895802789f), x5), _mm_set1_ps(16.38666457f)), x5), _mm_set1_ps(-64.1409953f));
const auto x7 = _mm_rcp_ps(_mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(_mm_set1_ps(-35.67227983f), x5), _mm_set1_ps(312.0937664f)), x5), _mm_set1_ps(-769.6919436f)));
const auto x8 = _mm_cvtepi32_ps(_mm_sub_epi32(_mm_srli_epi32(_mm_castps_si128(x0), 23), _mm_set1_epi32(127)));
return _mm_add_ps(_mm_mul_ps(_mm_mul_ps(_mm_mul_ps(_mm_mul_ps(x5, x6), x7), x4), _c), _mm_add_ps(_mm_mul_ps(x4, _c), x8));
}
-136
View File
@@ -1,136 +0,0 @@
#pragma once
#include "Array.h"
typedef u32 ID_TYPE;
struct ID
{
bool m_used;
wxString m_name;
u8 m_attr;
void* m_data;
ID(bool used = false, const wxString& name = wxEmptyString, void* data = NULL, const u8 attr = 0)
: m_used(used)
, m_name(name)
, m_data(data)
, m_attr(attr)
{
}
};
class IdManager
{
ArrayF<ID> IDs;
static const u64 first_id = 1;
void Cleanup()
{
while(IDs.GetCount())
{
const u32 num = IDs.GetCount()-1;
ID& id = IDs[num];
if(id.m_used) break;
IDs.RemoveAt(num);
}
}
public:
IdManager()
{
}
~IdManager()
{
Clear();
}
static ID_TYPE GetMaxID()
{
return (ID_TYPE)-1;
}
bool CheckID(const u64 id)
{
if(id == 0 || id > (u64)NumToID(IDs.GetCount()-1) || id >= GetMaxID()) return false;
return IDs[IDToNum(id)].m_used;
}
__forceinline const ID_TYPE NumToID(const ID_TYPE num) const
{
return num + first_id;
}
__forceinline const ID_TYPE IDToNum(const ID_TYPE id) const
{
return id - first_id;
}
void Clear()
{
IDs.Clear();
}
virtual ID_TYPE GetNewID(const wxString& name = wxEmptyString, void* data = NULL, const u8 attr = 0)
{
for(uint i=0; i<IDs.GetCount(); ++i)
{
if(IDs[i].m_used) continue;
return NumToID(i);
}
const ID_TYPE pos = IDs.GetCount();
if(NumToID(pos) >= GetMaxID()) return 0;
IDs.Add(new ID(true, name, data, attr));
return NumToID(pos);
}
ID& GetIDData(const ID_TYPE _id)
{
//if(!CheckID(_id)) return IDs.Get(0); //TODO
return IDs[IDToNum(_id)];
}
bool GetFirst(ID& dst, ID_TYPE* _id = NULL)
{
u32 pos = 0;
return GetNext(pos, dst, _id);
}
bool HasID(const s64 id)
{
if(id == wxID_ANY) return IDs.GetCount() != 0;
return CheckID(id);
}
bool GetNext(u32& pos, ID& dst, ID_TYPE* _id = NULL)
{
while(pos < IDs.GetCount())
{
ID& id = IDs[pos++];
if(!id.m_used) continue;
dst = id;
if(_id) *_id = NumToID(pos - 1);
return true;
}
return false;
}
virtual bool RemoveID(const ID_TYPE _id, bool free_data = true)
{
if(!CheckID(_id)) return false;
ID& id = IDs[IDToNum(_id)];
if(!id.m_used) return false;
id.m_used = false;
id.m_attr = 0;
id.m_name.Clear();
if(free_data) delete id.m_data;
id.m_data = NULL;
if(IDToNum(_id) == IDs.GetCount()-1) Cleanup();
return true;
}
};
+32
View File
@@ -0,0 +1,32 @@
#pragma once
template<typename T1, typename T2> struct range_t
{
T1 _min; // first value
T2 _max; // second value
};
template<typename T1, typename T2> constexpr range_t<std::decay_t<T1>, std::decay_t<T2>> make_range(T1&& _min, T2&& _max)
{
return{ std::forward<T1>(_min), std::forward<T2>(_max) };
}
template<typename T1, typename T2, typename T> constexpr bool operator <(const range_t<T1, T2>& range, const T& value)
{
return range._min < value && range._max < value;
}
template<typename T1, typename T2, typename T> constexpr bool operator <(const T& value, const range_t<T1, T2>& range)
{
return value < range._min && value < range._max;
}
template<typename T1, typename T2, typename T> constexpr bool operator ==(const range_t<T1, T2>& range, const T& value)
{
return !(value < range._min) && !(range._max < value);
}
template<typename T1, typename T2, typename T> constexpr bool operator ==(const T& value, const range_t<T1, T2>& range)
{
return !(value < range._min) && !(range._max < value);
}
+150
View File
@@ -0,0 +1,150 @@
#include "stdafx.h"
#include "Thread.h"
#include "File.h"
#include "Log.h"
#ifdef _WIN32
#include <Windows.h>
#endif
namespace _log
{
logger& get_logger()
{
// Use magic static for global logger instance
static logger instance;
return instance;
}
file_listener g_log_file(_PRGNAME_ ".log");
file_writer g_tty_file("TTY.log");
channel GENERAL("", level::notice);
channel LOADER("LDR", level::notice);
channel MEMORY("MEM", level::notice);
channel RSX("RSX", level::notice);
channel HLE("HLE", level::notice);
channel PPU("PPU", level::notice);
channel SPU("SPU", level::notice);
channel ARMv7("ARMv7");
}
_log::listener::listener()
{
// Register self
get_logger().add_listener(this);
}
_log::listener::~listener()
{
// Unregister self
get_logger().remove_listener(this);
}
_log::channel::channel(const std::string& name, _log::level init_level)
: name{ name }
, enabled{ init_level }
{
// TODO: register config property "name" associated with "enabled" member
}
void _log::logger::add_listener(_log::listener* listener)
{
std::lock_guard<shared_mutex> lock(m_mutex);
m_listeners.emplace(listener);
}
void _log::logger::remove_listener(_log::listener* listener)
{
std::lock_guard<shared_mutex> lock(m_mutex);
m_listeners.erase(listener);
}
void _log::logger::broadcast(const _log::channel& ch, _log::level sev, const std::string& text) const
{
reader_lock lock(m_mutex);
for (auto listener : m_listeners)
{
listener->log(ch, sev, text);
}
}
void _log::broadcast(const _log::channel& ch, _log::level sev, const std::string& text)
{
get_logger().broadcast(ch, sev, text);
}
_log::file_writer::file_writer(const std::string& name)
{
try
{
if (!m_file.open(fs::get_config_dir() + name, fom::rewrite | fom::append))
{
throw EXCEPTION("Can't create log file %s (error %d)", name, errno);
}
}
catch (const fmt::exception& e)
{
#ifdef _WIN32
MessageBoxA(0, e.what(), "_log::file_writer() failed", MB_ICONERROR);
#else
std::printf("_log::file_writer() failed: %s\n", e.what());
#endif
}
}
void _log::file_writer::log(const std::string& text)
{
m_file.write(text);
}
std::size_t _log::file_writer::size() const
{
return m_file.seek(0, fs::seek_cur);
}
void _log::file_listener::log(const _log::channel& ch, _log::level sev, const std::string& text)
{
std::string msg; msg.reserve(text.size() + 200);
// Used character: U+00B7 (Middle Dot)
switch (sev)
{
case level::always: msg = u8"·A "; break;
case level::fatal: msg = u8"·F "; break;
case level::error: msg = u8"·E "; break;
case level::todo: msg = u8"·U "; break;
case level::success: msg = u8"·S "; break;
case level::warning: msg = u8"·W "; break;
case level::notice: msg = u8"·! "; break;
case level::trace: msg = u8"·T "; break;
}
// TODO: print time?
if (auto t = thread_ctrl::get_current())
{
msg += '{';
msg += t->get_name();
msg += "} ";
}
if (ch.name.size())
{
msg += ch.name;
msg += sev == level::todo ? " TODO: " : ": ";
}
else if (sev == level::todo)
{
msg += "TODO: ";
}
msg += text;
msg += '\n';
file_writer::log(msg);
}
+155
View File
@@ -0,0 +1,155 @@
#pragma once
#include "SharedMutex.h"
namespace _log
{
enum class level : uint
{
always, // highest level (unused, cannot be disabled)
fatal,
error,
todo,
success,
warning,
notice,
trace, // lowest level (usually disabled)
};
struct channel;
struct listener;
// Log manager
class logger final
{
mutable shared_mutex m_mutex;
std::set<listener*> m_listeners;
public:
// Register listener
void add_listener(listener* listener);
// Unregister listener
void remove_listener(listener* listener);
// Send log message to all listeners
void broadcast(const channel& ch, level sev, const std::string& text) const;
};
// Send log message to global logger instance
void broadcast(const channel& ch, level sev, const std::string& text);
// Log channel (source)
struct channel
{
// Channel prefix (also used for identification)
const std::string name;
// The lowest logging level enabled for this channel (used for early filtering)
std::atomic<level> enabled;
// Initialization (max level enabled by default)
channel(const std::string& name, level = level::trace);
virtual ~channel() = default;
// Log without formatting
force_inline void log(level sev, const std::string& text) const
{
if (sev <= enabled)
broadcast(*this, sev, text);
}
// Log with formatting
template<typename... Args>
force_inline safe_buffers void format(level sev, const char* fmt, const Args&... args) const
{
if (sev <= enabled)
broadcast(*this, sev, fmt::format(fmt, fmt::do_unveil(args)...));
}
#define GEN_LOG_METHOD(_sev)\
template<typename... Args>\
force_inline void _sev(const char* fmt, const Args&... args)\
{\
return format<Args...>(level::_sev, fmt, args...);\
}
GEN_LOG_METHOD(fatal)
GEN_LOG_METHOD(error)
GEN_LOG_METHOD(todo)
GEN_LOG_METHOD(success)
GEN_LOG_METHOD(warning)
GEN_LOG_METHOD(notice)
GEN_LOG_METHOD(trace)
#undef GEN_LOG_METHOD
};
// Log listener (destination)
struct listener
{
listener();
virtual ~listener();
virtual void log(const channel& ch, level sev, const std::string& text) = 0;
};
class file_writer
{
// Could be memory-mapped file
fs::file m_file;
public:
file_writer(const std::string& name);
virtual ~file_writer() = default;
// Append raw data
void log(const std::string& text);
// Get current file size (may be used by secondary readers)
std::size_t size() const;
};
struct file_listener : public file_writer, public listener
{
file_listener(const std::string& name)
: file_writer(name)
, listener()
{
}
// Encode level, current thread name, channel name and write log message
virtual void log(const channel& ch, level sev, const std::string& text) override;
};
// Global variable for RPCS3.log
extern file_listener g_log_file;
// Global variable for TTY.log
extern file_writer g_tty_file;
// Small set of predefined channels:
extern channel GENERAL;
extern channel LOADER;
extern channel MEMORY;
extern channel RSX;
extern channel HLE;
extern channel PPU;
extern channel SPU;
extern channel ARMv7;
}
// Legacy:
#define LOG_SUCCESS(ch, fmt, ...) _log::ch.success(fmt, ##__VA_ARGS__)
#define LOG_NOTICE(ch, fmt, ...) _log::ch.notice (fmt, ##__VA_ARGS__)
#define LOG_WARNING(ch, fmt, ...) _log::ch.warning(fmt, ##__VA_ARGS__)
#define LOG_ERROR(ch, fmt, ...) _log::ch.error (fmt, ##__VA_ARGS__)
#define LOG_TODO(ch, fmt, ...) _log::ch.todo (fmt, ##__VA_ARGS__)
#define LOG_TRACE(ch, fmt, ...) _log::ch.trace (fmt, ##__VA_ARGS__)
#define LOG_FATAL(ch, fmt, ...) _log::ch.fatal (fmt, ##__VA_ARGS__)
+2 -2
View File
@@ -61,7 +61,7 @@ public:
Show();
}
__forceinline void Update(const u8 thread_id, const u64 value, const wxString& msg)
force_inline void Update(const u8 thread_id, const u64 value, const wxString& msg)
{
if(thread_id > m_cores) return;
@@ -95,4 +95,4 @@ public:
wxDialog::Close(force);
}
};
};
+120
View File
@@ -0,0 +1,120 @@
#include "stdafx.h"
#include "Utilities/Semaphore.h"
bool semaphore_t::try_wait()
{
// check m_value without interlocked op
if (m_var.load().value == 0)
{
return false;
}
// try to decrement m_value atomically
const auto old = m_var.atomic_op([](sync_var_t& var)
{
if (var.value)
{
var.value--;
}
});
// recheck atomic result
if (old.value == 0)
{
return false;
}
return true;
}
bool semaphore_t::try_post()
{
// check m_value without interlocked op
if (m_var.load().value >= max_value)
{
return false;
}
// try to increment m_value atomically
const auto old = m_var.atomic_op([&](sync_var_t& var)
{
if (var.value < max_value)
{
var.value++;
}
});
// recheck atomic result
if (old.value >= max_value)
{
return false;
}
if (old.waiters)
{
// notify waiting thread
std::lock_guard<std::mutex> lock(m_mutex);
m_cv.notify_one();
}
return true;
}
void semaphore_t::wait()
{
if (m_var.atomic_op([](sync_var_t& var) -> bool
{
if (var.value)
{
var.value--;
return true;
}
else
{
//var.waiters++;
return false;
}
}))
{
return;
}
std::unique_lock<std::mutex> lock(m_mutex);
m_var.atomic_op([](sync_var_t& var)
{
var.waiters++;
});
while (!m_var.atomic_op([](sync_var_t& var) -> bool
{
if (var.value)
{
var.value--;
var.waiters--;
return true;
}
else
{
return false;
}
}))
{
m_cv.wait(lock);
}
}
bool semaphore_t::post_and_wait()
{
// TODO: merge these functions? Probably has a race condition.
if (try_wait()) return false;
try_post();
wait();
return true;
}
+37
View File
@@ -0,0 +1,37 @@
#pragma once
class semaphore_t
{
// semaphore mutex
std::mutex m_mutex;
// semaphore condition variable
std::condition_variable m_cv;
struct sync_var_t
{
u32 value; // current semaphore value
u32 waiters; // current amount of waiters
};
// current semaphore value
atomic_t<sync_var_t> m_var;
public:
// max semaphore value
const u32 max_value;
semaphore_t(u32 max_value = 1, u32 value = 0)
: m_var(sync_var_t{ value, 0 })
, max_value(max_value)
{
}
bool try_wait();
bool try_post();
void wait();
bool post_and_wait();
};
+103
View File
@@ -0,0 +1,103 @@
#include "stdafx.h"
#include "SharedMutex.h"
void shared_mutex::impl_lock_shared(u32 old_value)
{
// Throw if reader count breaks the "second" limit (it should be impossible)
CHECK_ASSERTION((old_value & SM_READER_COUNT) != SM_READER_COUNT);
std::unique_lock<std::mutex> lock(m_mutex);
// Notify non-zero reader queue size
m_ctrl |= SM_READER_QUEUE;
// Compensate incorrectly increased reader count
if ((--m_ctrl & SM_READER_COUNT) == 0 && m_wq_size)
{
// Notify current exclusive owner (condition passed)
m_ocv.notify_one();
}
CHECK_ASSERTION(++m_rq_size);
// Obtain the reader lock
while (!atomic_op(m_ctrl, op_lock_shared))
{
m_rcv.wait(lock);
}
CHECK_ASSERTION(m_rq_size--);
if (m_rq_size == 0)
{
m_ctrl &= ~SM_READER_QUEUE;
}
}
void shared_mutex::impl_unlock_shared(u32 new_value)
{
// Throw if reader count was zero
CHECK_ASSERTION((new_value & SM_READER_COUNT) != SM_READER_COUNT);
// Mutex cannot be unlocked before notification because m_ctrl has been changed outside
std::lock_guard<std::mutex> lock(m_mutex);
if (m_wq_size && (new_value & SM_READER_COUNT) == 0)
{
// Notify current exclusive owner that the latest reader is gone
m_ocv.notify_one();
}
else if (m_rq_size)
{
m_rcv.notify_one();
}
}
void shared_mutex::impl_lock_excl(u32 value)
{
std::unique_lock<std::mutex> lock(m_mutex);
// Notify non-zero writer queue size
m_ctrl |= SM_WRITER_QUEUE;
CHECK_ASSERTION(++m_wq_size);
// Obtain the writer lock
while (!atomic_op(m_ctrl, op_lock_excl))
{
m_wcv.wait(lock);
}
// Wait for remaining readers
while ((m_ctrl & SM_READER_COUNT) != 0)
{
m_ocv.wait(lock);
}
CHECK_ASSERTION(m_wq_size--);
if (m_wq_size == 0)
{
m_ctrl &= ~SM_WRITER_QUEUE;
}
}
void shared_mutex::impl_unlock_excl(u32 value)
{
// Throw if was not locked exclusively
CHECK_ASSERTION(value & SM_WRITER_LOCK);
// Mutex cannot be unlocked before notification because m_ctrl has been changed outside
std::lock_guard<std::mutex> lock(m_mutex);
if (m_wq_size)
{
// Notify next exclusive owner
m_wcv.notify_one();
}
else if (m_rq_size)
{
// Notify all readers
m_rcv.notify_all();
}
}
+136
View File
@@ -0,0 +1,136 @@
#pragma once
//! An attempt to create effective implementation of "shared mutex", lock-free in optimistic case.
//! All locking and unlocking may be done by single LOCK XADD or LOCK CMPXCHG instructions.
//! MSVC implementation of std::shared_timed_mutex seems suboptimal.
//! std::shared_mutex is not available until C++17.
class shared_mutex final
{
enum : u32
{
SM_WRITER_LOCK = 1u << 31, // Exclusive lock flag, must be MSB
SM_WRITER_QUEUE = 1u << 30, // Flag set if m_wq_size != 0
SM_READER_QUEUE = 1u << 29, // Flag set if m_rq_size != 0
SM_READER_COUNT = SM_READER_QUEUE - 1, // Valid reader count bit mask
SM_READER_MAX = 1u << 24, // Max reader count
};
std::atomic<u32> m_ctrl{}; // Control atomic variable: reader count | SM_* flags
std::thread::id m_owner{}; // Current exclusive owner (TODO: implement only for debug mode?)
std::mutex m_mutex;
u32 m_rq_size{}; // Reader queue size (threads waiting on m_rcv)
u32 m_wq_size{}; // Writer queue size (threads waiting on m_wcv+m_ocv)
std::condition_variable m_rcv; // Reader queue
std::condition_variable m_wcv; // Writer queue
std::condition_variable m_ocv; // For current exclusive owner
static bool op_lock_shared(u32& ctrl)
{
// Check writer flags and reader limit
return (ctrl & ~SM_READER_QUEUE) < SM_READER_MAX ? ctrl++, true : false;
}
static bool op_lock_excl(u32& ctrl)
{
// Test and set writer lock
return (ctrl & SM_WRITER_LOCK) == 0 ? ctrl |= SM_WRITER_LOCK, true : false;
}
void impl_lock_shared(u32 old_ctrl);
void impl_unlock_shared(u32 new_ctrl);
void impl_lock_excl(u32 ctrl);
void impl_unlock_excl(u32 ctrl);
public:
shared_mutex() = default;
// Lock in shared mode
void lock_shared()
{
const u32 old_ctrl = m_ctrl++;
// Check flags and reader limit
if (old_ctrl >= SM_READER_MAX)
{
impl_lock_shared(old_ctrl);
}
}
// Try to lock in shared mode
bool try_lock_shared()
{
return atomic_op(m_ctrl, [](u32& ctrl)
{
// Check flags and reader limit
return ctrl < SM_READER_MAX ? ctrl++, true : false;
});
}
// Unlock in shared mode
void unlock_shared()
{
const u32 new_ctrl = --m_ctrl;
// Check if notification required
if (new_ctrl >= SM_READER_MAX)
{
impl_unlock_shared(new_ctrl);
}
}
// Lock exclusively
void lock()
{
u32 value = 0;
if (!m_ctrl.compare_exchange_strong(value, SM_WRITER_LOCK))
{
impl_lock_excl(value);
}
}
// Try to lock exclusively
bool try_lock()
{
u32 value = 0;
return m_ctrl.compare_exchange_strong(value, SM_WRITER_LOCK);
}
// Unlock exclusively
void unlock()
{
const u32 value = m_ctrl.fetch_add(SM_WRITER_LOCK);
// Check if notification required
if (value != SM_WRITER_LOCK)
{
impl_unlock_excl(value);
}
}
};
//! Simplified shared (reader) lock implementation, similar to std::lock_guard.
//! std::shared_lock may be used instead if necessary.
class reader_lock final
{
shared_mutex& m_mutex;
public:
reader_lock(const reader_lock&) = delete;
reader_lock(shared_mutex& mutex)
: m_mutex(mutex)
{
m_mutex.lock_shared();
}
~reader_lock()
{
m_mutex.unlock_shared();
}
};
+55
View File
@@ -0,0 +1,55 @@
#include "stdafx.h"
#include "Emu/CPU/CPUThread.h"
#include "SleepQueue.h"
void sleep_queue_entry_t::add_entry()
{
m_queue.emplace_back(std::static_pointer_cast<CPUThread>(m_thread.shared_from_this()));
}
void sleep_queue_entry_t::remove_entry()
{
for (auto it = m_queue.begin(); it != m_queue.end(); it++)
{
if (it->get() == &m_thread)
{
m_queue.erase(it);
return;
}
}
}
bool sleep_queue_entry_t::find() const
{
for (auto it = m_queue.begin(); it != m_queue.end(); it++)
{
if (it->get() == &m_thread)
{
return true;
}
}
return false;
}
sleep_queue_entry_t::sleep_queue_entry_t(sleep_entry_t& cpu, sleep_queue_t& queue)
: m_thread(cpu)
, m_queue(queue)
{
add_entry();
cpu.sleep();
}
sleep_queue_entry_t::sleep_queue_entry_t(sleep_entry_t& cpu, sleep_queue_t& queue, const defer_sleep_t&)
: m_thread(cpu)
, m_queue(queue)
{
cpu.sleep();
}
sleep_queue_entry_t::~sleep_queue_entry_t()
{
remove_entry();
m_thread.awake();
}
+45
View File
@@ -0,0 +1,45 @@
#pragma once
using sleep_entry_t = class CPUThread;
using sleep_queue_t = std::deque<std::shared_ptr<sleep_entry_t>>;
static struct defer_sleep_t {} const defer_sleep{};
// automatic object handling a thread entry in the sleep queue
class sleep_queue_entry_t final
{
sleep_entry_t& m_thread;
sleep_queue_t& m_queue;
void add_entry();
void remove_entry();
bool find() const;
public:
// add specified thread to the sleep queue
sleep_queue_entry_t(sleep_entry_t& entry, sleep_queue_t& queue);
// don't add specified thread to the sleep queue
sleep_queue_entry_t(sleep_entry_t& entry, sleep_queue_t& queue, const defer_sleep_t&);
// removes specified thread from the sleep queue if added
~sleep_queue_entry_t();
// add thread to the sleep queue
void enter()
{
add_entry();
}
// remove thread from the sleep queue
void leave()
{
remove_entry();
}
// check whether the thread exists in the sleep queue
explicit operator bool() const
{
return find();
}
};
+300
View File
@@ -0,0 +1,300 @@
#include "stdafx.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/string.h>")
#pragma warning(disable : 4996)
#include <wx/string.h>
#pragma warning(pop)
std::string v128::to_hex() const
{
return fmt::format("%016llx%016llx", _u64[1], _u64[0]);
}
std::string v128::to_xyzw() const
{
return fmt::format("x: %g y: %g z: %g w: %g", _f[3], _f[2], _f[1], _f[0]);
}
std::string fmt::to_hex(u64 value, u64 count)
{
if (count - 1 >= 16)
{
throw EXCEPTION("Invalid count: 0x%llx", count);
}
count = std::max<u64>(count, 16 - cntlz64(value) / 4);
char res[16] = {};
for (size_t i = count - 1; ~i; i--, value /= 16)
{
res[i] = "0123456789abcdef"[value % 16];
}
return std::string(res, count);
}
std::string fmt::to_udec(u64 value)
{
char res[20] = {};
size_t first = sizeof(res);
if (!value)
{
res[--first] = '0';
}
for (; value; value /= 10)
{
res[--first] = '0' + (value % 10);
}
return std::string(&res[first], sizeof(res) - first);
}
std::string fmt::to_sdec(s64 svalue)
{
const bool sign = svalue < 0;
u64 value = sign ? -svalue : svalue;
char res[20] = {};
size_t first = sizeof(res);
if (!value)
{
res[--first] = '0';
}
for (; value; value /= 10)
{
res[--first] = '0' + (value % 10);
}
if (sign)
{
res[--first] = '-';
}
return std::string(&res[first], sizeof(res) - first);
}
//extern const std::string fmt::placeholder = "???";
std::string fmt::replace_first(const std::string& src, const std::string& from, const std::string& to)
{
auto pos = src.find(from);
if (pos == std::string::npos)
{
return src;
}
return (pos ? src.substr(0, pos) + to : to) + std::string(src.c_str() + pos + from.length());
}
std::string fmt::replace_all(const std::string &src, const std::string& from, const std::string& to)
{
std::string target = src;
for (auto pos = target.find(from); pos != std::string::npos; pos = target.find(from, pos + 1))
{
target = (pos ? target.substr(0, pos) + to : to) + std::string(target.c_str() + pos + from.length());
pos += to.length();
}
return target;
}
//TODO: move this wx Stuff somewhere else
//convert a wxString to a std::string encoded in utf8
//CAUTION, only use this to interface with wxWidgets classes
std::string fmt::ToUTF8(const wxString& right)
{
auto ret = std::string(((const char *)right.utf8_str()));
return ret;
}
//convert a std::string encoded in utf8 to a wxString
//CAUTION, only use this to interface with wxWidgets classes
wxString fmt::FromUTF8(const std::string& right)
{
auto ret = wxString::FromUTF8(right.c_str());
return ret;
}
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with CmpNoCase from wxString
int fmt::CmpNoCase(const std::string& a, const std::string& b)
{
if (a.length() != b.length())
{
return -1;
}
else
{
return std::equal(a.begin(),
a.end(),
b.begin(),
[](const char& a, const char& b){return ::tolower(a) == ::tolower(b); })
? 0 : -1;
}
}
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with CmpNoCase from wxString
void fmt::Replace(std::string &str, const std::string &searchterm, const std::string& replaceterm)
{
size_t cursor = 0;
do
{
cursor = str.find(searchterm, cursor);
if (cursor != std::string::npos)
{
str.replace(cursor, searchterm.size(), replaceterm);
cursor += replaceterm.size();
}
else
{
break;
}
} while (true);
}
std::vector<std::string> fmt::rSplit(const std::string& source, const std::string& delim)
{
std::vector<std::string> ret;
size_t cursor = 0;
do
{
size_t prevcurs = cursor;
cursor = source.find(delim, cursor);
if (cursor != std::string::npos)
{
ret.push_back(source.substr(prevcurs,cursor-prevcurs));
cursor += delim.size();
}
else
{
ret.push_back(source.substr(prevcurs));
break;
}
} while (true);
return ret;
}
std::vector<std::string> fmt::split(const std::string& source, std::initializer_list<std::string> separators, bool is_skip_empty)
{
std::vector<std::string> result;
size_t cursor_begin = 0;
for (size_t cursor_end = 0; cursor_end < source.length(); ++cursor_end)
{
for (auto &separator : separators)
{
if (strncmp(source.c_str() + cursor_end, separator.c_str(), separator.length()) == 0)
{
std::string candidate = source.substr(cursor_begin, cursor_end - cursor_begin);
if (!is_skip_empty || !candidate.empty())
result.push_back(candidate);
cursor_begin = cursor_end + separator.length();
cursor_end = cursor_begin - 1;
break;
}
}
}
if (cursor_begin != source.length())
{
result.push_back(source.substr(cursor_begin));
}
return std::move(result);
}
std::string fmt::trim(const std::string& source, const std::string& values)
{
std::size_t begin = source.find_first_not_of(values);
if (begin == source.npos)
return{};
return source.substr(begin, source.find_last_not_of(values) + 1);
}
std::string fmt::tolower(std::string source)
{
std::transform(source.begin(), source.end(), source.begin(), ::tolower);
return source;
}
std::string fmt::toupper(std::string source)
{
std::transform(source.begin(), source.end(), source.begin(), ::toupper);
return source;
}
std::string fmt::escape(std::string source)
{
const std::pair<std::string, std::string> escape_list[] =
{
{ "\\", "\\\\" },
{ "\a", "\\a" },
{ "\b", "\\b" },
{ "\f", "\\f" },
{ "\n", "\\n\n" },
{ "\r", "\\r" },
{ "\t", "\\t" },
{ "\v", "\\v" },
};
source = fmt::replace_all(source, escape_list);
for (char c = 0; c < 32; c++)
{
if (c != '\n') source = fmt::replace_all(source, std::string(1, c), fmt::format("\\x%02X", c));
}
return source;
}
bool fmt::match(const std::string &source, const std::string &mask)
{
std::size_t source_position = 0, mask_position = 0;
for (; source_position < source.size() && mask_position < mask.size(); ++mask_position, ++source_position)
{
switch (mask[mask_position])
{
case '?': break;
case '*':
for (std::size_t test_source_position = source_position; test_source_position < source.size(); ++test_source_position)
{
if (match(source.substr(test_source_position), mask.substr(mask_position + 1)))
{
return true;
}
}
return false;
default:
if (source[source_position] != mask[mask_position])
{
return false;
}
break;
}
}
if (source_position != source.size())
return false;
if (mask_position != mask.size())
return false;
return true;
}
+359
View File
@@ -0,0 +1,359 @@
#pragma once
class wxString;
#if defined(_MSC_VER) && _MSC_VER <= 1800
#define snprintf _snprintf
#endif
namespace fmt
{
//struct empty_t{};
//extern const std::string placeholder;
template <typename T>
std::string AfterLast(const std::string& source, T searchstr)
{
size_t search_pos = source.rfind(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(search_pos);
}
template <typename T>
std::string BeforeLast(const std::string& source, T searchstr)
{
size_t search_pos = source.rfind(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(0, search_pos);
}
template <typename T>
std::string AfterFirst(const std::string& source, T searchstr)
{
size_t search_pos = source.find(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(search_pos);
}
template <typename T>
std::string BeforeFirst(const std::string& source, T searchstr)
{
size_t search_pos = source.find(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(0, search_pos);
}
// write `fmt` from `pos` to the first occurence of `fmt::placeholder` to
// the stream `os`. Then write `arg` to to the stream. If there's no
// `fmt::placeholder` after `pos` everything in `fmt` after pos is written
// to `os`. Then `arg` is written to `os` after appending a space character
//template<typename T>
//empty_t write(const std::string &fmt, std::ostream &os, std::string::size_type &pos, T &&arg)
//{
// std::string::size_type ins = fmt.find(placeholder, pos);
// if (ins == std::string::npos)
// {
// os.write(fmt.data() + pos, fmt.size() - pos);
// os << ' ' << arg;
// pos = fmt.size();
// }
// else
// {
// os.write(fmt.data() + pos, ins - pos);
// os << arg;
// pos = ins + placeholder.size();
// }
// return{};
//}
// typesafe version of a sprintf-like function. Returns the printed to
// string. To mark positions where the arguments are supposed to be
// inserted use `fmt::placeholder`. If there's not enough placeholders
// the rest of the arguments are appended at the end, seperated by spaces
//template<typename ... Args>
//std::string SFormat(const std::string &fmt, Args&& ... parameters)
//{
// std::ostringstream os;
// std::string::size_type pos = 0;
// std::initializer_list<empty_t> { write(fmt, os, pos, parameters)... };
// if (!fmt.empty())
// {
// os.write(fmt.data() + pos, fmt.size() - pos);
// }
// std::string result = os.str();
// return result;
//}
std::string replace_first(const std::string& src, const std::string& from, const std::string& to);
std::string replace_all(const std::string &src, const std::string& from, const std::string& to);
template<size_t list_size>
std::string replace_all(std::string src, const std::pair<std::string, std::string>(&list)[list_size])
{
for (size_t pos = 0; pos < src.length(); ++pos)
{
for (size_t i = 0; i < list_size; ++i)
{
const size_t comp_length = list[i].first.length();
if (src.length() - pos < comp_length)
continue;
if (src.substr(pos, comp_length) == list[i].first)
{
src = (pos ? src.substr(0, pos) + list[i].second : list[i].second) + src.substr(pos + comp_length);
pos += list[i].second.length() - 1;
break;
}
}
}
return src;
}
template<size_t list_size>
std::string replace_all(std::string src, const std::pair<std::string, std::function<std::string()>>(&list)[list_size])
{
for (size_t pos = 0; pos < src.length(); ++pos)
{
for (size_t i = 0; i < list_size; ++i)
{
const size_t comp_length = list[i].first.length();
if (src.length() - pos < comp_length)
continue;
if (src.substr(pos, comp_length) == list[i].first)
{
src = (pos ? src.substr(0, pos) + list[i].second() : list[i].second()) + src.substr(pos + comp_length);
pos += list[i].second().length() - 1;
break;
}
}
}
return src;
}
std::string to_hex(u64 value, u64 count = 1);
std::string to_udec(u64 value);
std::string to_sdec(s64 value);
template<typename T, bool is_enum = std::is_enum<T>::value> struct unveil
{
using result_type = T;
force_inline static result_type get_value(const T& arg)
{
return arg;
}
};
template<> struct unveil<const char*, false>
{
using result_type = const char* const;
force_inline static result_type get_value(const char* const& arg)
{
return arg;
}
};
template<std::size_t N> struct unveil<char[N], false>
{
using result_type = const char* const;
force_inline static result_type get_value(const char(&arg)[N])
{
return arg;
}
};
template<> struct unveil<std::string, false>
{
using result_type = const char*;
force_inline static result_type get_value(const std::string& arg)
{
return arg.c_str();
}
};
template<typename T> struct unveil<T, true>
{
using result_type = std::underlying_type_t<T>;
force_inline static result_type get_value(const T& arg)
{
return static_cast<result_type>(arg);
}
};
template<typename T, bool Se> struct unveil<se_t<T, Se>, false>
{
using result_type = typename unveil<T>::result_type;
force_inline static result_type get_value(const se_t<T, Se>& arg)
{
return unveil<T>::get_value(arg);
}
};
template<typename T>
force_inline typename unveil<T>::result_type do_unveil(const T& arg)
{
return unveil<T>::get_value(arg);
}
// Formatting function with special functionality:
//
// std::string is forced to .c_str()
// be_t<> is forced to .value() (fmt::do_unveil reverts byte order automatically)
//
// External specializations for fmt::do_unveil (can be found in another headers):
// vm::ptr, vm::bptr, ... (fmt::do_unveil) (vm_ptr.h) (with appropriate address type, using .addr() can be avoided)
// vm::ref, vm::bref, ... (fmt::do_unveil) (vm_ref.h)
//
template<typename... Args>
safe_buffers std::string format(const char* fmt, const Args&... args)
{
// fixed stack buffer for the first attempt
std::array<char, 4096> fixed_buf;
// possibly dynamically allocated buffer for the second attempt
std::unique_ptr<char[]> buf;
// pointer to the current buffer
char* buf_addr = fixed_buf.data();
for (std::size_t buf_size = fixed_buf.size();;)
{
#ifndef _MSC_VER
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-security"
#endif
const std::size_t len = std::snprintf(buf_addr, buf_size, fmt, do_unveil(args)...);
#ifndef _MSC_VER
#pragma GCC diagnostic pop
#endif
if (len > INT_MAX)
{
throw std::runtime_error("std::snprintf() failed");
}
if (len < buf_size)
{
return{ buf_addr, len };
}
buf.reset(buf_addr = new char[buf_size = len + 1]);
}
}
struct exception : public std::exception
{
std::unique_ptr<char[]> message;
template<typename... Args> never_inline safe_buffers exception(const char* file, int line, const char* func, const char* text, Args... args) noexcept
{
const std::string data = format(text, args...) + format("\n(in file %s:%d, in function %s)", file, line, func);
message.reset(new char[data.size() + 1]);
std::memcpy(message.get(), data.c_str(), data.size() + 1);
}
exception(const exception& other) noexcept
{
const std::size_t size = std::strlen(other.message.get());
message.reset(new char[size + 1]);
std::memcpy(message.get(), other.message.get(), size + 1);
}
virtual const char* what() const noexcept override
{
return message.get();
}
};
//convert a wxString to a std::string encoded in utf8
//CAUTION, only use this to interface with wxWidgets classes
std::string ToUTF8(const wxString& right);
//convert a std::string encoded in utf8 to a wxString
//CAUTION, only use this to interface with wxWidgets classes
wxString FromUTF8(const std::string& right);
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with CmpNoCase from wxString
int CmpNoCase(const std::string& a, const std::string& b);
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with Replace from wxString
void Replace(std::string &str, const std::string &searchterm, const std::string& replaceterm);
std::vector<std::string> rSplit(const std::string& source, const std::string& delim);
std::vector<std::string> split(const std::string& source, std::initializer_list<std::string> separators, bool is_skip_empty = true);
std::string trim(const std::string& source, const std::string& values = " \t");
template<typename T>
std::string merge(const T& source, const std::string& separator)
{
if (!source.size())
{
return{};
}
std::string result;
auto it = source.begin();
auto end = source.end();
for (--end; it != end; ++it)
{
result += *it + separator;
}
return result + source.back();
}
template<typename T>
std::string merge(std::initializer_list<T> sources, const std::string& separator)
{
if (!sources.size())
{
return{};
}
std::string result;
bool first = true;
for (auto &v : sources)
{
if (first)
{
result = fmt::merge(v, separator);
first = false;
}
else
{
result += separator + fmt::merge(v, separator);
}
}
return result;
}
std::string tolower(std::string source);
std::string toupper(std::string source);
std::string escape(std::string source);
bool match(const std::string &source, const std::string &mask);
}
+1350 -52
View File
File diff suppressed because it is too large Load Diff
+459 -170
View File
@@ -1,221 +1,510 @@
#pragma once
#include "Array.h"
#include <functional>
#include <thread>
#include <mutex>
#include <condition_variable>
class ThreadExec;
// Will report exception and call std::abort() if put in catch(...)
[[noreturn]] void catch_all_exceptions();
class ThreadBase
// Thread control class
class thread_ctrl final
{
protected:
wxString m_name;
bool m_detached;
static thread_local thread_ctrl* g_tls_this_thread;
// Name getter
std::function<std::string()> m_name;
// Thread handle (be careful)
std::thread m_thread;
// Thread result
std::future<void> m_future;
// Functions scheduled at thread exit
std::deque<std::function<void()>> m_atexit;
// Called at the thread start
static void initialize();
// Called at the thread end
static void finalize() noexcept;
public:
wxMutex m_main_mutex;
protected:
ThreadBase(bool detached = true, const wxString& name = "Unknown ThreadBase");
public:
ThreadExec* m_executor;
virtual void Task()=0;
virtual void Start();
virtual void Resume();
virtual void Pause();
virtual void Stop(bool wait = true);
virtual bool Wait() const;
virtual bool IsRunning() const;
virtual bool IsPaused() const;
virtual bool IsAlive() const;
virtual bool TestDestroy() const;
virtual wxString GetThreadName() const;
virtual void SetThreadName(const wxString& name);
};
ThreadBase* GetCurrentNamedThread();
class ThreadExec : public wxThread
{
wxCriticalSection m_wait_for_exit;
volatile bool m_alive;
public:
ThreadBase* m_parent;
ThreadExec(bool detached, ThreadBase* parent)
: wxThread(detached ? wxTHREAD_DETACHED : wxTHREAD_JOINABLE)
, m_parent(parent)
, m_alive(true)
template<typename T>
thread_ctrl(T&& name)
: m_name(std::forward<T>(name))
{
Create();
Run();
}
void Stop(bool wait = true)
// Disable copy/move constructors and operators
thread_ctrl(const thread_ctrl&) = delete;
~thread_ctrl();
// Get thread name
std::string get_name() const;
// Get future result (may throw)
void join()
{
if(!m_alive) return;
return m_future.get();
}
m_parent = nullptr;
// Get current thread (may be nullptr)
static const thread_ctrl* get_current()
{
return g_tls_this_thread;
}
if(wait)
// Register function at thread exit (for the current thread)
template<typename T>
static inline void at_exit(T&& func)
{
CHECK_ASSERTION(g_tls_this_thread);
g_tls_this_thread->m_atexit.emplace_front(std::forward<T>(func));
}
// Named thread factory
template<typename N, typename F>
static inline std::shared_ptr<thread_ctrl> spawn(N&& name, F&& func)
{
auto ctrl = std::make_shared<thread_ctrl>(std::forward<N>(name));
std::promise<void> promise;
ctrl->m_future = promise.get_future();
ctrl->m_thread = std::thread([ctrl, task = std::forward<F>(func)](std::promise<void> promise)
{
Delete();
//wxCriticalSectionLocker lock(m_wait_for_exit);
}
}
g_tls_this_thread = ctrl.get();
ExitCode Entry()
{
//wxCriticalSectionLocker lock(m_wait_for_exit);
m_parent->Task();
m_alive = false;
if(m_parent) m_parent->m_executor = nullptr;
return (ExitCode)0;
try
{
initialize();
task();
finalize();
promise.set_value();
}
catch (...)
{
finalize();
promise.set_exception(std::current_exception());
}
}, std::move(promise));
return ctrl;
}
};
//ThreadBase* GetCurrentThread();
template<typename T> class MTPacketBuffer
class named_thread_t : public std::enable_shared_from_this<named_thread_t>
{
// Pointer to managed resource (shared with actual thread)
std::shared_ptr<thread_ctrl> m_thread;
public:
// Thread condition variable for external use (this thread waits on it, other threads may notify)
std::condition_variable cv;
// Thread mutex for external use (can be used with `cv`)
std::mutex mutex;
protected:
volatile bool m_busy;
volatile u32 m_put, m_get;
Array<u8> m_buffer;
u32 m_max_buffer_size;
mutable wxCriticalSection m_cs_main;
// Thread task (called in the thread)
virtual void on_task() = 0;
void CheckBusy()
{
m_busy = m_put >= m_max_buffer_size;
}
// Thread finalization (called after on_task)
virtual void on_exit() {}
// ID initialization (called through id_aux_initialize)
virtual void on_id_aux_initialize() { start(); }
// ID finalization (called through id_aux_finalize)
virtual void on_id_aux_finalize() { join(); }
public:
MTPacketBuffer(u32 max_buffer_size)
: m_max_buffer_size(max_buffer_size)
{
Flush();
}
named_thread_t() = default;
~MTPacketBuffer()
{
Flush();
}
virtual ~named_thread_t() = default;
void Flush()
{
wxCriticalSectionLocker lock(m_cs_main);
m_put = m_get = 0;
m_buffer.Clear();
m_busy = false;
}
// Deleted copy/move constructors + copy/move operators
named_thread_t(const named_thread_t&) = delete;
private:
virtual void _push(const T& v) = 0;
virtual T _pop() = 0;
// Get thread name
virtual std::string get_name() const;
public:
void Push(const T& v)
{
wxCriticalSectionLocker lock(m_cs_main);
_push(v);
}
// Start thread (cannot be called from the constructor: should throw bad_weak_ptr in such case)
void start();
T Pop()
{
wxCriticalSectionLocker lock(m_cs_main);
return _pop();
}
// Join thread (get future result)
void join();
bool HasNewPacket() const { wxCriticalSectionLocker lock(m_cs_main); return m_put != m_get; }
bool IsBusy() const { return m_busy; }
// Check whether the thread is not in "empty state"
bool is_started() const { return m_thread.operator bool(); }
// Compare with the current thread
bool is_current() const { CHECK_ASSERTION(m_thread); return thread_ctrl::get_current() == m_thread.get(); }
// Get thread_ctrl
const thread_ctrl* get_thread_ctrl() const { return m_thread.get(); }
friend void id_aux_initialize(named_thread_t* ptr) { ptr->on_id_aux_initialize(); }
friend void id_aux_finalize(named_thread_t* ptr) { ptr->on_id_aux_finalize(); }
};
static __forceinline bool SemaphorePostAndWait(wxSemaphore& sem)
// Wrapper for named thread, joins automatically in the destructor, can only be used in function scope
class scope_thread_t final
{
if(sem.TryWait() != wxSEMA_BUSY) return false;
std::shared_ptr<thread_ctrl> m_thread;
sem.Post();
sem.Wait();
return true;
}
/*
class StepThread : public ThreadBase
{
wxSemaphore m_main_sem;
wxSemaphore m_destroy_sem;
volatile bool m_exit;
protected:
StepThread(const wxString& name = "Unknown StepThread")
: ThreadBase(true, name)
, m_exit(false)
public:
template<typename N, typename F>
scope_thread_t(N&& name, F&& func)
: m_thread(thread_ctrl::spawn(std::forward<N>(name), std::forward<F>(func)))
{
}
virtual ~StepThread() throw()
// Deleted copy/move constructors + copy/move operators
scope_thread_t(const scope_thread_t&) = delete;
// Destructor with exceptions allowed
~scope_thread_t() noexcept(false)
{
m_thread->join();
}
};
private:
virtual void Task()
extern const std::function<bool()> SQUEUE_ALWAYS_EXIT;
extern const std::function<bool()> SQUEUE_NEVER_EXIT;
bool squeue_test_exit();
template<typename T, u32 sq_size = 256>
class squeue_t
{
struct squeue_sync_var_t
{
m_exit = false;
while(!TestDestroy())
struct
{
m_main_sem.Wait();
u32 position : 31;
u32 pop_lock : 1;
};
struct
{
u32 count : 31;
u32 push_lock : 1;
};
};
if(TestDestroy() || m_exit) break;
atomic_t<squeue_sync_var_t> m_sync;
Step();
mutable std::mutex m_rcv_mutex;
mutable std::mutex m_wcv_mutex;
mutable std::condition_variable m_rcv;
mutable std::condition_variable m_wcv;
T m_data[sq_size];
enum squeue_sync_var_result : u32
{
SQSVR_OK = 0,
SQSVR_LOCKED = 1,
SQSVR_FAILED = 2,
};
public:
squeue_t()
: m_sync(squeue_sync_var_t{})
{
}
u32 get_max_size() const
{
return sq_size;
}
bool is_full() const
{
return m_sync.load().count == sq_size;
}
bool push(const T& data, const std::function<bool()>& test_exit)
{
u32 pos = 0;
while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.push_lock)
{
return SQSVR_LOCKED;
}
if (sync.count == sq_size)
{
return SQSVR_FAILED;
}
sync.push_lock = 1;
pos = sync.position + sync.count;
return SQSVR_OK;
}))
{
if (res == SQSVR_FAILED && (test_exit() || squeue_test_exit()))
{
return false;
}
std::unique_lock<std::mutex> wcv_lock(m_wcv_mutex);
m_wcv.wait_for(wcv_lock, std::chrono::milliseconds(1));
}
while(!TestDestroy()) Sleep(0);
if(m_destroy_sem.TryWait() != wxSEMA_NO_ERROR) m_destroy_sem.Post();
}
m_data[pos >= sq_size ? pos - sq_size : pos] = data;
virtual void Step()=0;
public:
void DoStep()
{
if(IsRunning()) m_main_sem.Post();
}
void WaitForExit()
{
if(TestDestroy()) m_destroy_sem.Wait();
}
void WaitForNextStep()
{
if(!IsRunning()) return;
while(m_main_sem.TryWait() != wxSEMA_NO_ERROR) Sleep(0);
}
void Exit(bool wait = false)
{
if(!IsAlive()) return;
if(m_main_sem.TryWait() != wxSEMA_NO_ERROR)
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
m_exit = true;
m_main_sem.Post();
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.push_lock);
sync.push_lock = 0;
sync.count++;
});
m_rcv.notify_one();
m_wcv.notify_one();
return true;
}
bool push(const T& data, const volatile bool* do_exit)
{
return push(data, [do_exit](){ return do_exit && *do_exit; });
}
force_inline bool push(const T& data)
{
return push(data, SQUEUE_NEVER_EXIT);
}
force_inline bool try_push(const T& data)
{
return push(data, SQUEUE_ALWAYS_EXIT);
}
bool pop(T& data, const std::function<bool()>& test_exit)
{
u32 pos = 0;
while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (!sync.count)
{
return SQSVR_FAILED;
}
if (sync.pop_lock)
{
return SQSVR_LOCKED;
}
sync.pop_lock = 1;
pos = sync.position;
return SQSVR_OK;
}))
{
if (res == SQSVR_FAILED && (test_exit() || squeue_test_exit()))
{
return false;
}
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
Delete();
data = m_data[pos];
if(wait) WaitForExit();
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.pop_lock);
sync.pop_lock = 0;
sync.position++;
sync.count--;
if (sync.position == sq_size)
{
sync.position = 0;
}
});
m_rcv.notify_one();
m_wcv.notify_one();
return true;
}
bool pop(T& data, const volatile bool* do_exit)
{
return pop(data, [do_exit](){ return do_exit && *do_exit; });
}
force_inline bool pop(T& data)
{
return pop(data, SQUEUE_NEVER_EXIT);
}
force_inline bool try_pop(T& data)
{
return pop(data, SQUEUE_ALWAYS_EXIT);
}
bool peek(T& data, u32 start_pos, const std::function<bool()>& test_exit)
{
assert(start_pos < sq_size);
u32 pos = 0;
while (u32 res = m_sync.atomic_op([&pos, start_pos](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.count <= start_pos)
{
return SQSVR_FAILED;
}
if (sync.pop_lock)
{
return SQSVR_LOCKED;
}
sync.pop_lock = 1;
pos = sync.position + start_pos;
return SQSVR_OK;
}))
{
if (res == SQSVR_FAILED && (test_exit() || squeue_test_exit()))
{
return false;
}
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
data = m_data[pos >= sq_size ? pos - sq_size : pos];
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.pop_lock);
sync.pop_lock = 0;
});
m_rcv.notify_one();
return true;
}
bool peek(T& data, u32 start_pos, const volatile bool* do_exit)
{
return peek(data, start_pos, [do_exit](){ return do_exit && *do_exit; });
}
force_inline bool peek(T& data, u32 start_pos = 0)
{
return peek(data, start_pos, SQUEUE_NEVER_EXIT);
}
force_inline bool try_peek(T& data, u32 start_pos = 0)
{
return peek(data, start_pos, SQUEUE_ALWAYS_EXIT);
}
class squeue_data_t
{
T* const m_data;
const u32 m_pos;
const u32 m_count;
squeue_data_t(T* data, u32 pos, u32 count)
: m_data(data)
, m_pos(pos)
, m_count(count)
{
}
public:
T& operator [] (u32 index)
{
assert(index < m_count);
index += m_pos;
index = index < sq_size ? index : index - sq_size;
return m_data[index];
}
};
void process(void(*proc)(squeue_data_t data))
{
u32 pos, count;
while (m_sync.atomic_op([&pos, &count](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.pop_lock || sync.push_lock)
{
return SQSVR_LOCKED;
}
pos = sync.position;
count = sync.count;
sync.pop_lock = 1;
sync.push_lock = 1;
return SQSVR_OK;
}))
{
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
proc(squeue_data_t(m_data, pos, count));
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.pop_lock && sync.push_lock);
sync.pop_lock = 0;
sync.push_lock = 0;
});
m_wcv.notify_one();
m_rcv.notify_one();
}
void clear()
{
while (m_sync.atomic_op([](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.pop_lock || sync.push_lock)
{
return SQSVR_LOCKED;
}
sync.pop_lock = 1;
sync.push_lock = 1;
return SQSVR_OK;
}))
{
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
m_sync.exchange({});
m_wcv.notify_one();
m_rcv.notify_one();
}
};
*/
+32 -27
View File
@@ -1,47 +1,52 @@
#pragma once
#include <chrono>
class Timer
{
private:
bool stopped;
double startTimeInMicroSec;
double endTimeInMicroSec;
LARGE_INTEGER frequency;
LARGE_INTEGER startCycle;
LARGE_INTEGER endCycle;
bool m_stopped;
std::chrono::high_resolution_clock::time_point m_start;
std::chrono::high_resolution_clock::time_point m_end;
public:
Timer()
Timer() : m_stopped(false)
{
QueryPerformanceFrequency(&frequency);
startCycle.QuadPart = 0;
endCycle.QuadPart = 0;
stopped = false;
startTimeInMicroSec = 0;
endTimeInMicroSec = 0;
}
void Start()
{
stopped = false;
QueryPerformanceCounter(&startCycle);
m_stopped = false;
m_start = std::chrono::high_resolution_clock::now();
}
void Stop()
{
stopped = true;
QueryPerformanceCounter(&endCycle);
m_stopped = true;
m_end = std::chrono::high_resolution_clock::now();
}
double GetElapsedTimeInSec(){return GetElapsedTimeInMicroSec() / 1000000.0;}
double GetElapsedTimeInMilliSec(){return GetElapsedTimeInMicroSec() / 1000.0;}
double GetElapsedTimeInMicroSec()
double GetElapsedTimeInSec() const
{
if(!stopped) QueryPerformanceCounter(&endCycle);
startTimeInMicroSec = startCycle.QuadPart * (1000000.0 / frequency.QuadPart);
endTimeInMicroSec = endCycle.QuadPart * (1000000.0 / frequency.QuadPart);
return endTimeInMicroSec - startTimeInMicroSec;
return double(GetElapsedTimeInMicroSec()) / 1000000.0;
}
};
double GetElapsedTimeInMilliSec() const
{
return double(GetElapsedTimeInMicroSec()) / 1000.0;
}
u64 GetElapsedTimeInMicroSec() const
{
std::chrono::high_resolution_clock::time_point now = m_stopped ? m_end : std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(now - m_start).count();
}
u64 GetElapsedTimeInNanoSec() const
{
std::chrono::high_resolution_clock::time_point now = m_stopped ? m_end : std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::nanoseconds>(now - m_start).count();
}
};
+45
View File
@@ -0,0 +1,45 @@
#include "stdafx.h"
#include "Utilities/Log.h"
#include "VirtualMemory.h"
#ifdef _WIN32
#include <Windows.h>
#else
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#endif
namespace memory_helper
{
void* reserve_memory(size_t size)
{
#ifdef _WIN32
void* ret = VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_NOACCESS);
CHECK_ASSERTION(ret != NULL);
#else
void* ret = mmap(nullptr, size, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0);
CHECK_ASSERTION(ret != 0);
#endif
return ret;
}
void commit_page_memory(void* pointer, size_t page_size)
{
#ifdef _WIN32
CHECK_ASSERTION(VirtualAlloc((u8*)pointer, page_size, MEM_COMMIT, PAGE_READWRITE) != NULL);
#else
CHECK_ASSERTION(mprotect((u8*)pointer, page_size, PROT_READ | PROT_WRITE) != -1);
#endif
}
void free_reserved_memory(void* pointer, size_t size)
{
#ifdef _WIN32
CHECK_ASSERTION(VirtualFree(pointer, 0, MEM_RELEASE) != 0);
#else
CHECK_ASSERTION(munmap(pointer, size) == 0);
#endif
}
}
+22
View File
@@ -0,0 +1,22 @@
#pragma once
namespace memory_helper
{
/**
* Reserve size bytes of virtual memory and returns it.
* The memory should be commited before usage.
*/
void* reserve_memory(size_t size);
/**
* Commit page_size bytes of virtual memory starting at pointer.
* That is, bake reserved memory with physical memory.
* pointer should belong to a range of reserved memory.
*/
void commit_page_memory(void* pointer, size_t page_size);
/**
* Free memory alloced via reserve_memory.
*/
void free_reserved_memory(void* pointer, size_t size);
}
+172
View File
@@ -0,0 +1,172 @@
#include "stdafx.h"
#include "config_context.h"
#include "StrFmt.h"
#include <iostream>
#include <sstream>
void config_context_t::group::init()
{
if(!m_cfg->m_groups[full_name()])
m_cfg->m_groups[full_name()] = this;
}
config_context_t::group::group(config_context_t* cfg, const std::string& name)
: m_cfg(cfg)
, m_name(name)
, m_parent(nullptr)
{
init();
}
config_context_t::group::group(group* parent, const std::string& name)
: m_cfg(parent->m_cfg)
, m_name(name)
, m_parent(parent)
{
init();
}
void config_context_t::group::set_parent(config_context_t* cfg)
{
m_cfg = cfg;
init();
}
std::string config_context_t::group::name() const
{
return m_name;
}
std::string config_context_t::group::full_name() const
{
if (m_parent)
return m_parent->full_name() + "/" + m_name;
return m_name;
}
void config_context_t::assign(const config_context_t& rhs)
{
for (auto &rhs_g : rhs.m_groups)
{
auto g = m_groups.at(rhs_g.first);
for (auto rhs_e : rhs_g.second->entries)
{
if (g->entries[rhs_e.first])
g->entries[rhs_e.first]->value_from(rhs_e.second);
else
g->add_entry(rhs_e.first, rhs_e.second->string_value());
}
}
}
void config_context_t::deserialize(std::istream& stream)
{
set_defaults();
uint line_index = 0;
std::string line;
group *current_group = nullptr;
while (std::getline(stream, line))
{
++line_index;
line = fmt::trim(line);
if (line.empty())
continue;
if (line.front() == '[' && line.back() == ']')
{
std::string group_name = line.substr(1, line.length() - 2);
auto found = m_groups.find(group_name);
if (found == m_groups.end())
{
std::cerr << line_index << ": group '" << group_name << "' not exists. ignored" << std::endl;
current_group = nullptr;
continue;
}
current_group = found->second;
continue;
}
if (current_group == nullptr)
{
std::cerr << line_index << ": line '" << line << "' ignored, no group." << std::endl;
continue;
}
auto name_value = fmt::split(line, { "=" });
switch (name_value.size())
{
case 1:
{
if (current_group->entries[fmt::trim(name_value[0])])
current_group->entries[fmt::trim(name_value[0])]->string_value({});
else
current_group->add_entry(fmt::trim(name_value[0]), std::string{});
}
break;
default:
std::cerr << line_index << ": line '" << line << "' has more than one symbol '='. used only first" << std::endl;
case 2:
{
if (current_group->entries[fmt::trim(name_value[0])])
current_group->entries[fmt::trim(name_value[0])]->string_value(fmt::trim(name_value[1]));
else
current_group->add_entry(fmt::trim(name_value[0]), fmt::trim(name_value[1]));
}
break;
}
}
}
void config_context_t::serialize(std::ostream& stream) const
{
for (auto &g : m_groups)
{
stream << "[" + g.first + "]" << std::endl;
for (auto &e : g.second->entries)
{
stream << e.first << "=" << e.second->string_value() << std::endl;
}
stream << std::endl;
}
}
void config_context_t::set_defaults()
{
for (auto &g : m_groups)
{
for (auto &e : g.second->entries)
{
e.second->to_default();
}
}
}
std::string config_context_t::to_string() const
{
std::ostringstream result;
serialize(result);
return result.str();
}
void config_context_t::from_string(const std::string& str)
{
std::istringstream source(str);
deserialize(source);
}
+163
View File
@@ -0,0 +1,163 @@
#pragma once
#include <unordered_map>
#include <string>
#include "convert.h"
class config_context_t
{
public:
class entry_base;
protected:
class group
{
group* m_parent;
config_context_t* m_cfg;
std::string m_name;
std::vector<std::unique_ptr<entry_base>> m_entries;
void init();
public:
std::unordered_map<std::string, entry_base *> entries;
group(config_context_t* cfg, const std::string& name);
group(group* parent, const std::string& name);
void set_parent(config_context_t* cfg);
std::string name() const;
std::string full_name() const;
template<typename T>
void add_entry(const std::string& name, const T& def_value)
{
m_entries.emplace_back(std::make_unique<entry<T>>(this, name, def_value));
}
template<typename T>
T get_entry_value(const std::string& name, const T& def_value)
{
if (!entries[name])
add_entry(name, def_value);
return convert::to<T>(entries[name]->string_value());
}
template<typename T>
void set_entry_value(const std::string& name, const T& value)
{
if (entries[name])
entries[name]->string_value(convert::to<std::string>(value));
else
add_entry(name, value);
}
friend config_context_t;
};
public:
class entry_base
{
public:
virtual std::string name() = 0;
virtual void to_default() = 0;
virtual std::string string_value() = 0;
virtual void string_value(const std::string& value) = 0;
virtual void value_from(const entry_base* rhs) = 0;
};
template<typename T>
class entry : public entry_base
{
T m_default_value;
T m_value;
group* m_parent;
std::string m_name;
public:
entry(group* parent, const std::string& name, const T& default_value)
: m_parent(parent)
, m_name(name)
, m_default_value(default_value)
, m_value(default_value)
{
if(!parent->entries[name])
parent->entries[name] = this;
}
T default_value() const
{
return m_default_value;
}
T value() const
{
return m_value;
}
void value(const T& new_value)
{
m_value = new_value;
}
std::string name() override
{
return m_name;
}
void to_default() override
{
value(default_value());
}
std::string string_value() override
{
return convert::to<std::string>(value());
}
void string_value(const std::string &new_value) override
{
value(convert::to<T>(new_value));
}
void value_from(const entry_base* rhs) override
{
value(static_cast<const entry*>(rhs)->value());
}
entry& operator = (const T& new_value)
{
value(new_value);
return *this;
}
template<typename T2>
entry& operator = (const T2& new_value)
{
value(static_cast<T>(new_value));
return *this;
}
explicit operator const T&() const
{
return m_value;
}
};
private:
std::unordered_map<std::string, group*> m_groups;
public:
config_context_t() = default;
void assign(const config_context_t& rhs);
void serialize(std::ostream& stream) const;
void deserialize(std::istream& stream);
void set_defaults();
std::string to_string() const;
void from_string(const std::string&);
};
+279
View File
@@ -0,0 +1,279 @@
#pragma once
#include <string>
#include "types.h"
namespace convert
{
template<typename ReturnType, typename FromType>
struct to_impl_t;
template<typename Type>
struct to_impl_t<Type, Type>
{
static Type func(const Type& value)
{
return value;
}
};
template<>
struct to_impl_t<std::string, bool>
{
static std::string func(bool value)
{
return value ? "true" : "false";
}
};
template<>
struct to_impl_t<bool, std::string>
{
static bool func(const std::string& value)
{
return value == "true" ? true : value == "false" ? false : throw std::invalid_argument(__FUNCTION__);
}
};
template<>
struct to_impl_t<std::string, signed char>
{
static std::string func(signed char value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, unsigned char>
{
static std::string func(unsigned char value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, short>
{
static std::string func(short value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, unsigned short>
{
static std::string func(unsigned short value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, int>
{
static std::string func(int value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, unsigned int>
{
static std::string func(unsigned int value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, long>
{
static std::string func(long value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, unsigned long>
{
static std::string func(unsigned long value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, long long>
{
static std::string func(long long value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, unsigned long long>
{
static std::string func(unsigned long long value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, float>
{
static std::string func(float value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, double>
{
static std::string func(double value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, long double>
{
static std::string func(long double value)
{
return std::to_string(value);
}
};
template<>
struct to_impl_t<std::string, size2i>
{
static std::string func(size2i value)
{
return std::to_string(value.width) + "x" + std::to_string(value.height);
}
};
template<>
struct to_impl_t<std::string, position2i>
{
static std::string func(position2i value)
{
return std::to_string(value.x) + ":" + std::to_string(value.y);
}
};
template<>
struct to_impl_t<int, std::string>
{
static int func(const std::string& value)
{
return std::stoi(value);
}
};
template<>
struct to_impl_t<unsigned int, std::string>
{
static unsigned int func(const std::string& value)
{
return (unsigned long)std::stoul(value);
}
};
template<>
struct to_impl_t<long, std::string>
{
static long func(const std::string& value)
{
return std::stol(value);
}
};
template<>
struct to_impl_t<unsigned long, std::string>
{
static unsigned long func(const std::string& value)
{
return std::stoul(value);
}
};
template<>
struct to_impl_t<long long, std::string>
{
static long long func(const std::string& value)
{
return std::stoll(value);
}
};
template<>
struct to_impl_t<unsigned long long, std::string>
{
static unsigned long long func(const std::string& value)
{
return std::stoull(value);
}
};
template<>
struct to_impl_t<float, std::string>
{
static float func(const std::string& value)
{
return std::stof(value);
}
};
template<>
struct to_impl_t<double, std::string>
{
static double func(const std::string& value)
{
return std::stod(value);
}
};
template<>
struct to_impl_t<long double, std::string>
{
static long double func(const std::string& value)
{
return std::stold(value);
}
};
template<>
struct to_impl_t<size2i, std::string>
{
static size2i func(const std::string& value)
{
const auto& data = fmt::split(value, { "x" });
return { std::stoi(data[0]), std::stoi(data[1]) };
}
};
template<>
struct to_impl_t<position2i, std::string>
{
static position2i func(const std::string& value)
{
const auto& data = fmt::split(value, { ":" });
return { std::stoi(data[0]), std::stoi(data[1]) };
}
};
template<typename ReturnType, typename FromType>
ReturnType to(FromType value)
{
return to_impl_t<std::remove_all_extents_t<ReturnType>, std::remove_all_extents_t<FromType>>::func(value);
}
}
+420
View File
@@ -0,0 +1,420 @@
#pragma once
#include <functional>
#include <deque>
#include <list>
enum class event_result
{
skip,
handled
};
class events_queue
{
std::deque<std::function<void()>> m_queue;
public:
/*template<typename Type>
events_queue& operator += (event<Type> &evt)
{
evt.set_queue(this);
return *this;
}
*/
void invoke(std::function<void()> function)
{
m_queue.push_back(function);
}
void flush()
{
while (!m_queue.empty())
{
std::function<void()> function = m_queue.front();
function();
m_queue.pop_front();
}
}
};
template<typename ...AT>
class event
{
using func_t = std::function<event_result(AT...)>;
using entry_t = typename std::list<func_t>::iterator;
std::list<func_t> handlers;
events_queue& m_queue;
public:
event(events_queue* queue = nullptr) : m_queue(*queue)
{
}
void invoke(AT... args)
{
m_queue.invoke(std::bind([&](AT... eargs)
{
for (auto &&handler : handlers)
{
if (handler(eargs...) == event_result::handled)
break;
}
}, args...));
}
void operator()(AT... args)
{
invoke(args...);
}
entry_t bind(func_t func)
{
handlers.push_front(func);
return handlers.begin();
}
template<typename T>
entry_t bind(T *caller, event_result(T::*callback)(AT...))
{
return bind([=](AT... args) { return (caller->*callback)(args...); });
}
template<typename T>
entry_t bind(T *caller, void(T::*callback)(AT...))
{
return bind([=](AT... args) { (caller->*callback)(args...); return event_result::skip; });
}
void unbind(entry_t entry)
{
handlers.erase(entry);
}
entry_t operator +=(func_t func)
{
return bind(func);
}
void operator -=(entry_t what)
{
return unbind(what);
}
};
template<>
class event<void>
{
using func_t = std::function<event_result()>;
using entry_t = std::list<func_t>::iterator;
std::list<func_t> m_listeners;
events_queue* m_queue;
void invoke_listeners()
{
for (auto &&listener : m_listeners)
{
if (listener() == event_result::handled)
break;
}
}
public:
event(events_queue* queue = nullptr) : m_queue(queue)
{
}
void invoke()
{
if (m_queue)
m_queue->invoke([=]() { invoke_listeners(); });
else
invoke_listeners();
}
void operator()()
{
invoke();
}
entry_t bind(func_t func)
{
m_listeners.push_front(func);
return m_listeners.begin();
}
template<typename T>
entry_t bind(T *caller, event_result(T::*callback)())
{
return bind([=]() { return (caller->*callback)(); });
}
template<typename T>
entry_t bind(T *caller, void(T::*callback)())
{
return bind([=]() { (caller->*callback)(); return event_result::skip; });
}
void unbind(entry_t what)
{
m_listeners.erase(what);
}
entry_t operator +=(func_t func)
{
return bind(func);
}
void operator -=(entry_t what)
{
return unbind(what);
}
};
class event_binder_t
{
template<typename Type>
class binder_impl_t
{
event_binder_t *m_binder;
event<Type> *m_event;
public:
binder_impl_t(event_binder_t *binder, event<Type> *evt)
: m_binder(binder)
, m_event(evt)
{
}
};
public:
template<typename Type>
binder_impl_t<Type> operator()(event<Type>& evt) const
{
return{ this, &evt };
}
};
template<typename T>
class combined_data;
template<typename T>
class local_data
{
public:
using type = T;
protected:
type m_data;
void set(type value)
{
m_data = value;
}
type get() const
{
return m_data;
}
bool equals(T value) const
{
return get() == value;
}
bool invoke_event(type value)
{
return false;
}
friend combined_data<T>;
};
template<typename T>
class combined_data
{
public:
using type = T;
protected:
local_data<type> m_local_data;
std::function<void(type)> m_invoke_event_function;
std::function<type()> m_get_function;
bool invoke_event(type value)
{
if (m_invoke_event_function)
{
m_invoke_event_function(value);
return true;
}
return false;
}
void set(type value)
{
m_local_data.set(value);
}
type get() const
{
if (m_get_function)
{
return m_get_function();
}
return m_local_data.get();
}
type get_local() const
{
return m_local_data.get();
}
bool equals(T value) const
{
return get_local() == value;
}
public:
void invoke_event_function(std::function<void(type)> function)
{
m_invoke_event_function = function;
}
void get_function(std::function<type()> function)
{
m_get_function = function;
}
};
template<typename T, typename base_type_ = local_data<T>>
class data_event : public base_type_
{
public:
using type = T;
using base_type = base_type_;
protected:
event_result dochange(type new_value)
{
auto old_value = get();
base_type::set(new_value);
onchanged(old_value);
return event_result::handled;
}
public:
event<type> onchange;
event<type> onchanged;
data_event(events_queue *queue = nullptr)
: onchange(queue)
, onchanged(queue)
{
onchange.bind(this, &data_event::dochange);
base_type::set({});
}
type get() const
{
return base_type::get();
}
type operator()() const
{
return get();
}
void change(type value, bool use_custom_invoke_event = true)
{
if (!base_type::equals(value))
{
if (!use_custom_invoke_event || !base_type::invoke_event(value))
{
onchange(value);
}
}
}
operator const type() const
{
return get();
}
operator type()
{
return get();
}
data_event& operator = (type value)
{
change(value);
return *this;
}
template<typename aType> auto operator + (aType value) const { return get() + value; }
template<typename aType> auto operator - (aType value) const { return get() - value; }
template<typename aType> auto operator * (aType value) const { return get() * value; }
template<typename aType> auto operator / (aType value) const { return get() / value; }
template<typename aType> auto operator % (aType value) const { return get() % value; }
template<typename aType> auto operator & (aType value) const { return get() & value; }
template<typename aType> auto operator | (aType value) const { return get() | value; }
template<typename aType> auto operator ^ (aType value) const { return get() ^ value; }
template<typename aType> data_event& operator += (aType value) { return *this = get() + value; }
template<typename aType> data_event& operator -= (aType value) { return *this = get() - value; }
template<typename aType> data_event& operator *= (aType value) { return *this = get() * value; }
template<typename aType> data_event& operator /= (aType value) { return *this = get() / value; }
template<typename aType> data_event& operator %= (aType value) { return *this = get() % value; }
template<typename aType> data_event& operator &= (aType value) { return *this = get() & value; }
template<typename aType> data_event& operator |= (aType value) { return *this = get() | value; }
template<typename aType> data_event& operator ^= (aType value) { return *this = get() ^ value; }
data_event& operator ++()
{
type value = get();
return *this = ++value;
}
type operator ++(int)
{
type value = get();
type result = value;
*this = value++;
return result;
}
data_event& operator --()
{
type value = get();
return *this = --value;
}
type operator --(int)
{
type value = get();
type result = value;
*this = value--;
return result;
}
};
struct with_event_binder
{
event_binder_t event_binder;
};
struct test_obj
{
void test(int)
{
event<int> i;
auto it = i.bind(this, &test_obj::test);
i(5);
i.unbind(it);
i(6);
}
};
+74
View File
@@ -0,0 +1,74 @@
@echo off
rem // This program is free software: you can redistribute it and/or modify
rem // it under the terms of the GNU General Public License as published by
rem // the Free Software Foundation, version 2.0 or later versions.
rem // This program is distributed in the hope that it will be useful,
rem // but WITHOUT ANY WARRANTY; without even the implied warranty of
rem // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
rem // GNU General Public License 2.0 for more details.
rem // A copy of the GPL 2.0 should have been included with the program.
rem // If not, see http://www.gnu.org/licenses/
rem // Official git repository and contact information can be found at
rem // https://github.com/RPCS3/rpcs3 and http://rpcs3.net/.
setlocal ENABLEDELAYEDEXPANSION
set GIT_VERSION_FILE=%~p0..\rpcs3\git-version.h
if not defined GIT (
set GIT="git"
)
call %GIT% describe > NUL 2> NUL
if errorlevel 1 (
echo Git not on path, trying default Msysgit paths
set GIT="%ProgramFiles(x86)%\Git\bin\git.exe"
call !GIT! describe > NUL 2> NUL
if errorlevel 1 (
set GIT="%ProgramFiles%\Git\bin\git.exe"
)
)
if exist "%GIT_VERSION_FILE%" (
rem // Skip updating the file if RPCS3_GIT_VERSION_NO_UPDATE is 1.
findstr /B /C:"#define RPCS3_GIT_VERSION_NO_UPDATE 1" "%GIT_VERSION_FILE%" > NUL
if not errorlevel 1 (
goto done
)
)
call %GIT% describe --always > NUL 2> NUL
if errorlevel 1 (
echo Unable to update git-version.h, git not found.
echo If you don't want to add it to your path, set the GIT environment variable.
echo // This is a generated file. > "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION "unknown" >> "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo // If you don't want this file to update/recompile, change to 1. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION_NO_UPDATE 0 >> "%GIT_VERSION_FILE%"
goto done
)
for /F %%I IN ('call %GIT% rev-list HEAD --count') do set GIT_VERSION=%%I
for /F %%I IN ('call %GIT% rev-parse --short HEAD') do set GIT_VERSION=%GIT_VERSION%-%%I
rem // Don't modify the file if it already has the current version.
if exist "%GIT_VERSION_FILE%" (
findstr /C:"%GIT_VERSION%" "%GIT_VERSION_FILE%" > NUL
if not errorlevel 1 (
goto done
)
)
echo // This is a generated file. > "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION "%GIT_VERSION%" >> "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo // If you don't want this file to update/recompile, change to 1. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION_NO_UPDATE 0 >> "%GIT_VERSION_FILE%"
:done
+41
View File
@@ -0,0 +1,41 @@
#include "stdafx.h"
#include "restore_new.h"
#include "Utilities/Log.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/image.h>")
#pragma warning(disable : 4996)
#include <wx/image.h>
#pragma warning(pop)
#include "define_new_memleakdetect.h"
#ifndef _WIN32
#include <dirent.h>
#endif
#include "rPlatform.h"
rImage::rImage()
{
handle = static_cast<void*>(new wxImage());
}
rImage::~rImage()
{
delete static_cast<wxImage*>(handle);
}
void rImage::Create(int width, int height, void *data, void *alpha)
{
static_cast<wxImage*>(handle)->Create(width, height, static_cast<unsigned char*>(data), static_cast<unsigned char*>(alpha));
}
void rImage::SaveFile(const std::string& name, rImageType type)
{
if (type == rBITMAP_TYPE_PNG)
{
static_cast<wxImage*>(handle)->SaveFile(fmt::FromUTF8(name),wxBITMAP_TYPE_PNG);
}
else
{
throw EXCEPTION("unsupported type");
}
}
+40
View File
@@ -0,0 +1,40 @@
#pragma once
/**********************************************************************
*********** RSX Debugger
************************************************************************/
struct RSXDebuggerProgram
{
u32 id;
u32 vp_id;
u32 fp_id;
std::string vp_shader;
std::string fp_shader;
bool modified;
RSXDebuggerProgram()
: modified(false)
{
}
};
extern std::vector<RSXDebuggerProgram> m_debug_programs;
/**********************************************************************
*********** Image stuff
************************************************************************/
enum rImageType
{
rBITMAP_TYPE_PNG
};
struct rImage
{
rImage();
rImage(const rImage &) = delete;
~rImage();
void Create(int width , int height, void *data, void *alpha);
void SaveFile(const std::string& name, rImageType type);
void *handle;
};
+235
View File
@@ -0,0 +1,235 @@
#include "stdafx.h"
#include "rTime.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/datetime.h>")
#pragma warning(disable : 4996)
#include <wx/datetime.h>
#pragma warning(pop)
std::string rDefaultDateTimeFormat = "%c";
rTimeSpan::rTimeSpan()
{
handle = static_cast<void *>(new wxTimeSpan());
}
rTimeSpan::~rTimeSpan()
{
delete static_cast<wxTimeSpan*>(handle);
}
rTimeSpan::rTimeSpan(const rTimeSpan& other)
{
handle = static_cast<void *>(new wxTimeSpan(*static_cast<wxTimeSpan*>(other.handle)));
}
rTimeSpan::rTimeSpan(int a, int b , int c, int d)
{
handle = static_cast<void *>(new wxTimeSpan(a,b,c,d));
}
rDateSpan::rDateSpan()
{
handle = static_cast<void *>(new wxDateSpan());
}
rDateSpan::~rDateSpan()
{
delete static_cast<wxDateSpan*>(handle);
}
rDateSpan::rDateSpan(const rDateSpan& other)
{
handle = static_cast<void *>(new wxDateSpan(*static_cast<wxDateSpan*>(other.handle)));
}
rDateSpan::rDateSpan(int a, int b, int c, int d)
{
handle = static_cast<void *>(new wxDateSpan(a,b,c,d));
}
rDateTime::rDateTime()
{
handle = static_cast<void *>(new wxDateTime());
}
rDateTime::~rDateTime()
{
delete static_cast<wxDateTime*>(handle);
}
rDateTime::rDateTime(const rDateTime& other)
{
handle = static_cast<void *>(new wxDateTime(*static_cast<wxDateTime*>(other.handle)));
}
rDateTime::rDateTime(const time_t& time)
{
handle = static_cast<void *>(new wxDateTime(time));
}
rDateTime::rDateTime(u16 day, rDateTime::Month month, u16 year, u16 hour, u16 minute, u16 second, u32 millisecond)
{
handle = static_cast<void *>(new wxDateTime(day,(wxDateTime::Month)month,year,hour,minute,second,millisecond));
}
rDateTime rDateTime::UNow()
{
rDateTime time;
delete static_cast<wxDateTime*>(time.handle);
time.handle = static_cast<void *>(new wxDateTime(wxDateTime::UNow()));
return time;
}
rDateTime rDateTime::FromUTC(bool val)
{
rDateTime time(*this);
void *temp = time.handle;
time.handle = static_cast<void *>(new wxDateTime(static_cast<wxDateTime*>(temp)->FromTimezone(wxDateTime::GMT0, val)));
delete static_cast<wxDateTime*>(temp);
return time;
}
rDateTime rDateTime::ToUTC(bool val)
{
rDateTime time(*this);
void *temp = time.handle;
time.handle = static_cast<void *>(new wxDateTime(static_cast<wxDateTime*>(temp)->ToTimezone(wxDateTime::GMT0, val)));
delete static_cast<wxDateTime*>(temp);
return time;
}
time_t rDateTime::GetTicks()
{
return static_cast<wxDateTime*>(handle)->GetTicks();
}
void rDateTime::Add(const rTimeSpan& span)
{
static_cast<wxDateTime*>(handle)->Add(*static_cast<wxTimeSpan*>(span.handle));
}
void rDateTime::Add(const rDateSpan& span)
{
static_cast<wxDateTime*>(handle)->Add(*static_cast<wxDateSpan*>(span.handle));
}
wxDateTime::TimeZone convertTZ(rDateTime::rTimeZone tz)
{
switch (tz)
{
case rDateTime::Local:
return wxDateTime::Local;
case rDateTime::GMT0:
return wxDateTime::GMT0;
case rDateTime::UTC:
return wxDateTime::UTC;
default:
throw EXCEPTION("WRONG DATETIME");
}
}
std::string rDateTime::Format(const std::string &format, const rTimeZone &tz) const
{
return fmt::ToUTF8(static_cast<wxDateTime*>(handle)->Format(fmt::FromUTF8(format),convertTZ(tz)));
}
void rDateTime::ParseDateTime(const char* format)
{
static_cast<wxDateTime*>(handle)->ParseDateTime(format);
}
u32 rDateTime::GetAsDOS()
{
return static_cast<wxDateTime*>(handle)->GetAsDOS();
}
rDateTime &rDateTime::SetFromDOS(u32 fromdos)
{
static_cast<wxDateTime*>(handle)->SetFromDOS(fromdos);
return *this;
}
bool rDateTime::IsLeapYear(int year, rDateTime::Calender cal)
{
if (cal == Gregorian)
{
return wxDateTime::IsLeapYear(year, wxDateTime::Gregorian);
}
else
{
return wxDateTime::IsLeapYear(year, wxDateTime::Julian);
}
}
int rDateTime::GetNumberOfDays(rDateTime::Month month, int year, rDateTime::Calender cal)
{
if (cal == Gregorian)
{
return wxDateTime::GetNumberOfDays(static_cast<wxDateTime::Month>(month), year, wxDateTime::Gregorian);
}
else
{
return wxDateTime::GetNumberOfDays(static_cast<wxDateTime::Month>(month), year, wxDateTime::Julian);
}
}
void rDateTime::SetToWeekDay(rDateTime::WeekDay day, int n, rDateTime::Month month, int year)
{
static_cast<wxDateTime*>(handle)->SetToWeekDay(
static_cast<wxDateTime::WeekDay>(day)
, n
, static_cast<wxDateTime::Month>(month)
, year
);
}
int rDateTime::GetWeekDay()
{
return static_cast<wxDateTime*>(handle)->GetWeekDay();
}
u16 rDateTime::GetYear(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetYear(convertTZ(timezone));
}
u16 rDateTime::GetMonth(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetMonth(convertTZ(timezone));
}
u16 rDateTime::GetDay(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetDay(convertTZ(timezone));
}
u16 rDateTime::GetHour(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetHour(convertTZ(timezone));
}
u16 rDateTime::GetMinute(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetMinute(convertTZ(timezone));
}
u16 rDateTime::GetSecond(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetSecond(convertTZ(timezone));
}
u32 rDateTime::GetMillisecond(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetMillisecond(convertTZ(timezone));
}
+102
View File
@@ -0,0 +1,102 @@
#pragma once
extern std::string rDefaultDateTimeFormat;
struct rTimeSpan
{
rTimeSpan();
~rTimeSpan();
rTimeSpan(const rTimeSpan& other);
rTimeSpan(int, int, int, int);
void *handle;
};
struct rDateSpan
{
rDateSpan();
~rDateSpan();
rDateSpan(const rDateSpan& other);
rDateSpan(int, int, int, int);
void *handle;
};
struct rDateTime
{
enum TZ
{
Local, GMT0,UTC
};
enum Calender
{
Gregorian, Julian
};
using rTimeZone = TZ;
enum WeekDay
{
Sun = 0,
Mon,
Tue,
Wed,
Thu,
Fri,
Sat,
Inv_WeekDay
};
enum Month {
Jan = 0,
Feb = 1,
Mar = 2,
Apr = 3,
May = 4,
Jun = 5,
Jul = 6,
Aug = 7,
Sep = 8,
Oct = 9,
Nov = 10,
Dec = 11,
Inv_Month = 12
};
rDateTime();
~rDateTime();
rDateTime(const rDateTime& other);
rDateTime(const time_t &time);
rDateTime(u16 day, rDateTime::Month month, u16 year, u16 hour, u16 minute, u16 second, u32 millisecond);
static rDateTime UNow();
rDateTime FromUTC(bool val);
rDateTime ToUTC(bool val);
time_t GetTicks();
void Add(const rTimeSpan& span);
void Add(const rDateSpan& span);
void Close();
std::string Format(const std::string &format = rDefaultDateTimeFormat, const rTimeZone &tz = Local) const;
void ParseDateTime(const char* format);
u32 GetAsDOS();
rDateTime &SetFromDOS(u32 fromdos);
static bool IsLeapYear(int year, rDateTime::Calender cal);
static int GetNumberOfDays(rDateTime::Month month, int year, rDateTime::Calender cal);
void SetToWeekDay(rDateTime::WeekDay day, int n, rDateTime::Month month, int year);
int GetWeekDay();
u16 GetYear( rDateTime::TZ timezone);
u16 GetMonth(rDateTime::TZ timezone);
u16 GetDay(rDateTime::TZ timezone);
u16 GetHour(rDateTime::TZ timezone);
u16 GetMinute(rDateTime::TZ timezone);
u16 GetSecond(rDateTime::TZ timezone);
u32 GetMillisecond(rDateTime::TZ timezone);
void *handle;
};
+117
View File
@@ -0,0 +1,117 @@
#include "stdafx.h"
#include "Utilities/rXml.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/xml/xml.h>")
#pragma warning(disable : 4996)
#include <wx/xml/xml.h>
#pragma warning(pop)
rXmlNode::rXmlNode()
{
ownPtr = true;
handle = reinterpret_cast<void *>(new wxXmlNode());
}
rXmlNode::rXmlNode(void *ptr)
{
ownPtr = false;
handle = ptr;
}
rXmlNode::rXmlNode(const rXmlNode& other)
{
ownPtr = true;
handle = reinterpret_cast<void *>(new wxXmlNode(*reinterpret_cast<wxXmlNode*>(other.handle)));
}
rXmlNode &rXmlNode::operator=(const rXmlNode& other)
{
if (ownPtr)
{
delete reinterpret_cast<wxXmlNode*>(handle);
}
handle = reinterpret_cast<void *>(new wxXmlNode(*reinterpret_cast<wxXmlNode*>(other.handle)));
ownPtr = true;
return *this;
}
rXmlNode::~rXmlNode()
{
if (ownPtr)
{
delete reinterpret_cast<wxXmlNode*>(handle);
}
}
std::shared_ptr<rXmlNode> rXmlNode::GetChildren()
{
wxXmlNode* result = reinterpret_cast<wxXmlNode*>(handle)->GetChildren();
if (result)
{
return std::make_shared<rXmlNode>(reinterpret_cast<void*>(result));
}
else
{
return std::shared_ptr<rXmlNode>(nullptr);
}
}
std::shared_ptr<rXmlNode> rXmlNode::GetNext()
{
wxXmlNode* result = reinterpret_cast<wxXmlNode*>(handle)->GetNext();
if (result)
{
return std::make_shared<rXmlNode>(reinterpret_cast<void*>(result));
}
else
{
return std::shared_ptr<rXmlNode>(nullptr);
}
}
std::string rXmlNode::GetName()
{
return fmt::ToUTF8(reinterpret_cast<wxXmlNode*>(handle)->GetName());
}
std::string rXmlNode::GetAttribute(const std::string &name)
{
return fmt::ToUTF8(reinterpret_cast<wxXmlNode*>(handle)->GetAttribute(fmt::FromUTF8(name)));
}
std::string rXmlNode::GetNodeContent()
{
return fmt::ToUTF8(reinterpret_cast<wxXmlNode*>(handle)->GetNodeContent());
}
rXmlDocument::rXmlDocument()
{
handle = reinterpret_cast<void *>(new wxXmlDocument());
}
rXmlDocument::rXmlDocument(const rXmlDocument& other)
{
handle = reinterpret_cast<void *>(new wxXmlDocument(*reinterpret_cast<wxXmlDocument*>(other.handle)));
}
rXmlDocument &rXmlDocument::operator = (const rXmlDocument& other)
{
delete reinterpret_cast<wxXmlDocument*>(handle);
handle = reinterpret_cast<void *>(new wxXmlDocument(*reinterpret_cast<wxXmlDocument*>(other.handle)));
return *this;
}
rXmlDocument::~rXmlDocument()
{
delete reinterpret_cast<wxXmlDocument*>(handle);
}
void rXmlDocument::Load(const std::string & path)
{
reinterpret_cast<wxXmlDocument*>(handle)->Load(fmt::FromUTF8(path));
}
std::shared_ptr<rXmlNode> rXmlDocument::GetRoot()
{
return std::make_shared<rXmlNode>(reinterpret_cast<void*>(reinterpret_cast<wxXmlDocument*>(handle)->GetRoot()));
}
+30
View File
@@ -0,0 +1,30 @@
#pragma once
struct rXmlNode
{
rXmlNode();
rXmlNode(void *);
rXmlNode(const rXmlNode& other);
rXmlNode &operator=(const rXmlNode& other);
~rXmlNode();
std::shared_ptr<rXmlNode> GetChildren();
std::shared_ptr<rXmlNode> GetNext();
std::string GetName();
std::string GetAttribute( const std::string &name);
std::string GetNodeContent();
void *handle;
bool ownPtr;
};
struct rXmlDocument
{
rXmlDocument();
rXmlDocument(const rXmlDocument& other);
rXmlDocument &operator=(const rXmlDocument& other);
~rXmlDocument();
void Load(const std::string & path);
std::shared_ptr<rXmlNode> GetRoot();
void *handle;
};
+1102
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+37
View File
@@ -0,0 +1,37 @@
version: 1.0.{build}
os: Visual Studio 2015
configuration:
# - Release
- ReleaseLLVM
platform: x64
clone_folder: c:\rpcs3
clone_depth: 3
test: off
branches:
except:
- ppu_recompiler
before_build:
# until git for win 2.5 release with commit checkout
- git submodule update --init ffmpeg asmjit minidx9 rsx_program_decompiler GSL libpng
- 7z x wxWidgets.7z -aos -oC:\rpcs3\wxWidgets > null
- 7z x zlib.7z -aos -oC:\rpcs3\ > null
- if %configuration%==Release (cmake -G "Visual Studio 14 Win64" -DZLIB_ROOT=C:/rpcs3/zlib/)
else (7z x llvmlibs.7z -aos -oC:\rpcs3 > null && cmake -G "Visual Studio 14 Win64" -DLLVM_DIR=C:/rpcs3/llvm_build/share/llvm/cmake -DZLIB_ROOT=C:/rpcs3/zlib/)
build_script:
- cmake --build . --config Release -- /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
install:
- ps: Start-FileDownload 'https://402331b94f8e4b87ae2ef4677347f7956cf3861f.googledrive.com/host/0B6v_qtb9hkicfmt0NG0wTTRtUmF4X3VTQk5Oc2JidEVKVnUteDA1dXdrYlNsVW9kREpsSHc/wxWidgets.7z'
- ps: Start-FileDownload 'https://402331b94f8e4b87ae2ef4677347f7956cf3861f.googledrive.com/host/0B6v_qtb9hkicfmt0NG0wTTRtUmF4X3VTQk5Oc2JidEVKVnUteDA1dXdrYlNsVW9kREpsSHc/llvmlibs.7z'
- ps: Start-FileDownload 'https://402331b94f8e4b87ae2ef4677347f7956cf3861f.googledrive.com/host/0B6v_qtb9hkicfmt0NG0wTTRtUmF4X3VTQk5Oc2JidEVKVnUteDA1dXdrYlNsVW9kREpsSHc/zlib.7z'
- set WXWIN=C:\rpcs3\wxWidgets
- set OPENALDIR=C:\rpcs3\OpenAL
- set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;C:\wxWidgets;%PATH%
- set COMMIT_SHA=%APPVEYOR_REPO_COMMIT:~0,8%
artifacts:
- path: bin
name: rpcs3-$(configuration)-$(COMMIT_SHA)
Submodule
+1
Submodule asmjit added at b0dad1af25
+126
View File
@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug - LLVM|x64">
<Configuration>Debug - LLVM</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug - MemLeak|x64">
<Configuration>Debug - MemLeak</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release - LLVM|x64">
<Configuration>Release - LLVM</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\asmjit\src\asmjit\base\assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\codegen.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\constpool.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\containers.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cputicks.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\error.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\globals.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\intutil.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\logger.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\runtime.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\string.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\vmem.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\zone.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86inst.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand_regs.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86scheduler.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\asmjit\src\asmjit\base\assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\codegen.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\constpool.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\containers.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cputicks.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\error.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\globals.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\intutil.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\lock.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\logger.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\runtime.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\string.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vectypes.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vmem.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\zone.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86inst.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86scheduler_p.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{AC40FF01-426E-4838-A317-66354CEFAE88}</ProjectGuid>
<RootNamespace>asmjit</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\rpcs3_default.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="..\rpcs3_debug.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'" Label="PropertySheets">
<Import Project="..\rpcs3_debug.props" />
<Import Project="..\rpcs3_memleak.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'" Label="PropertySheets">
<Import Project="..\rpcs3_debug.props" />
<Import Project="..\rpcs3_llvm.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="..\rpcs3_release.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'" Label="PropertySheets">
<Import Project="..\rpcs3_release.props" />
<Import Project="..\rpcs3_llvm.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>ASMJIT_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+58
View File
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\asmjit\src\asmjit\base\assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\codegen.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\constpool.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\containers.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cputicks.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\error.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\globals.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\intutil.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\logger.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\runtime.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\string.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\vmem.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\zone.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86inst.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand_regs.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86scheduler.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\asmjit\src\asmjit\x86\x86assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86inst.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86scheduler_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\codegen.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\constpool.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\containers.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cputicks.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\error.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\globals.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\intutil.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\lock.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\logger.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\runtime.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\string.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vectypes.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vmem.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\zone.h" />
</ItemGroup>
</Project>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
BIN
View File
Binary file not shown.
@@ -0,0 +1,6 @@
# Note: This folder has to exist. Once the User Account manager is implemented, make sure it creates this folder in case it's missing and delete this .gitignore file.
# Ignore everything in this directory
*
# Except this file
!.gitignore
+1
View File
@@ -0,0 +1 @@
User
@@ -0,0 +1,6 @@
# Note: This folder has to exist. Once the User Account manager is implemented, make sure it creates this folder in case it's missing and delete this .gitignore file.
# Ignore everything in this directory
*
# Except this file
!.gitignore
@@ -0,0 +1,6 @@
# Note: This folder has to exist. Once the User Account manager is implemented, make sure it creates this folder in case it's missing and delete this .gitignore file.
# Ignore everything in this directory
*
# Except this file
!.gitignore
+6
View File
@@ -0,0 +1,6 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
!cache
!cache/README.txt
+1
View File
@@ -0,0 +1 @@
This directory is used for cache functionality, so don't store any data here.
+1
View File
@@ -0,0 +1 @@
This directory is used for temporary gamedata functionality, so don't store any data here.
+4
View File
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Submodule
+1
Submodule ffmpeg added at 8dd84dc1ea
+146
View File
@@ -0,0 +1,146 @@
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(glm)
enable_testing()
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(GNUInstallDirs)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
option(GLM_TEST_ENABLE "GLM test" OFF)
if(NOT GLM_TEST_ENABLE)
message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_TEST_ENABLE with ON to build and run the test bench")
endif()
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND UNIX))
option(GLM_TEST_ENABLE_CXX_98 "Enable C++ 98" OFF)
option(GLM_TEST_ENABLE_CXX_0X "Enable C++ 0x" OFF)
option(GLM_TEST_ENABLE_CXX_11 "Enable C++ 11" OFF)
option(GLM_TEST_ENABLE_CXX_1Y "Enable C++ 1y" OFF)
option(GLM_TEST_ENABLE_CXX_14 "Enable C++ 14" OFF)
option(GLM_TEST_ENABLE_CXX_1Z "Enable C++ 1z" OFF)
if(GLM_TEST_ENABLE_CXX_1Z)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++1z")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++1Z")
elseif(GLM_TEST_ENABLE_CXX_14)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++14")
elseif(GLM_TEST_ENABLE_CXX_1Y)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++1y")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++1y")
elseif(GLM_TEST_ENABLE_CXX_11)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++11")
elseif(GLM_TEST_ENABLE_CXX_0X)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++0x")
elseif(GLM_TEST_ENABLE_CXX_98)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++98")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++98")
endif()
endif()
option(GLM_TEST_ENABLE_MS_EXTENSIONS "Enable MS extensions" OFF)
if(GLM_TEST_ENABLE_MS_EXTENSIONS)
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"))
add_definitions(-Wgnu-anonymous-struct)
add_definitions(-Wnested-anon-types)
endif()
else()
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND WIN32))
add_definitions(/Za)
elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"))
add_definitions(-pedantic)
endif()
endif()
option(GLM_TEST_ENABLE_SIMD_SSE2 "Enable SSE2 optimizations" OFF)
option(GLM_TEST_ENABLE_SIMD_SSE3 "Enable SSE3 optimizations" OFF)
option(GLM_TEST_ENABLE_SIMD_AVX "Enable AVX optimizations" OFF)
option(GLM_TEST_ENABLE_SIMD_AVX2 "Enable AVX2 optimizations" OFF)
option(GLM_TEST_FORCE_PURE "Force 'pure' instructions" OFF)
if(GLM_TEST_FORCE_PURE)
add_definitions(-DGLM_FORCE_PURE)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-mfpmath=387)
endif()
elseif(GLM_TEST_ENABLE_SIMD_AVX2)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-mavx2)
elseif(GLM_USE_INTEL)
add_definitions(/QxAVX2)
elseif(MSVC)
add_definitions(/arch:AVX2)
endif()
elseif(GLM_TEST_ENABLE_SIMD_AVX)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-mavx)
elseif(GLM_USE_INTEL)
add_definitions(/QxAVX)
elseif(MSVC)
add_definitions(/arch:AVX)
endif()
elseif(GLM_TEST_ENABLE_SIMD_SSE3)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-msse3)
elseif(GLM_USE_INTEL)
add_definitions(/QxSSE3)
elseif(MSVC)
add_definitions(/arch:SSE2) # VC doesn't support /arch:SSE3
endif()
elseif(GLM_TEST_ENABLE_SIMD_SSE2)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-msse2)
elseif(GLM_USE_INTEL)
add_definitions(/QxSSE2)
elseif(MSVC)
if(NOT CMAKE_CL_64)
add_definitions(/arch:SSE2)
endif()
endif()
endif()
option(GLM_TEST_ENABLE_FAST_MATH "Enable fast math optimizations" OFF)
if(GLM_TEST_ENABLE_FAST_MATH)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-ffast-math)
endif()
if(MSVC)
add_definitions(/fp:fast)
endif()
elseif(NOT GLM_TEST_ENABLE_FAST_MATH)
if(MSVC)
add_definitions(/fp:precise)
endif()
endif()
if(CMAKE_COMPILER_IS_GNUCXX)
#add_definitions(-S)
#add_definitions(-s)
add_definitions(-m64)
add_definitions(-O2)
#add_definitions(-fprofile-arcs -ftest-coverage) gcov
#ctest_enable_coverage()
endif()
include_directories("${PROJECT_SOURCE_DIR}")
include_directories("${PROJECT_SOURCE_DIR}/test/external")
add_subdirectory(glm)
add_subdirectory(test)
add_subdirectory(util)
install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR})
+13
View File
@@ -0,0 +1,13 @@
## This file should be placed in the root directory of your project.
## Then modify the CMakeLists.txt file in the root directory of your
## project to incorporate the testing dashboard.
## # The following are required to uses Dart and the Cdash dashboard
## ENABLE_TESTING()
## INCLUDE(CTest)
set(CTEST_PROJECT_NAME "GLM")
set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "my.cdash.org")
set(CTEST_DROP_LOCATION "/submit.php?project=GLM")
set(CTEST_DROP_SITE_CDASH TRUE)
+188
View File
@@ -0,0 +1,188 @@
# - Define GNU standard installation directories
# Provides install directory variables as defined for GNU software:
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
# Inclusion of this module defines the following variables:
# CMAKE_INSTALL_<dir> - destination for files of a given type
# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
# where <dir> is one of:
# BINDIR - user executables (bin)
# SBINDIR - system admin executables (sbin)
# LIBEXECDIR - program executables (libexec)
# SYSCONFDIR - read-only single-machine data (etc)
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
# LOCALSTATEDIR - modifiable single-machine data (var)
# LIBDIR - object code libraries (lib or lib64 or lib/<multiarch-tuple> on Debian)
# INCLUDEDIR - C header files (include)
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
# DATAROOTDIR - read-only architecture-independent data root (share)
# DATADIR - read-only architecture-independent data (DATAROOTDIR)
# INFODIR - info documentation (DATAROOTDIR/info)
# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
# MANDIR - man documentation (DATAROOTDIR/man)
# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
# install() commands for the corresponding file type. If the includer does
# not define a value the above-shown default will be used and the value will
# appear in the cache for editing by the user.
# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
# from the corresponding destination by prepending (if necessary) the value
# of CMAKE_INSTALL_PREFIX.
#=============================================================================
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
# Copyright 2011 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Installation directories
#
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(_LIBDIR_DEFAULT "lib")
# Override this default 'lib' with 'lib64' iff:
# - we are on Linux system but NOT cross-compiling
# - we are NOT on debian
# - we are on a 64 bits system
# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
# See http://wiki.debian.org/Multiarch
if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
AND NOT CMAKE_CROSSCOMPILING)
if (EXISTS "/etc/debian_version") # is this a debian system ?
if(CMAKE_LIBRARY_ARCHITECTURE)
set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
endif()
else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
message(AUTHOR_WARNING
"Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
"Please enable at least one language before including GNUInstallDirs.")
else()
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
set(_LIBDIR_DEFAULT "lib64")
endif()
endif()
endif()
endif()
set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
endif()
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
endif()
#-----------------------------------------------------------------------------
# Values whose defaults are relative to DATAROOTDIR. Store empty values in
# the cache and store the defaults in local variables if the cache values are
# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
if(NOT CMAKE_INSTALL_DATADIR)
set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
endif()
if(NOT CMAKE_INSTALL_INFODIR)
set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
endif()
if(NOT CMAKE_INSTALL_LOCALEDIR)
set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
endif()
if(NOT CMAKE_INSTALL_MANDIR)
set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
endif()
if(NOT CMAKE_INSTALL_DOCDIR)
set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
endif()
#-----------------------------------------------------------------------------
mark_as_advanced(
CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_SBINDIR
CMAKE_INSTALL_LIBEXECDIR
CMAKE_INSTALL_SYSCONFDIR
CMAKE_INSTALL_SHAREDSTATEDIR
CMAKE_INSTALL_LOCALSTATEDIR
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_OLDINCLUDEDIR
CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_DATADIR
CMAKE_INSTALL_INFODIR
CMAKE_INSTALL_LOCALEDIR
CMAKE_INSTALL_MANDIR
CMAKE_INSTALL_DOCDIR
)
# Result directories
#
foreach(dir
BINDIR
SBINDIR
LIBEXECDIR
SYSCONFDIR
SHAREDSTATEDIR
LOCALSTATEDIR
LIBDIR
INCLUDEDIR
OLDINCLUDEDIR
DATAROOTDIR
DATADIR
INFODIR
LOCALEDIR
MANDIR
DOCDIR
)
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
else()
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
endif()
endforeach()
+55
View File
@@ -0,0 +1,55 @@
================================================================================
OpenGL Mathematics (GLM)
--------------------------------------------------------------------------------
GLM can be distributed and/or modified under the terms of either
a) The Happy Bunny License, or b) the MIT License.
================================================================================
The Happy Bunny License (Modified MIT License)
--------------------------------------------------------------------------------
Copyright (c) 2005 - 2015 G-Truc Creation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
Restrictions:
By making use of the Software for military purposes, you choose to make a
Bunny unhappy.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================================================
The MIT License
--------------------------------------------------------------------------------
Copyright (c) 2005 - 2015 G-Truc Creation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+43
View File
@@ -0,0 +1,43 @@
set(NAME glm_dummy)
file(GLOB ROOT_SOURCE *.cpp)
file(GLOB ROOT_INLINE *.inl)
file(GLOB ROOT_HEADER *.hpp)
file(GLOB ROOT_TEXT ../*.txt)
file(GLOB ROOT_NAT ../util/glm.natvis)
file(GLOB_RECURSE CORE_SOURCE ./detail/*.cpp)
file(GLOB_RECURSE CORE_INLINE ./detail/*.inl)
file(GLOB_RECURSE CORE_HEADER ./detail/*.hpp)
file(GLOB_RECURSE GTC_SOURCE ./gtc/*.cpp)
file(GLOB_RECURSE GTC_INLINE ./gtc/*.inl)
file(GLOB_RECURSE GTC_HEADER ./gtc/*.hpp)
file(GLOB_RECURSE GTX_SOURCE ./gtx/*.cpp)
file(GLOB_RECURSE GTX_INLINE ./gtx/*.inl)
file(GLOB_RECURSE GTX_HEADER ./gtx/*.hpp)
source_group("Text Files" FILES ${ROOT_TEXT})
source_group("Core Files" FILES ${CORE_SOURCE})
source_group("Core Files" FILES ${CORE_INLINE})
source_group("Core Files" FILES ${CORE_HEADER})
source_group("GTC Files" FILES ${GTC_SOURCE})
source_group("GTC Files" FILES ${GTC_INLINE})
source_group("GTC Files" FILES ${GTC_HEADER})
source_group("GTX Files" FILES ${GTX_SOURCE})
source_group("GTX Files" FILES ${GTX_INLINE})
source_group("GTX Files" FILES ${GTX_HEADER})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
if(GLM_TEST_ENABLE)
add_executable(${NAME} ${ROOT_TEXT} ${ROOT_NAT}
${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER}
${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER}
${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER}
${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER})
endif(GLM_TEST_ENABLE)
#add_library(glm STATIC glm.cpp)
#add_library(glm_shared SHARED glm.cpp)
+35
View File
@@ -0,0 +1,35 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/common.hpp
/// @date 2013-12-24 / 2013-12-24
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "detail/func_common.hpp"
+428
View File
@@ -0,0 +1,428 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/_features.hpp
/// @date 2013-02-20 / 2013-02-20
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#pragma once
// #define GLM_CXX98_EXCEPTIONS
// #define GLM_CXX98_RTTI
// #define GLM_CXX11_RVALUE_REFERENCES
// Rvalue references - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
// GLM_CXX11_TRAILING_RETURN
// Rvalue references for *this - GCC not supported
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
// GLM_CXX11_NONSTATIC_MEMBER_INIT
// Initialization of class objects by rvalues - GCC any
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html
// GLM_CXX11_NONSTATIC_MEMBER_INIT
// Non-static data member initializers - GCC 4.7
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
// #define GLM_CXX11_VARIADIC_TEMPLATE
// Variadic templates - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
//
// Extending variadic template template parameters - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
// #define GLM_CXX11_GENERALIZED_INITIALIZERS
// Initializer lists - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
// #define GLM_CXX11_STATIC_ASSERT
// Static assertions - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
// #define GLM_CXX11_AUTO_TYPE
// auto-typed variables - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
// #define GLM_CXX11_AUTO_TYPE
// Multi-declarator auto - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf
// #define GLM_CXX11_AUTO_TYPE
// Removal of auto as a storage-class specifier - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm
// #define GLM_CXX11_AUTO_TYPE
// New function declarator syntax - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
// #define GLM_CXX11_LAMBDAS
// New wording for C++0x lambdas - GCC 4.5
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf
// #define GLM_CXX11_DECLTYPE
// Declared type of an expression - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
//
// Right angle brackets - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
//
// Default template arguments for function templates DR226 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
//
// Solving the SFINAE problem for expressions DR339 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
// #define GLM_CXX11_ALIAS_TEMPLATE
// Template aliases N2258 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
//
// Extern templates N1987 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
// #define GLM_CXX11_NULLPTR
// Null pointer constant N2431 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
// #define GLM_CXX11_STRONG_ENUMS
// Strongly-typed enums N2347 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
//
// Forward declarations for enums N2764 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
//
// Generalized attributes N2761 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
//
// Generalized constant expressions N2235 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
//
// Alignment support N2341 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
// #define GLM_CXX11_DELEGATING_CONSTRUCTORS
// Delegating constructors N1986 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
//
// Inheriting constructors N2540 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
// #define GLM_CXX11_EXPLICIT_CONVERSIONS
// Explicit conversion operators N2437 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
//
// New character types N2249 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
//
// Unicode string literals N2442 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
//
// Raw string literals N2442 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
//
// Universal character name literals N2170 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html
// #define GLM_CXX11_USER_LITERALS
// User-defined literals N2765 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
//
// Standard Layout Types N2342 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
// #define GLM_CXX11_DEFAULTED_FUNCTIONS
// #define GLM_CXX11_DELETED_FUNCTIONS
// Defaulted and deleted functions N2346 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
//
// Extended friend declarations N1791 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
//
// Extending sizeof N2253 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
// #define GLM_CXX11_INLINE_NAMESPACES
// Inline namespaces N2535 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
// #define GLM_CXX11_UNRESTRICTED_UNIONS
// Unrestricted unions N2544 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
// Local and unnamed types as template arguments N2657 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
// #define GLM_CXX11_RANGE_FOR
// Range-based for N2930 GCC 4.6
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
// #define GLM_CXX11_OVERRIDE_CONTROL
// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
//
// Minimal support for garbage collection and reachability-based leak detection N2670 No
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
// #define GLM_CXX11_NOEXCEPT
// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
//
// Defining move special member functions N3053 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
//
// Sequence points N2239 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
//
// Atomic operations N2427 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
//
// Strong Compare and Exchange N2748 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
//
// Bidirectional Fences N2752 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm
//
// Memory model N2429 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm
//
// Data-dependency ordering: atomics and memory model N2664 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
//
// Propagating exceptions N2179 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
//
// Abandoning a process and at_quick_exit N2440 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm
//
// Allow atomics use in signal handlers N2547 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm
//
// Thread-local storage N2659 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
//
// Dynamic initialization and destruction with concurrency N2660 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
//
// __func__ predefined identifier N2340 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
//
// C99 preprocessor N1653 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
//
// long long N1811 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
//
// Extended integral types N1988 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf
#if(GLM_COMPILER & GLM_COMPILER_GCC)
# if(GLM_COMPILER >= GLM_COMPILER_GCC43)
# define GLM_CXX11_STATIC_ASSERT
# endif
#elif(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM))
# if(__has_feature(cxx_exceptions))
# define GLM_CXX98_EXCEPTIONS
# endif
# if(__has_feature(cxx_rtti))
# define GLM_CXX98_RTTI
# endif
# if(__has_feature(cxx_access_control_sfinae))
# define GLM_CXX11_ACCESS_CONTROL_SFINAE
# endif
# if(__has_feature(cxx_alias_templates))
# define GLM_CXX11_ALIAS_TEMPLATE
# endif
# if(__has_feature(cxx_alignas))
# define GLM_CXX11_ALIGNAS
# endif
# if(__has_feature(cxx_attributes))
# define GLM_CXX11_ATTRIBUTES
# endif
# if(__has_feature(cxx_constexpr))
# define GLM_CXX11_CONSTEXPR
# endif
# if(__has_feature(cxx_decltype))
# define GLM_CXX11_DECLTYPE
# endif
# if(__has_feature(cxx_default_function_template_args))
# define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
# endif
# if(__has_feature(cxx_defaulted_functions))
# define GLM_CXX11_DEFAULTED_FUNCTIONS
# endif
# if(__has_feature(cxx_delegating_constructors))
# define GLM_CXX11_DELEGATING_CONSTRUCTORS
# endif
# if(__has_feature(cxx_deleted_functions))
# define GLM_CXX11_DELETED_FUNCTIONS
# endif
# if(__has_feature(cxx_explicit_conversions))
# define GLM_CXX11_EXPLICIT_CONVERSIONS
# endif
# if(__has_feature(cxx_generalized_initializers))
# define GLM_CXX11_GENERALIZED_INITIALIZERS
# endif
# if(__has_feature(cxx_implicit_moves))
# define GLM_CXX11_IMPLICIT_MOVES
# endif
# if(__has_feature(cxx_inheriting_constructors))
# define GLM_CXX11_INHERITING_CONSTRUCTORS
# endif
# if(__has_feature(cxx_inline_namespaces))
# define GLM_CXX11_INLINE_NAMESPACES
# endif
# if(__has_feature(cxx_lambdas))
# define GLM_CXX11_LAMBDAS
# endif
# if(__has_feature(cxx_local_type_template_args))
# define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
# endif
# if(__has_feature(cxx_noexcept))
# define GLM_CXX11_NOEXCEPT
# endif
# if(__has_feature(cxx_nonstatic_member_init))
# define GLM_CXX11_NONSTATIC_MEMBER_INIT
# endif
# if(__has_feature(cxx_nullptr))
# define GLM_CXX11_NULLPTR
# endif
# if(__has_feature(cxx_override_control))
# define GLM_CXX11_OVERRIDE_CONTROL
# endif
# if(__has_feature(cxx_reference_qualified_functions))
# define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS
# endif
# if(__has_feature(cxx_range_for))
# define GLM_CXX11_RANGE_FOR
# endif
# if(__has_feature(cxx_raw_string_literals))
# define GLM_CXX11_RAW_STRING_LITERALS
# endif
# if(__has_feature(cxx_rvalue_references))
# define GLM_CXX11_RVALUE_REFERENCES
# endif
# if(__has_feature(cxx_static_assert))
# define GLM_CXX11_STATIC_ASSERT
# endif
# if(__has_feature(cxx_auto_type))
# define GLM_CXX11_AUTO_TYPE
# endif
# if(__has_feature(cxx_strong_enums))
# define GLM_CXX11_STRONG_ENUMS
# endif
# if(__has_feature(cxx_trailing_return))
# define GLM_CXX11_TRAILING_RETURN
# endif
# if(__has_feature(cxx_unicode_literals))
# define GLM_CXX11_UNICODE_LITERALS
# endif
# if(__has_feature(cxx_unrestricted_unions))
# define GLM_CXX11_UNRESTRICTED_UNIONS
# endif
# if(__has_feature(cxx_user_literals))
# define GLM_CXX11_USER_LITERALS
# endif
# if(__has_feature(cxx_variadic_templates))
# define GLM_CXX11_VARIADIC_TEMPLATES
# endif
#endif//(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM))
+59
View File
@@ -0,0 +1,59 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/_fixes.hpp
/// @date 2011-02-21 / 2011-11-22
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#include <cmath>
//! Workaround for compatibility with other libraries
#ifdef max
#undef max
#endif
//! Workaround for compatibility with other libraries
#ifdef min
#undef min
#endif
//! Workaround for Android
#ifdef isnan
#undef isnan
#endif
//! Workaround for Android
#ifdef isinf
#undef isinf
#endif
//! Workaround for Chrone Native Client
#ifdef log2
#undef log2
#endif
+136
View File
@@ -0,0 +1,136 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/_noise.hpp
/// @date 2013-12-24 / 2013-12-24
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "../vec2.hpp"
#include "../vec3.hpp"
#include "../vec4.hpp"
#include "../common.hpp"
namespace glm{
namespace detail
{
template <typename T>
GLM_FUNC_QUALIFIER T mod289(T const & x)
{
return x - floor(x * static_cast<T>(1.0) / static_cast<T>(289.0)) * static_cast<T>(289.0);
}
template <typename T>
GLM_FUNC_QUALIFIER T permute(T const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> permute(tvec2<T, P> const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> permute(tvec3<T, P> const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> permute(tvec4<T, P> const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
/*
template <typename T, precision P, template<typename> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> permute(vecType<T, P> const & x)
{
return mod289(((x * T(34)) + T(1)) * x);
}
*/
template <typename T>
GLM_FUNC_QUALIFIER T taylorInvSqrt(T const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> taylorInvSqrt(tvec2<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> taylorInvSqrt(tvec3<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> taylorInvSqrt(tvec4<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
/*
template <typename T, precision P, template<typename> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> taylorInvSqrt(vecType<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
*/
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> fade(tvec2<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> fade(tvec3<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> fade(tvec4<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
/*
template <typename T, precision P, template <typename> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> fade(vecType<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
*/
}//namespace detail
}//namespace glm
+833
View File
@@ -0,0 +1,833 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/_swizzle.hpp
/// @date 2006-04-20 / 2011-02-16
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#pragma once
namespace glm{
namespace detail
{
// Internal class for implementing swizzle operators
template <typename T, int N>
struct _swizzle_base0
{
typedef T value_type;
protected:
GLM_FUNC_QUALIFIER value_type& elem (size_t i) { return (reinterpret_cast<value_type*>(_buffer))[i]; }
GLM_FUNC_QUALIFIER const value_type& elem (size_t i) const { return (reinterpret_cast<const value_type*>(_buffer))[i]; }
// Use an opaque buffer to *ensure* the compiler doesn't call a constructor.
// The size 1 buffer is assumed to aligned to the actual members so that the
// elem()
char _buffer[1];
};
template <typename T, precision P, typename V, int E0, int E1, int E2, int E3, int N>
struct _swizzle_base1 : public _swizzle_base0<T, N>
{
};
template <typename T, precision P, typename V, int E0, int E1>
struct _swizzle_base1<T, P, V,E0,E1,-1,-2,2> : public _swizzle_base0<T, 2>
{
GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1)); }
};
template <typename T, precision P, typename V, int E0, int E1, int E2>
struct _swizzle_base1<T, P, V,E0,E1,E2,-1,3> : public _swizzle_base0<T, 3>
{
GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); }
};
template <typename T, precision P, typename V, int E0, int E1, int E2, int E3>
struct _swizzle_base1<T, P, V,E0,E1,E2,E3,4> : public _swizzle_base0<T, 4>
{
GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
};
// Internal class for implementing swizzle operators
/*
Template parameters:
ValueType = type of scalar values (e.g. float, double)
VecType = class the swizzle is applies to (e.g. tvec3<float>)
N = number of components in the vector (e.g. 3)
E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec
DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles
containing duplicate elements so that they cannot be used as r-values).
*/
template <typename ValueType, precision P, typename VecType, int N, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS>
struct _swizzle_base2 : public _swizzle_base1<ValueType, P, VecType,E0,E1,E2,E3,N>
{
typedef VecType vec_type;
typedef ValueType value_type;
GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const ValueType& t)
{
for (int i = 0; i < N; ++i)
(*this)[i] = t;
return *this;
}
GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e = t; }
};
_apply_op(that, op());
return *this;
}
GLM_FUNC_QUALIFIER void operator -= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e -= t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER void operator += (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e += t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER void operator *= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e *= t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER void operator /= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e /= t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER value_type& operator[] (size_t i)
{
const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
{
const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
protected:
template <typename T>
GLM_FUNC_QUALIFIER void _apply_op(const VecType& that, T op)
{
// Make a copy of the data in this == &that.
// The copier should optimize out the copy in cases where the function is
// properly inlined and the copy is not necessary.
ValueType t[N];
for (int i = 0; i < N; ++i)
t[i] = that[i];
for (int i = 0; i < N; ++i)
op( (*this)[i], t[i] );
}
};
// Specialization for swizzles containing duplicate elements. These cannot be modified.
template <typename ValueType, precision P, typename VecType, int N, int E0, int E1, int E2, int E3>
struct _swizzle_base2<ValueType, P, VecType,N,E0,E1,E2,E3,1> : public _swizzle_base1<ValueType, P, VecType,E0,E1,E2,E3,N>
{
typedef VecType vec_type;
typedef ValueType value_type;
struct Stub {};
GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const &) { return *this; }
GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
{
const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
};
template <int N,typename ValueType, precision P, typename VecType, int E0,int E1,int E2,int E3>
struct _swizzle : public _swizzle_base2<ValueType, P, VecType, N, E0, E1, E2, E3, (E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)>
{
typedef _swizzle_base2<ValueType, P, VecType,N,E0,E1,E2,E3,(E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)> base_type;
using base_type::operator=;
GLM_FUNC_QUALIFIER operator VecType () const { return (*this)(); }
};
//
// To prevent the C++ syntax from getting entirely overwhelming, define some alias macros
//
#define _GLM_SWIZZLE_TEMPLATE1 template <int N, typename T, precision P, typename V, int E0, int E1, int E2, int E3>
#define _GLM_SWIZZLE_TEMPLATE2 template <int N, typename T, precision P, typename V, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3>
#define _GLM_SWIZZLE_TYPE1 _swizzle<N, T, P, V, E0, E1, E2, E3>
#define _GLM_SWIZZLE_TYPE2 _swizzle<N, T, P, V, F0, F1, F2, F3>
//
// Wrapper for a binary operator (e.g. u.yy + v.zy)
//
#define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
_GLM_SWIZZLE_TEMPLATE2 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
{ \
return a() OPERAND b(); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \
{ \
return a() OPERAND b; \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return a OPERAND b(); \
}
//
// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)
//
#define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \
{ \
return a() OPERAND b; \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return a OPERAND b(); \
}
//
// Macro for wrapping a function taking one argument (e.g. abs())
//
#define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \
{ \
return FUNCTION(a()); \
}
//
// Macro for wrapping a function taking two vector arguments (e.g. dot()).
//
#define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \
_GLM_SWIZZLE_TEMPLATE2 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
{ \
return FUNCTION(a(), b()); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return FUNCTION(a(), b()); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \
{ \
return FUNCTION(a(), b); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return FUNCTION(a, b()); \
}
//
// Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).
//
#define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \
_GLM_SWIZZLE_TEMPLATE2 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \
{ \
return FUNCTION(a(), b(), c); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
{ \
return FUNCTION(a(), b(), c); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\
{ \
return FUNCTION(a(), b, c); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
{ \
return FUNCTION(a, b(), c); \
}
}//namespace detail
}//namespace glm
namespace glm
{
namespace detail
{
_GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)
_GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)
}
//
// Swizzles are distinct types from the unswizzled type. The below macros will
// provide template specializations for the swizzle types for the given functions
// so that the compiler does not have any ambiguity to choosing how to handle
// the function.
//
// The alternative is to use the operator()() when calling the function in order
// to explicitly convert the swizzled type to the unswizzled type.
//
//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs);
//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos);
//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh);
//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all);
//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any);
//_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot);
//_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross);
//_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step);
//_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);
}
#define _GLM_SWIZZLE2_2_MEMBERS(T, P, V, E0,E1) \
struct { detail::_swizzle<2, T, P, V<T, P>, 0,0,-1,-2> E0 ## E0; }; \
struct { detail::_swizzle<2, T, P, V<T, P>, 0,1,-1,-2> E0 ## E1; }; \
struct { detail::_swizzle<2, T, P, V<T, P>, 1,0,-1,-2> E1 ## E0; }; \
struct { detail::_swizzle<2, T, P, V<T, P>, 1,1,-1,-2> E1 ## E1; };
#define _GLM_SWIZZLE2_3_MEMBERS(T, P, V, E0,E1) \
struct { detail::_swizzle<3,T, P, V<T, P>, 0,0,0,-1> E0 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T, P, V<T, P>, 0,0,1,-1> E0 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T, P, V<T, P>, 0,1,0,-1> E0 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T, P, V<T, P>, 0,1,1,-1> E0 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T, P, V<T, P>, 1,0,0,-1> E1 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T, P, V<T, P>, 1,0,1,-1> E1 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T, P, V<T, P>, 1,1,0,-1> E1 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T, P, V<T, P>, 1,1,1,-1> E1 ## E1 ## E1; };
#define _GLM_SWIZZLE2_4_MEMBERS(T, P, V, E0,E1) \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,1> E1 ## E1 ## E1 ## E1; };
#define _GLM_SWIZZLE3_2_MEMBERS(T, P, V, E0,E1,E2) \
struct { detail::_swizzle<2,T, P, V<T, P>, 0,0,-1,-2> E0 ## E0; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 0,1,-1,-2> E0 ## E1; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 0,2,-1,-2> E0 ## E2; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 1,0,-1,-2> E1 ## E0; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 1,1,-1,-2> E1 ## E1; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 1,2,-1,-2> E1 ## E2; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 2,0,-1,-2> E2 ## E0; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 2,1,-1,-2> E2 ## E1; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 2,2,-1,-2> E2 ## E2; };
#define _GLM_SWIZZLE3_3_MEMBERS(T, P, V ,E0,E1,E2) \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,0,-1> E0 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,1,-1> E0 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,2,-1> E0 ## E0 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,0,-1> E0 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,1,-1> E0 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,2,-1> E0 ## E1 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,0,-1> E0 ## E2 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,1,-1> E0 ## E2 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,2,-1> E0 ## E2 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,0,-1> E1 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,1,-1> E1 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,2,-1> E1 ## E0 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,0,-1> E1 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,1,-1> E1 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,2,-1> E1 ## E1 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,0,-1> E1 ## E2 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,1,-1> E1 ## E2 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,2,-1> E1 ## E2 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,0,-1> E2 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,1,-1> E2 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,2,-1> E2 ## E0 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,0,-1> E2 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,1,-1> E2 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,2,-1> E2 ## E1 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,0,-1> E2 ## E2 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,1,-1> E2 ## E2 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,2,-1> E2 ## E2 ## E2; };
#define _GLM_SWIZZLE3_4_MEMBERS(T, P, V, E0,E1,E2) \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,2,2> E2 ## E2 ## E2 ## E2; };
#define _GLM_SWIZZLE4_2_MEMBERS(T, P, V, E0,E1,E2,E3) \
struct { detail::_swizzle<2,T, P, V<T, P>, 0,0,-1,-2> E0 ## E0; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 0,1,-1,-2> E0 ## E1; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 0,2,-1,-2> E0 ## E2; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 0,3,-1,-2> E0 ## E3; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 1,0,-1,-2> E1 ## E0; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 1,1,-1,-2> E1 ## E1; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 1,2,-1,-2> E1 ## E2; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 1,3,-1,-2> E1 ## E3; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 2,0,-1,-2> E2 ## E0; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 2,1,-1,-2> E2 ## E1; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 2,2,-1,-2> E2 ## E2; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 2,3,-1,-2> E2 ## E3; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 3,0,-1,-2> E3 ## E0; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 3,1,-1,-2> E3 ## E1; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 3,2,-1,-2> E3 ## E2; }; \
struct { detail::_swizzle<2,T, P, V<T, P>, 3,3,-1,-2> E3 ## E3; };
#define _GLM_SWIZZLE4_3_MEMBERS(T,P, V, E0,E1,E2,E3) \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,0,-1> E0 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,1,-1> E0 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,2,-1> E0 ## E0 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,3,-1> E0 ## E0 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,0,-1> E0 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,1,-1> E0 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,2,-1> E0 ## E1 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,3,-1> E0 ## E1 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,0,-1> E0 ## E2 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,1,-1> E0 ## E2 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,2,-1> E0 ## E2 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,3,-1> E0 ## E2 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,0,-1> E0 ## E3 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,1,-1> E0 ## E3 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,2,-1> E0 ## E3 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,3,-1> E0 ## E3 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,0,-1> E1 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,1,-1> E1 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,2,-1> E1 ## E0 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,3,-1> E1 ## E0 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,0,-1> E1 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,1,-1> E1 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,2,-1> E1 ## E1 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,3,-1> E1 ## E1 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,0,-1> E1 ## E2 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,1,-1> E1 ## E2 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,2,-1> E1 ## E2 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,3,-1> E1 ## E2 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,0,-1> E1 ## E3 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,1,-1> E1 ## E3 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,2,-1> E1 ## E3 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,3,-1> E1 ## E3 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,0,-1> E2 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,1,-1> E2 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,2,-1> E2 ## E0 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,3,-1> E2 ## E0 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,0,-1> E2 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,1,-1> E2 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,2,-1> E2 ## E1 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,3,-1> E2 ## E1 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,0,-1> E2 ## E2 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,1,-1> E2 ## E2 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,2,-1> E2 ## E2 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,3,-1> E2 ## E2 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,0,-1> E2 ## E3 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,1,-1> E2 ## E3 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,2,-1> E2 ## E3 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,3,-1> E2 ## E3 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,0,-1> E3 ## E0 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,1,-1> E3 ## E0 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,2,-1> E3 ## E0 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,3,-1> E3 ## E0 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,0,-1> E3 ## E1 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,1,-1> E3 ## E1 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,2,-1> E3 ## E1 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,3,-1> E3 ## E1 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,0,-1> E3 ## E2 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,1,-1> E3 ## E2 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,2,-1> E3 ## E2 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,3,-1> E3 ## E2 ## E3; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,0,-1> E3 ## E3 ## E0; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,1,-1> E3 ## E3 ## E1; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,2,-1> E3 ## E3 ## E2; }; \
struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,3,-1> E3 ## E3 ## E3; };
#define _GLM_SWIZZLE4_4_MEMBERS(T, P, V, E0,E1,E2,E3) \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \
struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,3> E3 ## E3 ## E3 ## E3; };
+725
View File
@@ -0,0 +1,725 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/_swizzle_func.hpp
/// @date 2011-10-16 / 2011-10-16
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \
SWIZZLED_TYPE<TMPL_TYPE, PRECISION> A ## B() CONST \
{ \
return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B); \
}
#define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \
SWIZZLED_TYPE<TMPL_TYPE, PRECISION> A ## B ## C() CONST \
{ \
return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C); \
}
#define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \
SWIZZLED_TYPE<TMPL_TYPE, PRECISION> A ## B ## C ## D() CONST \
{ \
return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C, this->D); \
}
#define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \
template <typename TMPL_TYPE> \
SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE, PRECISION>::A ## B() CONST \
{ \
return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B); \
}
#define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \
template <typename TMPL_TYPE> \
SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE, PRECISION>::A ## B ## C() CONST \
{ \
return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C); \
}
#define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \
template <typename TMPL_TYPE> \
SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE, PRECISION>::A ## B ## C ## D() CONST \
{ \
return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C, this->D); \
}
#define GLM_MUTABLE
#define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A)
#define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \
GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \
GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \
GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t)
//GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2)
#define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B)
#define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A)
#define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C)
#define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \
GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \
GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \
GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, p)
//GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3)
#define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C)
#define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B)
#define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A)
#define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)
#define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \
GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \
GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q)
//GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4)
#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B)
#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B)
#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B)
#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \
GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \
GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \
GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B)
#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t)
//GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4)
#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C)
#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C)
#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C)
#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C)
#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p)
//GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4)
#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \
GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D)
#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \
GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D)
#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \
GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D)
#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \
GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)
#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \
GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q)
//GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4)
+160
View File
@@ -0,0 +1,160 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/_vectorize.hpp
/// @date 2011-10-14 / 2011-10-14
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "type_vec1.hpp"
#include "type_vec2.hpp"
#include "type_vec3.hpp"
#include "type_vec4.hpp"
namespace glm{
namespace detail
{
template <typename R, typename T, precision P, template <typename, precision> class vecType>
struct functor1{};
template <typename R, typename T, precision P>
struct functor1<R, T, P, tvec1>
{
GLM_FUNC_QUALIFIER static tvec1<R, P> call(R (*Func) (T x), tvec1<T, P> const & v)
{
return tvec1<R, P>(Func(v.x));
}
};
template <typename R, typename T, precision P>
struct functor1<R, T, P, tvec2>
{
GLM_FUNC_QUALIFIER static tvec2<R, P> call(R (*Func) (T x), tvec2<T, P> const & v)
{
return tvec2<R, P>(Func(v.x), Func(v.y));
}
};
template <typename R, typename T, precision P>
struct functor1<R, T, P, tvec3>
{
GLM_FUNC_QUALIFIER static tvec3<R, P> call(R (*Func) (T x), tvec3<T, P> const & v)
{
return tvec3<R, P>(Func(v.x), Func(v.y), Func(v.z));
}
};
template <typename R, typename T, precision P>
struct functor1<R, T, P, tvec4>
{
GLM_FUNC_QUALIFIER static tvec4<R, P> call(R (*Func) (T x), tvec4<T, P> const & v)
{
return tvec4<R, P>(Func(v.x), Func(v.y), Func(v.z), Func(v.w));
}
};
template <typename T, precision P, template <typename, precision> class vecType>
struct functor2{};
template <typename T, precision P>
struct functor2<T, P, tvec1>
{
GLM_FUNC_QUALIFIER static tvec1<T, P> call(T (*Func) (T x, T y), tvec1<T, P> const & a, tvec1<T, P> const & b)
{
return tvec1<T, P>(Func(a.x, b.x));
}
};
template <typename T, precision P>
struct functor2<T, P, tvec2>
{
GLM_FUNC_QUALIFIER static tvec2<T, P> call(T (*Func) (T x, T y), tvec2<T, P> const & a, tvec2<T, P> const & b)
{
return tvec2<T, P>(Func(a.x, b.x), Func(a.y, b.y));
}
};
template <typename T, precision P>
struct functor2<T, P, tvec3>
{
GLM_FUNC_QUALIFIER static tvec3<T, P> call(T (*Func) (T x, T y), tvec3<T, P> const & a, tvec3<T, P> const & b)
{
return tvec3<T, P>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
}
};
template <typename T, precision P>
struct functor2<T, P, tvec4>
{
GLM_FUNC_QUALIFIER static tvec4<T, P> call(T (*Func) (T x, T y), tvec4<T, P> const & a, tvec4<T, P> const & b)
{
return tvec4<T, P>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
}
};
template <typename T, precision P, template <typename, precision> class vecType>
struct functor2_vec_sca{};
template <typename T, precision P>
struct functor2_vec_sca<T, P, tvec1>
{
GLM_FUNC_QUALIFIER static tvec1<T, P> call(T (*Func) (T x, T y), tvec1<T, P> const & a, T b)
{
return tvec1<T, P>(Func(a.x, b));
}
};
template <typename T, precision P>
struct functor2_vec_sca<T, P, tvec2>
{
GLM_FUNC_QUALIFIER static tvec2<T, P> call(T (*Func) (T x, T y), tvec2<T, P> const & a, T b)
{
return tvec2<T, P>(Func(a.x, b), Func(a.y, b));
}
};
template <typename T, precision P>
struct functor2_vec_sca<T, P, tvec3>
{
GLM_FUNC_QUALIFIER static tvec3<T, P> call(T (*Func) (T x, T y), tvec3<T, P> const & a, T b)
{
return tvec3<T, P>(Func(a.x, b), Func(a.y, b), Func(a.z, b));
}
};
template <typename T, precision P>
struct functor2_vec_sca<T, P, tvec4>
{
GLM_FUNC_QUALIFIER static tvec4<T, P> call(T (*Func) (T x, T y), tvec4<T, P> const & a, T b)
{
return tvec4<T, P>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));
}
};
}//namespace detail
}//namespace glm
+232
View File
@@ -0,0 +1,232 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/core/dummy.cpp
/// @date 2011-01-19 / 2011-06-15
/// @author Christophe Riccio
///
/// GLM is a header only library. There is nothing to compile.
/// dummy.cpp exist only a wordaround for CMake file.
///////////////////////////////////////////////////////////////////////////////////
#define GLM_MESSAGES
#include <glm/glm.hpp>
#include <glm/ext.hpp>
#include <limits>
struct material
{
glm::vec4 emission; // Ecm
glm::vec4 ambient; // Acm
glm::vec4 diffuse; // Dcm
glm::vec4 specular; // Scm
float shininess; // Srm
};
struct light
{
glm::vec4 ambient; // Acli
glm::vec4 diffuse; // Dcli
glm::vec4 specular; // Scli
glm::vec4 position; // Ppli
glm::vec4 halfVector; // Derived: Hi
glm::vec3 spotDirection; // Sdli
float spotExponent; // Srli
float spotCutoff; // Crli
// (range: [0.0,90.0], 180.0)
float spotCosCutoff; // Derived: cos(Crli)
// (range: [1.0,0.0],-1.0)
float constantAttenuation; // K0
float linearAttenuation; // K1
float quadraticAttenuation;// K2
};
// Sample 1
#include <glm/vec3.hpp>// glm::vec3
#include <glm/geometric.hpp>// glm::cross, glm::normalize
glm::vec3 computeNormal
(
glm::vec3 const & a,
glm::vec3 const & b,
glm::vec3 const & c
)
{
return glm::normalize(glm::cross(c - a, b - a));
}
typedef unsigned int GLuint;
#define GL_FALSE 0
void glUniformMatrix4fv(GLuint, int, int, float*){}
// Sample 2
#include <glm/vec3.hpp> // glm::vec3
#include <glm/vec4.hpp> // glm::vec4, glm::ivec4
#include <glm/mat4x4.hpp> // glm::mat4
#include <glm/gtc/matrix_transform.hpp> // glm::translate, glm::rotate, glm::scale, glm::perspective
#include <glm/gtc/type_ptr.hpp> // glm::value_ptr
void func(GLuint LocationMVP, float Translate, glm::vec2 const & Rotate)
{
glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f);
glm::mat4 ViewTranslate = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate));
glm::mat4 ViewRotateX = glm::rotate(ViewTranslate, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f));
glm::mat4 View = glm::rotate(ViewRotateX, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f));
glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f));
glm::mat4 MVP = Projection * View * Model;
glUniformMatrix4fv(LocationMVP, 1, GL_FALSE, glm::value_ptr(MVP));
}
// Sample 3
#include <glm/vec2.hpp>// glm::vec2
#include <glm/packing.hpp>// glm::packUnorm2x16
#include <glm/integer.hpp>// glm::uint
#include <glm/gtc/type_precision.hpp>// glm::i8vec2, glm::i32vec2
std::size_t const VertexCount = 4;
// Float quad geometry
std::size_t const PositionSizeF32 = VertexCount * sizeof(glm::vec2);
glm::vec2 const PositionDataF32[VertexCount] =
{
glm::vec2(-1.0f,-1.0f),
glm::vec2( 1.0f,-1.0f),
glm::vec2( 1.0f, 1.0f),
glm::vec2(-1.0f, 1.0f)
};
// Half-float quad geometry
std::size_t const PositionSizeF16 = VertexCount * sizeof(glm::uint);
glm::uint const PositionDataF16[VertexCount] =
{
glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, -1.0f))),
glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, -1.0f))),
glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, 1.0f))),
glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, 1.0f)))
};
// 8 bits signed integer quad geometry
std::size_t const PositionSizeI8 = VertexCount * sizeof(glm::i8vec2);
glm::i8vec2 const PositionDataI8[VertexCount] =
{
glm::i8vec2(-1,-1),
glm::i8vec2( 1,-1),
glm::i8vec2( 1, 1),
glm::i8vec2(-1, 1)
};
// 32 bits signed integer quad geometry
std::size_t const PositionSizeI32 = VertexCount * sizeof(glm::i32vec2);
glm::i32vec2 const PositionDataI32[VertexCount] =
{
glm::i32vec2 (-1,-1),
glm::i32vec2 ( 1,-1),
glm::i32vec2 ( 1, 1),
glm::i32vec2 (-1, 1)
};
struct intersection
{
glm::vec4 position;
glm::vec3 normal;
};
/*
// Sample 4
#include <glm/vec3.hpp>// glm::vec3
#include <glm/geometric.hpp>// glm::normalize, glm::dot, glm::reflect
#include <glm/exponential.hpp>// glm::pow
#include <glm/gtc/random.hpp>// glm::vecRand3
glm::vec3 lighting
(
intersection const & Intersection,
material const & Material,
light const & Light,
glm::vec3 const & View
)
{
glm::vec3 Color(0.0f);
glm::vec3 LightVertor(glm::normalize(
Light.position - Intersection.position +
glm::vecRand3(0.0f, Light.inaccuracy));
if(!shadow(Intersection.position, Light.position, LightVertor))
{
float Diffuse = glm::dot(Intersection.normal, LightVector);
if(Diffuse <= 0.0f)
return Color;
if(Material.isDiffuse())
Color += Light.color() * Material.diffuse * Diffuse;
if(Material.isSpecular())
{
glm::vec3 Reflect(glm::reflect(
glm::normalize(-LightVector),
glm::normalize(Intersection.normal)));
float Dot = glm::dot(Reflect, View);
float Base = Dot > 0.0f ? Dot : 0.0f;
float Specular = glm::pow(Base, Material.exponent);
Color += Material.specular * Specular;
}
}
return Color;
}
*/
template <typename T, glm::precision P, template<typename, glm::precision> class vecType>
T normalizeDotA(vecType<T, P> const & x, vecType<T, P> const & y)
{
return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y));
}
#define GLM_TEMPLATE_GENTYPE typename T, glm::precision P, template<typename, glm::precision> class
template <GLM_TEMPLATE_GENTYPE vecType>
T normalizeDotB(vecType<T, P> const & x, vecType<T, P> const & y)
{
return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y));
}
template <typename vecType>
typename vecType::value_type normalizeDotC(vecType const & a, vecType const & b)
{
return glm::dot(a, b) * glm::inversesqrt(glm::dot(a, a) * glm::dot(b, b));
}
int main()
{
glm::vec1 o(1);
glm::vec2 a(1);
glm::vec3 b(1);
glm::vec4 c(1);
glm::quat q;
glm::dualquat p;
glm::mat4 m(1);
float a0 = normalizeDotA(a, a);
float b0 = normalizeDotB(b, b);
float c0 = normalizeDotC(c, c);
return 0;
}
+456
View File
@@ -0,0 +1,456 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/func_common.hpp
/// @date 2008-03-08 / 2010-01-26
/// @author Christophe Riccio
///
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
///
/// @defgroup core_func_common Common functions
/// @ingroup core
///
/// These all operate component-wise. The description is per component.
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "setup.hpp"
#include "precision.hpp"
#include "type_int.hpp"
#include "_fixes.hpp"
namespace glm
{
/// @addtogroup core_func_common
/// @{
/// Returns x if x >= 0; otherwise, it returns -x.
///
/// @tparam genType floating-point or signed integer; scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/abs.xml">GLSL abs man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType abs(genType x);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> abs(vecType<T, P> const & x);
/// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
///
/// @tparam genType Floating-point or signed integer; scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sign.xml">GLSL sign man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> sign(vecType<T, P> const & x);
/// Returns a value equal to the nearest integer that is less then or equal to x.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floor.xml">GLSL floor man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> floor(vecType<T, P> const & x);
/// Returns a value equal to the nearest integer to x
/// whose absolute value is not larger than the absolute value of x.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/trunc.xml">GLSL trunc man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> trunc(vecType<T, P> const & x);
/// Returns a value equal to the nearest integer to x.
/// The fraction 0.5 will round in a direction chosen by the
/// implementation, presumably the direction that is fastest.
/// This includes the possibility that round(x) returns the
/// same value as roundEven(x) for all values of x.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/round.xml">GLSL round man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> round(vecType<T, P> const & x);
/// Returns a value equal to the nearest integer to x.
/// A fractional part of 0.5 will round toward the nearest even
/// integer. (Both 3.5 and 4.5 for x will return 4.0.)
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/roundEven.xml">GLSL roundEven man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
/// @see <a href="http://developer.amd.com/documentation/articles/pages/New-Round-to-Even-Technique.aspx">New round to even technique</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> roundEven(vecType<T, P> const & x);
/// Returns a value equal to the nearest integer
/// that is greater than or equal to x.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/ceil.xml">GLSL ceil man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> ceil(vecType<T, P> const & x);
/// Return x - floor(x).
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/fract.xml">GLSL fract man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType fract(genType x);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> fract(vecType<T, P> const & x);
/// Modulus. Returns x - y * floor(x / y)
/// for each component in x using the floating point value y.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/mod.xml">GLSL mod man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType mod(genType x, genType y);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> mod(vecType<T, P> const & x, T y);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> mod(vecType<T, P> const & x, vecType<T, P> const & y);
/// Returns the fractional part of x and sets i to the integer
/// part (as a whole number floating point value). Both the
/// return value and the output parameter will have the same
/// sign as x.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/modf.xml">GLSL modf man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType modf(genType x, genType & i);
/// Returns y if y < x; otherwise, it returns x.
///
/// @tparam genType Floating-point or integer; scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml">GLSL min man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType min(genType x, genType y);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> min(vecType<T, P> const & x, T y);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> min(vecType<T, P> const & x, vecType<T, P> const & y);
/// Returns y if x < y; otherwise, it returns x.
///
/// @tparam genType Floating-point or integer; scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml">GLSL max man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType max(genType x, genType y);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> max(vecType<T, P> const & x, T y);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> max(vecType<T, P> const & x, vecType<T, P> const & y);
/// Returns min(max(x, minVal), maxVal) for each component in x
/// using the floating-point values minVal and maxVal.
///
/// @tparam genType Floating-point or integer; scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml">GLSL clamp man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> clamp(vecType<T, P> const & x, T minVal, T maxVal);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> clamp(vecType<T, P> const & x, vecType<T, P> const & minVal, vecType<T, P> const & maxVal);
/// If genTypeU is a floating scalar or vector:
/// Returns x * (1.0 - a) + y * a, i.e., the linear blend of
/// x and y using the floating-point value a.
/// The value for a is not restricted to the range [0, 1].
///
/// If genTypeU is a boolean scalar or vector:
/// Selects which vector each returned component comes
/// from. For a component of <a> that is false, the
/// corresponding component of x is returned. For a
/// component of a that is true, the corresponding
/// component of y is returned. Components of x and y that
/// are not selected are allowed to be invalid floating point
/// values and will have no effect on the results. Thus, this
/// provides different functionality than
/// genType mix(genType x, genType y, genType(a))
/// where a is a Boolean vector.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/mix.xml">GLSL mix man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
///
/// @param[in] x Value to interpolate.
/// @param[in] y Value to interpolate.
/// @param[in] a Interpolant.
///
/// @tparam genTypeT Floating point scalar or vector.
/// @tparam genTypeU Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT.
///
/// @code
/// #include <glm/glm.hpp>
/// ...
/// float a;
/// bool b;
/// glm::dvec3 e;
/// glm::dvec3 f;
/// glm::vec4 g;
/// glm::vec4 h;
/// ...
/// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors.
/// glm::vec4 s = glm::mix(g, h, b); // Teturns g or h;
/// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second.
/// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter.
/// @endcode
template <typename T, typename U, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> mix(vecType<T, P> const & x, vecType<T, P> const & y, vecType<U, P> const & a);
template <typename T, typename U, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> mix(vecType<T, P> const & x, vecType<T, P> const & y, U a);
template <typename genTypeT, typename genTypeU>
GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a);
/// Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml">GLSL step man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType step(genType edge, genType x);
/// Returns 0.0 if x < edge, otherwise it returns 1.0.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml">GLSL step man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <template <typename, precision> class vecType, typename T, precision P>
GLM_FUNC_DECL vecType<T, P> step(T edge, vecType<T, P> const & x);
/// Returns 0.0 if x < edge, otherwise it returns 1.0.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml">GLSL step man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <template <typename, precision> class vecType, typename T, precision P>
GLM_FUNC_DECL vecType<T, P> step(vecType<T, P> const & edge, vecType<T, P> const & x);
/// Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
/// performs smooth Hermite interpolation between 0 and 1
/// when edge0 < x < edge1. This is useful in cases where
/// you would want a threshold function with a smooth
/// transition. This is equivalent to:
/// genType t;
/// t = clamp ((x - edge0) / (edge1 - edge0), 0, 1);
/// return t * t * (3 - 2 * t);
/// Results are undefined if edge0 >= edge1.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/smoothstep.xml">GLSL smoothstep man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> smoothstep(T edge0, T edge1, vecType<T, P> const & x);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> smoothstep(vecType<T, P> const & edge0, vecType<T, P> const & edge1, vecType<T, P> const & x);
/// Returns true if x holds a NaN (not a number)
/// representation in the underlying implementation's set of
/// floating point representations. Returns false otherwise,
/// including for implementations with no NaN
/// representations.
///
/// /!\ When using compiler fast math, this function may fail.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/isnan.xml">GLSL isnan man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<bool, P> isnan(vecType<T, P> const & x);
/// Returns true if x holds a positive infinity or negative
/// infinity representation in the underlying implementation's
/// set of floating point representations. Returns false
/// otherwise, including for implementations with no infinity
/// representations.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/isinf.xml">GLSL isinf man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<bool, P> isinf(vecType<T, P> const & x);
/// Returns a signed integer value representing
/// the encoding of a floating-point value. The floating-point
/// value's bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToInt.xml">GLSL floatBitsToInt man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
GLM_FUNC_DECL int floatBitsToInt(float const & v);
/// Returns a signed integer value representing
/// the encoding of a floating-point value. The floatingpoint
/// value's bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToInt.xml">GLSL floatBitsToInt man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_DECL vecType<int, P> floatBitsToInt(vecType<float, P> const & v);
/// Returns a unsigned integer value representing
/// the encoding of a floating-point value. The floatingpoint
/// value's bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToUint.xml">GLSL floatBitsToUint man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
GLM_FUNC_DECL uint floatBitsToUint(float const & v);
/// Returns a unsigned integer value representing
/// the encoding of a floating-point value. The floatingpoint
/// value's bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToUint.xml">GLSL floatBitsToUint man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_DECL vecType<uint, P> floatBitsToUint(vecType<float, P> const & v);
/// Returns a floating-point value corresponding to a signed
/// integer encoding of a floating-point value.
/// If an inf or NaN is passed in, it will not signal, and the
/// resulting floating point value is unspecified. Otherwise,
/// the bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/intBitsToFloat.xml">GLSL intBitsToFloat man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
GLM_FUNC_DECL float intBitsToFloat(int const & v);
/// Returns a floating-point value corresponding to a signed
/// integer encoding of a floating-point value.
/// If an inf or NaN is passed in, it will not signal, and the
/// resulting floating point value is unspecified. Otherwise,
/// the bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/intBitsToFloat.xml">GLSL intBitsToFloat man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_DECL vecType<float, P> intBitsToFloat(vecType<int, P> const & v);
/// Returns a floating-point value corresponding to a
/// unsigned integer encoding of a floating-point value.
/// If an inf or NaN is passed in, it will not signal, and the
/// resulting floating point value is unspecified. Otherwise,
/// the bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/uintBitsToFloat.xml">GLSL uintBitsToFloat man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
GLM_FUNC_DECL float uintBitsToFloat(uint const & v);
/// Returns a floating-point value corresponding to a
/// unsigned integer encoding of a floating-point value.
/// If an inf or NaN is passed in, it will not signal, and the
/// resulting floating point value is unspecified. Otherwise,
/// the bit-level representation is preserved.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/uintBitsToFloat.xml">GLSL uintBitsToFloat man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_DECL vecType<float, P> uintBitsToFloat(vecType<uint, P> const & v);
/// Computes and returns a * b + c.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/fma.xml">GLSL fma man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType>
GLM_FUNC_DECL genType fma(genType const & a, genType const & b, genType const & c);
/// Splits x into a floating-point significand in the range
/// [0.5, 1.0) and an integral exponent of two, such that:
/// x = significand * exp(2, exponent)
///
/// The significand is returned by the function and the
/// exponent is returned in the parameter exp. For a
/// floating-point value of zero, the significant and exponent
/// are both zero. For a floating-point value that is an
/// infinity or is not a number, the results are undefined.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/frexp.xml">GLSL frexp man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType, typename genIType>
GLM_FUNC_DECL genType frexp(genType const & x, genIType & exp);
/// Builds a floating-point number from x and the
/// corresponding integral exponent of two in exp, returning:
/// significand * exp(2, exponent)
///
/// If this product is too large to be represented in the
/// floating-point type, the result is undefined.
///
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/ldexp.xml">GLSL ldexp man page</a>;
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a>
template <typename genType, typename genIType>
GLM_FUNC_DECL genType ldexp(genType const & x, genIType const & exp);
/// @}
}//namespace glm
#include "func_common.inl"
+758
View File
@@ -0,0 +1,758 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/func_common.inl
/// @date 2008-08-03 / 2011-06-15
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#include "func_vector_relational.hpp"
#include "type_vec2.hpp"
#include "type_vec3.hpp"
#include "type_vec4.hpp"
#include "_vectorize.hpp"
#include <limits>
namespace glm{
namespace detail
{
template <typename genFIType, bool /*signed*/>
struct compute_abs
{};
template <typename genFIType>
struct compute_abs<genFIType, true>
{
GLM_FUNC_QUALIFIER static genFIType call(genFIType x)
{
GLM_STATIC_ASSERT(
std::numeric_limits<genFIType>::is_iec559 || std::numeric_limits<genFIType>::is_signed,
"'abs' only accept floating-point and integer scalar or vector inputs");
return x >= genFIType(0) ? x : -x;
// TODO, perf comp with: *(((int *) &x) + 1) &= 0x7fffffff;
}
};
template <typename genFIType>
struct compute_abs<genFIType, false>
{
GLM_FUNC_QUALIFIER static genFIType call(genFIType x)
{
GLM_STATIC_ASSERT(
!std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer,
"'abs' only accept floating-point and integer scalar or vector inputs");
return x;
}
};
template <typename T, typename U, precision P, template <class, precision> class vecType>
struct compute_mix_vector
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<U, P> const & a)
{
GLM_STATIC_ASSERT(std::numeric_limits<U>::is_iec559, "'mix' only accept floating-point inputs for the interpolator a");
return vecType<T, P>(vecType<U, P>(x) + a * vecType<U, P>(y - x));
}
};
template <typename T, precision P, template <class, precision> class vecType>
struct compute_mix_vector<T, bool, P, vecType>
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<bool, P> const & a)
{
vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = a[i] ? y[i] : x[i];
return Result;
}
};
template <typename T, typename U, precision P, template <class, precision> class vecType>
struct compute_mix_scalar
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, U const & a)
{
GLM_STATIC_ASSERT(std::numeric_limits<U>::is_iec559, "'mix' only accept floating-point inputs for the interpolator a");
return vecType<T, P>(vecType<U, P>(x) + a * vecType<U, P>(y - x));
}
};
template <typename T, precision P, template <class, precision> class vecType>
struct compute_mix_scalar<T, bool, P, vecType>
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, bool const & a)
{
return a ? y : x;
}
};
template <typename T, typename U>
struct compute_mix
{
GLM_FUNC_QUALIFIER static T call(T const & x, T const & y, U const & a)
{
GLM_STATIC_ASSERT(std::numeric_limits<U>::is_iec559, "'mix' only accept floating-point inputs for the interpolator a");
return static_cast<T>(static_cast<U>(x) + a * static_cast<U>(y - x));
}
};
template <typename T>
struct compute_mix<T, bool>
{
GLM_FUNC_QUALIFIER static T call(T const & x, T const & y, bool const & a)
{
return a ? y : x;
}
};
template <typename T, precision P, template <class, precision> class vecType, bool isFloat = true, bool isSigned = true>
struct compute_sign
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x)
{
return vecType<T, P>(glm::lessThan(vecType<T, P>(0), x)) - vecType<T, P>(glm::lessThan(x, vecType<T, P>(0)));
}
};
template <typename T, precision P, template <class, precision> class vecType>
struct compute_sign<T, P, vecType, false, false>
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x)
{
return vecType<T, P>(glm::greaterThan(x , vecType<T, P>(0)));
}
};
template <typename T, precision P, template <class, precision> class vecType>
struct compute_sign<T, P, vecType, false, true>
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x)
{
T const Shift(static_cast<T>(sizeof(T) * 8 - 1));
vecType<T, P> const y(vecType<typename make_unsigned<T>::type, P>(-x) >> typename make_unsigned<T>::type(Shift));
return (x >> Shift) | y;
}
};
template <typename T, precision P, template <class, precision> class vecType, typename genType, bool isFloat = true>
struct compute_mod
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & a, genType const & b)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'mod' only accept floating-point inputs. Include <glm/gtc/integer.hpp> for integer inputs.");
return a - b * floor(a / b);
}
};
}//namespace detail
// abs
template <>
GLM_FUNC_QUALIFIER int32 abs(int32 x)
{
int32 const y = x >> 31;
return (x ^ y) - y;
}
template <typename genFIType>
GLM_FUNC_QUALIFIER genFIType abs(genFIType x)
{
return detail::compute_abs<genFIType, std::numeric_limits<genFIType>::is_signed>::call(x);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> abs(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(abs, x);
}
// sign
// fast and works for any type
template <typename genFIType>
GLM_FUNC_QUALIFIER genFIType sign(genFIType x)
{
GLM_STATIC_ASSERT(
std::numeric_limits<genFIType>::is_iec559 || (std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer),
"'sign' only accept signed inputs");
return detail::compute_sign<genFIType, defaultp, tvec1, std::numeric_limits<genFIType>::is_iec559>::call(tvec1<genFIType>(x)).x;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> sign(vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(
std::numeric_limits<T>::is_iec559 || (std::numeric_limits<T>::is_signed && std::numeric_limits<T>::is_integer),
"'sign' only accept signed inputs");
return detail::compute_sign<T, P, vecType, std::numeric_limits<T>::is_iec559>::call(x);
}
// floor
using ::std::floor;
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> floor(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(floor, x);
}
// trunc
# if GLM_HAS_CXX11_STL
using ::std::trunc;
# else
template <typename genType>
GLM_FUNC_QUALIFIER genType trunc(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'trunc' only accept floating-point inputs");
return x < static_cast<genType>(0) ? -floor(-x) : floor(x);
}
# endif
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> trunc(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(trunc, x);
}
// round
# if GLM_HAS_CXX11_STL
using ::std::round;
# else
template <typename genType>
GLM_FUNC_QUALIFIER genType round(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'round' only accept floating-point inputs");
return x < static_cast<genType>(0) ? static_cast<genType>(int(x - static_cast<genType>(0.5))) : static_cast<genType>(int(x + static_cast<genType>(0.5)));
}
# endif
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> round(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(round, x);
}
/*
// roundEven
template <typename genType>
GLM_FUNC_QUALIFIER genType roundEven(genType const& x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'roundEven' only accept floating-point inputs");
return genType(int(x + genType(int(x) % 2)));
}
*/
// roundEven
template <typename genType>
GLM_FUNC_QUALIFIER genType roundEven(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'roundEven' only accept floating-point inputs");
int Integer = static_cast<int>(x);
genType IntegerPart = static_cast<genType>(Integer);
genType FractionalPart = fract(x);
if(FractionalPart > static_cast<genType>(0.5) || FractionalPart < static_cast<genType>(0.5))
{
return round(x);
}
else if((Integer % 2) == 0)
{
return IntegerPart;
}
else if(x <= static_cast<genType>(0)) // Work around...
{
return IntegerPart - static_cast<genType>(1);
}
else
{
return IntegerPart + static_cast<genType>(1);
}
//else // Bug on MinGW 4.5.2
//{
// return mix(IntegerPart + genType(-1), IntegerPart + genType(1), x <= genType(0));
//}
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> roundEven(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(roundEven, x);
}
// ceil
using ::std::ceil;
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> ceil(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(ceil, x);
}
// fract
template <typename genType>
GLM_FUNC_QUALIFIER genType fract(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'fract' only accept floating-point inputs");
return fract(tvec1<genType>(x)).x;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> fract(vecType<T, P> const & x)
{
return x - floor(x);
}
// mod
template <typename genType>
GLM_FUNC_QUALIFIER genType mod(genType x, genType y)
{
return mod(tvec1<genType>(x), y).x;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> mod(vecType<T, P> const & x, T y)
{
return detail::compute_mod<T, P, vecType, T, std::numeric_limits<T>::is_iec559>::call(x, y);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> mod(vecType<T, P> const & x, vecType<T, P> const & y)
{
return detail::compute_mod<T, P, vecType, vecType<T, P>, std::numeric_limits<T>::is_iec559>::call(x, y);
}
// modf
template <typename genType>
GLM_FUNC_QUALIFIER genType modf(genType x, genType & i)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'modf' only accept floating-point inputs");
return std::modf(x, &i);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> modf(tvec1<T, P> const & x, tvec1<T, P> & i)
{
return tvec1<T, P>(
modf(x.x, i.x));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> modf(tvec2<T, P> const & x, tvec2<T, P> & i)
{
return tvec2<T, P>(
modf(x.x, i.x),
modf(x.y, i.y));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> modf(tvec3<T, P> const & x, tvec3<T, P> & i)
{
return tvec3<T, P>(
modf(x.x, i.x),
modf(x.y, i.y),
modf(x.z, i.z));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> modf(tvec4<T, P> const & x, tvec4<T, P> & i)
{
return tvec4<T, P>(
modf(x.x, i.x),
modf(x.y, i.y),
modf(x.z, i.z),
modf(x.w, i.w));
}
//// Only valid if (INT_MIN <= x-y <= INT_MAX)
//// min(x,y)
//r = y + ((x - y) & ((x - y) >> (sizeof(int) *
//CHAR_BIT - 1)));
//// max(x,y)
//r = x - ((x - y) & ((x - y) >> (sizeof(int) *
//CHAR_BIT - 1)));
// min
template <typename genType>
GLM_FUNC_QUALIFIER genType min(genType x, genType y)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || std::numeric_limits<genType>::is_integer, "'min' only accept floating-point or integer inputs");
return x < y ? x : y;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> min(vecType<T, P> const & a, T b)
{
return detail::functor2_vec_sca<T, P, vecType>::call(min, a, b);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> min(vecType<T, P> const & a, vecType<T, P> const & b)
{
return detail::functor2<T, P, vecType>::call(min, a, b);
}
// max
template <typename genType>
GLM_FUNC_QUALIFIER genType max(genType x, genType y)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || std::numeric_limits<genType>::is_integer, "'max' only accept floating-point or integer inputs");
return x > y ? x : y;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> max(vecType<T, P> const & a, T b)
{
return detail::functor2_vec_sca<T, P, vecType>::call(max, a, b);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> max(vecType<T, P> const & a, vecType<T, P> const & b)
{
return detail::functor2<T, P, vecType>::call(max, a, b);
}
// clamp
template <typename genType>
GLM_FUNC_QUALIFIER genType clamp(genType x, genType minVal, genType maxVal)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || std::numeric_limits<genType>::is_integer, "'clamp' only accept floating-point or integer inputs");
return min(max(x, minVal), maxVal);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> clamp(vecType<T, P> const & x, T minVal, T maxVal)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, "'clamp' only accept floating-point or integer inputs");
return min(max(x, minVal), maxVal);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> clamp(vecType<T, P> const & x, vecType<T, P> const & minVal, vecType<T, P> const & maxVal)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, "'clamp' only accept floating-point or integer inputs");
return min(max(x, minVal), maxVal);
}
template <typename genTypeT, typename genTypeU>
GLM_FUNC_QUALIFIER genTypeT mix(genTypeT x, genTypeT y, genTypeU a)
{
return detail::compute_mix<genTypeT, genTypeU>::call(x, y, a);
}
template <typename T, typename U, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> mix(vecType<T, P> const & x, vecType<T, P> const & y, U a)
{
return detail::compute_mix_scalar<T, U, P, vecType>::call(x, y, a);
}
template <typename T, typename U, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> mix(vecType<T, P> const & x, vecType<T, P> const & y, vecType<U, P> const & a)
{
return detail::compute_mix_vector<T, U, P, vecType>::call(x, y, a);
}
// step
template <typename genType>
GLM_FUNC_QUALIFIER genType step(genType edge, genType x)
{
return mix(static_cast<genType>(1), static_cast<genType>(0), glm::lessThan(x, edge));
}
template <template <typename, precision> class vecType, typename T, precision P>
GLM_FUNC_QUALIFIER vecType<T, P> step(T edge, vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'step' only accept floating-point inputs");
return mix(vecType<T, P>(1), vecType<T, P>(0), glm::lessThan(x, vecType<T, P>(edge)));
}
template <template <typename, precision> class vecType, typename T, precision P>
GLM_FUNC_QUALIFIER vecType<T, P> step(vecType<T, P> const & edge, vecType<T, P> const & x)
{
return mix(vecType<T, P>(1), vecType<T, P>(0), glm::lessThan(x, edge));
}
// smoothstep
template <typename genType>
GLM_FUNC_QUALIFIER genType smoothstep(genType edge0, genType edge1, genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'smoothstep' only accept floating-point inputs");
genType const tmp(clamp((x - edge0) / (edge1 - edge0), genType(0), genType(1)));
return tmp * tmp * (genType(3) - genType(2) * tmp);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> smoothstep(T edge0, T edge1, vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'smoothstep' only accept floating-point inputs");
vecType<T, P> const tmp(clamp((x - edge0) / (edge1 - edge0), static_cast<T>(0), static_cast<T>(1)));
return tmp * tmp * (static_cast<T>(3) - static_cast<T>(2) * tmp);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> smoothstep(vecType<T, P> const & edge0, vecType<T, P> const & edge1, vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'smoothstep' only accept floating-point inputs");
vecType<T, P> const tmp(clamp((x - edge0) / (edge1 - edge0), static_cast<T>(0), static_cast<T>(1)));
return tmp * tmp * (static_cast<T>(3) - static_cast<T>(2) * tmp);
}
# if GLM_HAS_CXX11_STL
using std::isnan;
# else
template <typename genType>
GLM_FUNC_QUALIFIER bool isnan(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'isnan' only accept floating-point inputs");
# if GLM_HAS_CXX11_STL
return std::isnan(x);
# elif GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_INTEL)
return _isnan(x) != 0;
# elif GLM_COMPILER & (GLM_COMPILER_GCC | (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM))
# if GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L
return _isnan(x) != 0;
# else
return std::isnan(x);
# endif
# elif GLM_COMPILER & GLM_COMPILER_CUDA
return isnan(x) != 0;
# else
return std::isnan(x);
# endif
}
# endif
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> isnan(vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'isnan' only accept floating-point inputs");
return detail::functor1<bool, T, P, vecType>::call(isnan, x);
}
# if GLM_HAS_CXX11_STL
using std::isinf;
# else
template <typename genType>
GLM_FUNC_QUALIFIER bool isinf(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'isinf' only accept floating-point inputs");
# if GLM_HAS_CXX11_STL
return std::isinf(x);
# elif GLM_COMPILER & (GLM_COMPILER_INTEL | GLM_COMPILER_VC)
return _fpclass(x) == _FPCLASS_NINF || _fpclass(x) == _FPCLASS_PINF;
# elif GLM_COMPILER & (GLM_COMPILER_GCC | (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM))
# if(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L)
return _isinf(x) != 0;
# else
return std::isinf(x);
# endif
# elif GLM_COMPILER & GLM_COMPILER_CUDA
// http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/docs/online/group__CUDA__MATH__DOUBLE_g13431dd2b40b51f9139cbb7f50c18fab.html#g13431dd2b40b51f9139cbb7f50c18fab
return isinf(double(x)) != 0;
# else
return std::isinf(x);
# endif
}
# endif
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> isinf(vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'isnan' only accept floating-point inputs");
return detail::functor1<bool, T, P, vecType>::call(isinf, x);
}
GLM_FUNC_QUALIFIER int floatBitsToInt(float const & v)
{
return reinterpret_cast<int&>(const_cast<float&>(v));
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<int, P> floatBitsToInt(vecType<float, P> const & v)
{
return reinterpret_cast<vecType<int, P>&>(const_cast<vecType<float, P>&>(v));
}
GLM_FUNC_QUALIFIER uint floatBitsToUint(float const & v)
{
return reinterpret_cast<uint&>(const_cast<float&>(v));
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<uint, P> floatBitsToUint(vecType<float, P> const & v)
{
return reinterpret_cast<vecType<uint, P>&>(const_cast<vecType<float, P>&>(v));
}
GLM_FUNC_QUALIFIER float intBitsToFloat(int const & v)
{
return reinterpret_cast<float&>(const_cast<int&>(v));
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<float, P> intBitsToFloat(vecType<int, P> const & v)
{
return reinterpret_cast<vecType<float, P>&>(const_cast<vecType<int, P>&>(v));
}
GLM_FUNC_QUALIFIER float uintBitsToFloat(uint const & v)
{
return reinterpret_cast<float&>(const_cast<uint&>(v));
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<float, P> uintBitsToFloat(vecType<uint, P> const & v)
{
return reinterpret_cast<vecType<float, P>&>(const_cast<vecType<uint, P>&>(v));
}
template <typename genType>
GLM_FUNC_QUALIFIER genType fma(genType const & a, genType const & b, genType const & c)
{
return a * b + c;
}
template <typename genType>
GLM_FUNC_QUALIFIER genType frexp(genType x, int & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'frexp' only accept floating-point inputs");
return std::frexp(x, exp);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> frexp(tvec1<T, P> const & x, tvec1<int, P> & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'frexp' only accept floating-point inputs");
return tvec1<T, P>(std::frexp(x.x, exp.x));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> frexp(tvec2<T, P> const & x, tvec2<int, P> & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'frexp' only accept floating-point inputs");
return tvec2<T, P>(
frexp(x.x, exp.x),
frexp(x.y, exp.y));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> frexp(tvec3<T, P> const & x, tvec3<int, P> & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'frexp' only accept floating-point inputs");
return tvec3<T, P>(
frexp(x.x, exp.x),
frexp(x.y, exp.y),
frexp(x.z, exp.z));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> frexp(tvec4<T, P> const & x, tvec4<int, P> & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'frexp' only accept floating-point inputs");
return tvec4<T, P>(
frexp(x.x, exp.x),
frexp(x.y, exp.y),
frexp(x.z, exp.z),
frexp(x.w, exp.w));
}
template <typename genType, precision P>
GLM_FUNC_QUALIFIER genType ldexp(genType const & x, int const & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'ldexp' only accept floating-point inputs");
return std::ldexp(x, exp);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> ldexp(tvec1<T, P> const & x, tvec1<int, P> const & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'ldexp' only accept floating-point inputs");
return tvec1<T, P>(
ldexp(x.x, exp.x));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> ldexp(tvec2<T, P> const & x, tvec2<int, P> const & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'ldexp' only accept floating-point inputs");
return tvec2<T, P>(
ldexp(x.x, exp.x),
ldexp(x.y, exp.y));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> ldexp(tvec3<T, P> const & x, tvec3<int, P> const & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'ldexp' only accept floating-point inputs");
return tvec3<T, P>(
ldexp(x.x, exp.x),
ldexp(x.y, exp.y),
ldexp(x.z, exp.z));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> ldexp(tvec4<T, P> const & x, tvec4<int, P> const & exp)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'ldexp' only accept floating-point inputs");
return tvec4<T, P>(
ldexp(x.x, exp.x),
ldexp(x.y, exp.y),
ldexp(x.z, exp.z),
ldexp(x.w, exp.w));
}
}//namespace glm
+132
View File
@@ -0,0 +1,132 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/func_exponential.hpp
/// @date 2008-08-08 / 2011-06-14
/// @author Christophe Riccio
///
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
///
/// @defgroup core_func_exponential Exponential functions
/// @ingroup core
///
/// These all operate component-wise. The description is per component.
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "type_vec1.hpp"
#include "type_vec2.hpp"
#include "type_vec3.hpp"
#include "type_vec4.hpp"
#include <cmath>
namespace glm
{
/// @addtogroup core_func_exponential
/// @{
/// Returns 'base' raised to the power 'exponent'.
///
/// @param base Floating point value. pow function is defined for input values of 'base' defined in the range (inf-, inf+) in the limit of the type precision.
/// @param exponent Floating point value representing the 'exponent'.
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/pow.xml">GLSL pow man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> pow(vecType<T, P> const & base, vecType<T, P> const & exponent);
/// Returns the natural exponentiation of x, i.e., e^x.
///
/// @param v exp function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type precision.
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/exp.xml">GLSL exp man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> exp(vecType<T, P> const & v);
/// Returns the natural logarithm of v, i.e.,
/// returns the value y which satisfies the equation x = e^y.
/// Results are undefined if v <= 0.
///
/// @param v log function is defined for input values of v defined in the range (0, inf+) in the limit of the type precision.
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/log.xml">GLSL log man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> log(vecType<T, P> const & v);
/// Returns 2 raised to the v power.
///
/// @param v exp2 function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type precision.
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/exp2.xml">GLSL exp2 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> exp2(vecType<T, P> const & v);
/// Returns the base 2 log of x, i.e., returns the value y,
/// which satisfies the equation x = 2 ^ y.
///
/// @param v log2 function is defined for input values of v defined in the range (0, inf+) in the limit of the type precision.
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/log2.xml">GLSL log2 man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> log2(vecType<T, P> const & v);
/// Returns the positive square root of v.
///
/// @param v sqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type precision.
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sqrt.xml">GLSL sqrt man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
//template <typename genType>
//GLM_FUNC_DECL genType sqrt(genType const & x);
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> sqrt(vecType<T, P> const & v);
/// Returns the reciprocal of the positive square root of v.
///
/// @param v inversesqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type precision.
/// @tparam genType Floating-point scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/inversesqrt.xml">GLSL inversesqrt man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> inversesqrt(vecType<T, P> const & v);
/// @}
}//namespace glm
#include "func_exponential.inl"
+161
View File
@@ -0,0 +1,161 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/func_exponential.inl
/// @date 2008-08-03 / 2011-06-15
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#include "func_vector_relational.hpp"
#include "_vectorize.hpp"
#include <limits>
#include <cmath>
#include <cassert>
namespace glm{
namespace detail
{
# if GLM_HAS_CXX11_STL
using std::log2;
# else
template <typename genType>
genType log2(genType Value)
{
return std::log(Value) * static_cast<genType>(1.4426950408889634073599246810019);
}
# endif
template <typename T, precision P, template <class, precision> class vecType, bool isFloat = true>
struct compute_log2
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & vec)
{
return detail::functor1<T, T, P, vecType>::call(log2, vec);
}
};
template <template <class, precision> class vecType, typename T, precision P>
struct compute_inversesqrt
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x)
{
return static_cast<T>(1) / sqrt(x);
}
};
template <template <class, precision> class vecType>
struct compute_inversesqrt<vecType, float, lowp>
{
GLM_FUNC_QUALIFIER static vecType<float, lowp> call(vecType<float, lowp> const & x)
{
vecType<float, lowp> tmp(x);
vecType<float, lowp> xhalf(tmp * 0.5f);
vecType<uint, lowp>* p = reinterpret_cast<vecType<uint, lowp>*>(const_cast<vecType<float, lowp>*>(&x));
vecType<uint, lowp> i = vecType<uint, lowp>(0x5f375a86) - (*p >> vecType<uint, lowp>(1));
vecType<float, lowp>* ptmp = reinterpret_cast<vecType<float, lowp>*>(&i);
tmp = *ptmp;
tmp = tmp * (1.5f - xhalf * tmp * tmp);
return tmp;
}
};
}//namespace detail
// pow
using std::pow;
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> pow(vecType<T, P> const & base, vecType<T, P> const & exponent)
{
return detail::functor2<T, P, vecType>::call(pow, base, exponent);
}
// exp
using std::exp;
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> exp(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(exp, x);
}
// log
using std::log;
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> log(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(log, x);
}
//exp2, ln2 = 0.69314718055994530941723212145818f
template <typename genType>
GLM_FUNC_QUALIFIER genType exp2(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'exp2' only accept floating-point inputs");
return std::exp(static_cast<genType>(0.69314718055994530941723212145818) * x);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> exp2(vecType<T, P> const & x)
{
return detail::functor1<T, T, P, vecType>::call(exp2, x);
}
// log2, ln2 = 0.69314718055994530941723212145818f
template <typename genType>
GLM_FUNC_QUALIFIER genType log2(genType x)
{
return log2(tvec1<genType>(x)).x;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> log2(vecType<T, P> const & x)
{
return detail::compute_log2<T, P, vecType, std::numeric_limits<T>::is_iec559>::call(x);
}
// sqrt
using std::sqrt;
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> sqrt(vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'sqrt' only accept floating-point inputs");
return detail::functor1<T, T, P, vecType>::call(sqrt, x);
}
// inversesqrt
template <typename genType>
GLM_FUNC_QUALIFIER genType inversesqrt(genType x)
{
return static_cast<genType>(1) / sqrt(x);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> inversesqrt(vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'inversesqrt' only accept floating-point inputs");
return detail::compute_inversesqrt<vecType, T, P>::call(x);
}
}//namespace glm
+142
View File
@@ -0,0 +1,142 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/func_geometric.hpp
/// @date 2008-08-03 / 2011-06-14
/// @author Christophe Riccio
///
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
///
/// @defgroup core_func_geometric Geometric functions
/// @ingroup core
///
/// These operate on vectors as vectors, not component-wise.
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "type_vec3.hpp"
namespace glm
{
/// @addtogroup core_func_geometric
/// @{
/// Returns the length of x, i.e., sqrt(x * x).
///
/// @tparam genType Floating-point vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/length.xml">GLSL length man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL T length(
vecType<T, P> const & x);
/// Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
///
/// @tparam genType Floating-point vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/distance.xml">GLSL distance man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL T distance(
vecType<T, P> const & p0,
vecType<T, P> const & p1);
/// Returns the dot product of x and y, i.e., result = x * y.
///
/// @tparam genType Floating-point vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/dot.xml">GLSL dot man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL T dot(
vecType<T, P> const & x,
vecType<T, P> const & y);
/// Returns the cross product of x and y.
///
/// @tparam valType Floating-point scalar types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/cross.xml">GLSL cross man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename T, precision P>
GLM_FUNC_DECL tvec3<T, P> cross(
tvec3<T, P> const & x,
tvec3<T, P> const & y);
/// Returns a vector in the same direction as x but with length of 1.
/// According to issue 10 GLSL 1.10 specification, if length(x) == 0 then result is undefined and generate an error.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/normalize.xml">GLSL normalize man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> normalize(
vecType<T, P> const & x);
/// If dot(Nref, I) < 0.0, return N, otherwise, return -N.
///
/// @tparam genType Floating-point vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/faceforward.xml">GLSL faceforward man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> faceforward(
vecType<T, P> const & N,
vecType<T, P> const & I,
vecType<T, P> const & Nref);
/// For the incident vector I and surface orientation N,
/// returns the reflection direction : result = I - 2.0 * dot(N, I) * N.
///
/// @tparam genType Floating-point vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/reflect.xml">GLSL reflect man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename genType>
GLM_FUNC_DECL genType reflect(
genType const & I,
genType const & N);
/// For the incident vector I and surface normal N,
/// and the ratio of indices of refraction eta,
/// return the refraction vector.
///
/// @tparam genType Floating-point vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/refract.xml">GLSL refract man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> refract(
vecType<T, P> const & I,
vecType<T, P> const & N,
T eta);
/// @}
}//namespace glm
#include "func_geometric.inl"
+201
View File
@@ -0,0 +1,201 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/func_geometric.inl
/// @date 2008-08-03 / 2011-06-15
/// @author Christophe Riccio
///////////////////////////////////////////////////////////////////////////////////
#include "func_exponential.hpp"
#include "func_common.hpp"
#include "type_vec2.hpp"
#include "type_vec4.hpp"
#include "type_float.hpp"
namespace glm{
namespace detail
{
template <template <class, precision> class vecType, typename T, precision P>
struct compute_dot{};
template <typename T, precision P>
struct compute_dot<tvec1, T, P>
{
GLM_FUNC_QUALIFIER static T call(tvec1<T, P> const & a, tvec1<T, P> const & b)
{
return a.x * b.x;
}
};
template <typename T, precision P>
struct compute_dot<tvec2, T, P>
{
GLM_FUNC_QUALIFIER static T call(tvec2<T, P> const & x, tvec2<T, P> const & y)
{
tvec2<T, P> tmp(x * y);
return tmp.x + tmp.y;
}
};
template <typename T, precision P>
struct compute_dot<tvec3, T, P>
{
GLM_FUNC_QUALIFIER static T call(tvec3<T, P> const & x, tvec3<T, P> const & y)
{
tvec3<T, P> tmp(x * y);
return tmp.x + tmp.y + tmp.z;
}
};
template <typename T, precision P>
struct compute_dot<tvec4, T, P>
{
GLM_FUNC_QUALIFIER static T call(tvec4<T, P> const & x, tvec4<T, P> const & y)
{
tvec4<T, P> tmp(x * y);
return (tmp.x + tmp.y) + (tmp.z + tmp.w);
}
};
}//namespace detail
// length
template <typename genType>
GLM_FUNC_QUALIFIER genType length(genType x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'length' only accept floating-point inputs");
return abs(x);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T length(vecType<T, P> const & v)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'length' only accept floating-point inputs");
return sqrt(dot(v, v));
}
// distance
template <typename genType>
GLM_FUNC_QUALIFIER genType distance(genType const & p0, genType const & p1)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'distance' only accept floating-point inputs");
return length(p1 - p0);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T distance(vecType<T, P> const & p0, vecType<T, P> const & p1)
{
return length(p1 - p0);
}
// dot
template <typename T>
GLM_FUNC_QUALIFIER T dot(T x, T y)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'dot' only accept floating-point inputs");
return x * y;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T dot(vecType<T, P> const & x, vecType<T, P> const & y)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'dot' only accept floating-point inputs");
return detail::compute_dot<vecType, T, P>::call(x, y);
}
// cross
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> cross(tvec3<T, P> const & x, tvec3<T, P> const & y)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'cross' only accept floating-point inputs");
return tvec3<T, P>(
x.y * y.z - y.y * x.z,
x.z * y.x - y.z * x.x,
x.x * y.y - y.x * x.y);
}
// normalize
template <typename genType>
GLM_FUNC_QUALIFIER genType normalize(genType const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'normalize' only accept floating-point inputs");
return x < genType(0) ? genType(-1) : genType(1);
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> normalize(vecType<T, P> const & x)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'normalize' only accept floating-point inputs");
return x * inversesqrt(dot(x, x));
}
// faceforward
template <typename genType>
GLM_FUNC_QUALIFIER genType faceforward(genType const & N, genType const & I, genType const & Nref)
{
return dot(Nref, I) < static_cast<genType>(0) ? N : -N;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> faceforward(vecType<T, P> const & N, vecType<T, P> const & I, vecType<T, P> const & Nref)
{
return dot(Nref, I) < static_cast<T>(0) ? N : -N;
}
// reflect
template <typename genType>
GLM_FUNC_QUALIFIER genType reflect(genType const & I, genType const & N)
{
return I - N * dot(N, I) * static_cast<genType>(2);
}
// refract
template <typename genType>
GLM_FUNC_QUALIFIER genType refract(genType const & I, genType const & N, genType const & eta)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'refract' only accept floating-point inputs");
genType const dotValue(dot(N, I));
genType const k(static_cast<genType>(1) - eta * eta * (static_cast<genType>(1) - dotValue * dotValue));
return (eta * I - (eta * dotValue + sqrt(k)) * N) * static_cast<genType>(k >= static_cast<genType>(0));
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> refract(vecType<T, P> const & I, vecType<T, P> const & N, T eta)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'refract' only accept floating-point inputs");
T const dotValue(dot(N, I));
T const k(static_cast<T>(1) - eta * eta * (static_cast<T>(1) - dotValue * dotValue));
return (eta * I - (eta * dotValue + std::sqrt(k)) * N) * static_cast<T>(k >= static_cast<T>(0));
}
}//namespace glm
+232
View File
@@ -0,0 +1,232 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// Restrictions:
/// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref core
/// @file glm/detail/func_integer.hpp
/// @date 2010-03-17 / 2011-06-18
/// @author Christophe Riccio
///
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
///
/// @defgroup core_func_integer Integer functions
/// @ingroup core
///
/// These all operate component-wise. The description is per component.
/// The notation [a, b] means the set of bits from bit-number a through bit-number
/// b, inclusive. The lowest-order bit is bit 0.
///////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "setup.hpp"
#include "precision.hpp"
#include "func_common.hpp"
#include "func_vector_relational.hpp"
namespace glm
{
/// @addtogroup core_func_integer
/// @{
/// Adds 32-bit unsigned integer x and y, returning the sum
/// modulo pow(2, 32). The value carry is set to 0 if the sum was
/// less than pow(2, 32), or to 1 otherwise.
///
/// @tparam genUType Unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/uaddCarry.xml">GLSL uaddCarry man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<uint, P> uaddCarry(
vecType<uint, P> const & x,
vecType<uint, P> const & y,
vecType<uint, P> & carry);
/// Subtracts the 32-bit unsigned integer y from x, returning
/// the difference if non-negative, or pow(2, 32) plus the difference
/// otherwise. The value borrow is set to 0 if x >= y, or to 1 otherwise.
///
/// @tparam genUType Unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/usubBorrow.xml">GLSL usubBorrow man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<uint, P> usubBorrow(
vecType<uint, P> const & x,
vecType<uint, P> const & y,
vecType<uint, P> & borrow);
/// Multiplies 32-bit integers x and y, producing a 64-bit
/// result. The 32 least-significant bits are returned in lsb.
/// The 32 most-significant bits are returned in msb.
///
/// @tparam genUType Unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/umulExtended.xml">GLSL umulExtended man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL void umulExtended(
vecType<uint, P> const & x,
vecType<uint, P> const & y,
vecType<uint, P> & msb,
vecType<uint, P> & lsb);
/// Multiplies 32-bit integers x and y, producing a 64-bit
/// result. The 32 least-significant bits are returned in lsb.
/// The 32 most-significant bits are returned in msb.
///
/// @tparam genIType Signed integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/imulExtended.xml">GLSL imulExtended man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL void imulExtended(
vecType<int, P> const & x,
vecType<int, P> const & y,
vecType<int, P> & msb,
vecType<int, P> & lsb);
/// Extracts bits [offset, offset + bits - 1] from value,
/// returning them in the least significant bits of the result.
/// For unsigned data types, the most significant bits of the
/// result will be set to zero. For signed data types, the
/// most significant bits will be set to the value of bit offset + base - 1.
///
/// If bits is zero, the result will be zero. The result will be
/// undefined if offset or bits is negative, or if the sum of
/// offset and bits is greater than the number of bits used
/// to store the operand.
///
/// @tparam T Signed or unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldExtract.xml">GLSL bitfieldExtract man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> bitfieldExtract(
vecType<T, P> const & Value,
int Offset,
int Bits);
/// Returns the insertion the bits least-significant bits of insert into base.
///
/// The result will have bits [offset, offset + bits - 1] taken
/// from bits [0, bits - 1] of insert, and all other bits taken
/// directly from the corresponding bits of base. If bits is
/// zero, the result will simply be base. The result will be
/// undefined if offset or bits is negative, or if the sum of
/// offset and bits is greater than the number of bits used to
/// store the operand.
///
/// @tparam T Signed or unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldInsert.xml">GLSL bitfieldInsert man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> bitfieldInsert(
vecType<T, P> const & Base,
vecType<T, P> const & Insert,
int Offset,
int Bits);
/// Returns the reversal of the bits of value.
/// The bit numbered n of the result will be taken from bit (bits - 1) - n of value,
/// where bits is the total number of bits used to represent value.
///
/// @tparam T Signed or unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldReverse.xml">GLSL bitfieldReverse man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<T, P> bitfieldReverse(vecType<T, P> const & v);
/// Returns the number of bits set to 1 in the binary representation of value.
///
/// @tparam T Signed or unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitCount.xml">GLSL bitCount man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genType>
GLM_FUNC_DECL int bitCount(genType v);
/// Returns the number of bits set to 1 in the binary representation of value.
///
/// @tparam T Signed or unsigned integer scalar or vector types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/bitCount.xml">GLSL bitCount man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<int, P> bitCount(vecType<T, P> const & v);
/// Returns the bit number of the least significant bit set to
/// 1 in the binary representation of value.
/// If value is zero, -1 will be returned.
///
/// @tparam T Signed or unsigned integer scalar types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/findLSB.xml">GLSL findLSB man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genIUType>
GLM_FUNC_DECL int findLSB(genIUType x);
/// Returns the bit number of the least significant bit set to
/// 1 in the binary representation of value.
/// If value is zero, -1 will be returned.
///
/// @tparam T Signed or unsigned integer scalar types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/findLSB.xml">GLSL findLSB man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<int, P> findLSB(vecType<T, P> const & v);
/// Returns the bit number of the most significant bit in the binary representation of value.
/// For positive integers, the result will be the bit number of the most significant bit set to 1.
/// For negative integers, the result will be the bit number of the most significant
/// bit set to 0. For a value of zero or negative one, -1 will be returned.
///
/// @tparam T Signed or unsigned integer scalar types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/findMSB.xml">GLSL findMSB man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename genIUType>
GLM_FUNC_DECL int findMSB(genIUType x);
/// Returns the bit number of the most significant bit in the binary representation of value.
/// For positive integers, the result will be the bit number of the most significant bit set to 1.
/// For negative integers, the result will be the bit number of the most significant
/// bit set to 0. For a value of zero or negative one, -1 will be returned.
///
/// @tparam T Signed or unsigned integer scalar types.
///
/// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/findMSB.xml">GLSL findMSB man page</a>
/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_DECL vecType<int, P> findMSB(vecType<T, P> const & v);
/// @}
}//namespace glm
#include "func_integer.inl"

Some files were not shown because too many files have changed in this diff Show More