Commit Graph

766 Commits

Author SHA1 Message Date
Stefan Dösinger 271fb0052f wined3d: Add support for showing a logo. 2007-09-14 14:26:00 +02:00
Roderick Colenbrander ad692f2a83 wined3d: Add PBO support for dynamically locked surfaces. 2007-09-13 11:00:47 +02:00
Stefan Dösinger 5ab9d85c39 wined3d: Implement texbeml. 2007-09-12 12:10:03 +02:00
Stefan Dösinger 0ed81b20af wined3d: Emulate D3DFMT_L6V5U5. 2007-09-12 12:09:56 +02:00
Stefan Dösinger 422e0ba1cc wined3d: texkill ignores the .w only in ps 1.x. 2007-09-11 13:48:08 +02:00
Stefan Dösinger a006d2568b wined3d: Fix texdepth instruction. 2007-09-11 13:47:49 +02:00
Stefan Dösinger fe0f0eb48a wined3d: Some texture transform fixes. 2007-08-27 18:28:43 +02:00
Stefan Dösinger a8e21d0692 wined3d: Texture transforms are disabled when drawing rhw vertices. 2007-08-27 18:28:38 +02:00
Stefan Dösinger 2665a8bf79 wined3d: Add some missing vertex state render states. 2007-08-27 18:28:32 +02:00
Stefan Dösinger 6ec6c941fa wined3d: BaseVertexIndex can be negative. 2007-08-27 12:00:42 +02:00
Stefan Dösinger e184b09a66 wined3d: Fake occlusion queries if the wrong context is active. 2007-08-23 13:34:52 +02:00
Stefan Dösinger a99907d1d2 wined3d: Deal with multithreading in event queries. 2007-08-23 13:34:17 +02:00
Stefan Dösinger 98bc83be7c wined3d: Fall back to drawStridedSlow if fog coords are used. 2007-08-23 13:33:22 +02:00
Stefan Dösinger 86b991c851 wined3d: Fix R32F and R16F. 2007-08-17 12:01:38 +02:00
Stefan Dösinger b728ff0f55 wined3d: Simplify IWineD3DBaseTextureImpl_ApplyStateChanges. 2007-08-17 12:01:38 +02:00
Stefan Dösinger 028729d102 wined3d: Fix WINED3DFMT_A4L4. 2007-08-16 11:35:06 +02:00
Stefan Dösinger b21c785482 wined3d: Optimize float constants in stateblocks. 2007-08-15 09:36:07 +02:00
Stefan Dösinger 59fb2928b8 wined3d: Optimize sampler states in stateblocks. 2007-08-15 09:35:49 +02:00
Stefan Dösinger 6e7a10f550 wined3d: Fix a field in the wined3d header. 2007-08-15 09:35:39 +02:00
Stefan Dösinger 03ffb73450 wined3d: Optimize texture stage state applying. 2007-08-14 12:29:04 +02:00
Stefan Dösinger 865b82af2c wined3d: Optimize bool and int pixel shader constants. 2007-08-14 12:28:59 +02:00
Stefan Dösinger 4673b1c68e wined3d: Optimize bool and int vs constants. 2007-08-14 12:28:52 +02:00
Stefan Dösinger 92ce028a0b wined3d: Optimize transform state in stateblocks. 2007-08-14 12:28:40 +02:00
Roderick Colenbrander 6b177c44e1 wined3d: Pass the proper DeviceName to ChangeDisplaySettings. 2007-08-14 12:28:28 +02:00
Roderick Colenbrander d391c11d43 wined3d: Proper CheckDeviceType / CheckDepthStencilMatch support. 2007-08-13 13:02:46 +02:00
Roderick Colenbrander 5754726aeb wined3d: Use the proper depth stencil format. 2007-08-13 12:36:55 +02:00
Stefan Dösinger 93155ea087 wined3d: Optimize render states in the stateblock. 2007-08-13 11:37:25 +02:00
Stefan Dösinger e7cbb340dc wined3d: Remove stateblock::set.*. 2007-08-13 11:36:43 +02:00
Roderick Colenbrander 4647cbb625 wined3d: Better pixelformat selection code. 2007-08-09 14:11:19 +02:00
Roderick Colenbrander ac3927a73e wined3d: Move over to WGL. 2007-08-08 15:32:01 +02:00
Roderick Colenbrander 58275065a1 wined3d: Prepare pbuffer code for WGL transition. 2007-08-08 15:32:01 +02:00
Stefan Dösinger b8dd5839ef wined3d: Store the position_transformed flag in the vdecl. 2007-08-08 15:32:00 +02:00
Stefan Dösinger 06e51c21e1 wined3d: Determine used streams at vdecl creation. 2007-08-08 15:32:00 +02:00
Roderick Colenbrander f3af04a8be wined3d: Use UINT instead of uint. 2007-08-07 12:36:37 +02:00
H. Verbeet 82245cb5d7 wined3d: Properly load FLOAT16_2 and FLOAT16_4 vertex data. 2007-08-02 12:18:41 +02:00
Stefan Dösinger d2016ff892 wined3d: Store the gl format table in the gl info structure. 2007-07-30 12:49:50 +02:00
Stefan Dösinger a0131a3272 wined3d: Split up the format table. 2007-07-30 12:49:39 +02:00
H. Verbeet d7c7cbf6b6 wined3d: Fix the stretch_rect_fbo() declaration to match the implementation. 2007-07-25 13:02:53 +02:00
H. Verbeet 35aa2ce9f2 wined3d: Correctly handle normalized vertex declaration data types. 2007-07-23 11:59:01 +02:00
H. Verbeet cb4c9b6208 wined3d: Fix STATE_IS_ACTIVELIGHT. 2007-07-16 14:53:42 +02:00
Stefan Dösinger fdadf26c20 wined3d: Add CTXUSAGE_CLEAR context usage. 2007-07-10 13:30:51 +02:00
Stefan Dösinger 26ebe396c3 wined3d: Implement high order patches. 2007-07-06 19:32:47 +02:00
Stefan Dösinger b462ff0876 wined3d: Create multiple contexts for onscreen render targets. 2007-07-03 12:32:33 +02:00
Stefan Dösinger 13f24c3808 wined3d: Select onscreen contexts based on the thread id. 2007-07-03 12:30:33 +02:00
Stefan Dösinger a1f83aae8e wined3d: rsq and rcp use the .w component if no swizzle is given. 2007-07-03 12:29:34 +02:00
H. Verbeet 860aa6993b wined3d: Get rid of the oneToOneTexUnitMap field. 2007-06-29 13:42:26 +02:00
H. Verbeet 1d4042cee1 wined3d: Implement texldl. 2007-06-28 11:01:15 +02:00
H. Verbeet 5b7758f80c wined3d: Increase the sizes of texturing related arrays, in order to support vertex textures. 2007-06-26 11:57:17 +02:00
H. Verbeet b1579b37ea wined3d: Keep track of what fixed function texture stages are in use. 2007-06-25 11:43:05 +02:00
H. Verbeet b928cadde8 wined3d: Keep track of what stage a texturing unit is mapped to. 2007-06-25 11:42:54 +02:00
Stefan Dösinger 2f4b9e42bc wined3d: Move material applying to the state table. 2007-06-25 11:35:59 +02:00
Stefan Dösinger b081cbaf40 wined3d: Emulate tracking of multiple material properties. 2007-06-21 13:09:30 +02:00
Stefan Dösinger 030b92a2f6 wined3d: Remove the FVF codepath from drawprim. 2007-06-21 13:09:08 +02:00
Stefan Dösinger 6e5a5d2736 wined3d: DDraw surfaces are QWORD aligned. 2007-06-14 13:22:52 +02:00
Stefan Dösinger c9b8a79e0b wined3d: Implement vertical refresh sync. 2007-06-14 13:21:54 +02:00
H. Verbeet b9d5c18062 wined3d: Call IWineD3DDeviceImpl_FindTexUnitMap() when activating the context. 2007-06-13 11:23:18 +02:00
Stefan Dösinger efbdd515f8 wined3d: Find possible fbconfis on dll load time, use them in CheckDepthStencilMatch. 2007-06-11 13:53:38 +02:00
Stefan Dösinger 66930554d1 wined3d: Store the adapter driver and description in the adapter. 2007-06-11 13:52:32 +02:00
Stefan Dösinger a460a2df43 wined3d: Store the gl information in a per adapter structure and initialize it only once. 2007-06-11 13:51:06 +02:00
Phil Costin 622f62d352 wined3d: Enable the loading and reloading of gamma corrected textures. 2007-06-07 13:02:04 +02:00
Phil Costin 08ae3d6f67 wined3d: Extend the D3DFMT table to include gamma corrected formats. 2007-06-07 13:01:36 +02:00
Andrew Riedi a9c2e15cf6 wined3d: Add hardware cursor support. 2007-05-16 14:27:39 +02:00
H. Verbeet c3c5724789 wined3d: WINED3DSIO_POW should use the absolute value of the first source register. 2007-05-11 13:24:15 +02:00
H. Verbeet d7596086bc wined3d: Trace the VBO and stream number as well in drawPrimitiveTraceDataLocations. 2007-05-10 12:24:59 +02:00
Stefan Dösinger d08585e6ec wined3d: Manage private data in a wine linked list. 2007-05-10 12:10:20 +02:00
Stefan Dösinger 81504d6a2d wined3d: Support bump environment mapping using GL_NV_texture_shader. 2007-05-10 11:40:27 +02:00
Stefan Dösinger d93e161b1f d3d: Move clippers from DDraw to wined3d. 2007-05-08 18:27:44 +02:00
H. Verbeet 5d00923017 wined3d: Remove some redundant fields from IWineD3DBaseTextureImpl. 2007-05-04 13:41:45 +02:00
H. Verbeet d9b7369255 wined3d: Flip the coordinate system rather than the coordinates itself for onscreen surfaces in stretch_rect_fbo. 2007-05-04 13:40:28 +02:00
Stefan Dösinger adb9b13b81 wined3d: Implement vertex blending using GL_ARB_vertex_blend. 2007-05-03 14:24:46 +02:00
Stefan Dösinger 61d1abb1c1 wined3d: Do not allocate surfaces unless needed. 2007-04-26 14:51:56 +02:00
H. Verbeet b643ab3620 wined3d: Output pretty GL errors in checkGLcall and vcheckGLcall. 2007-04-24 10:19:51 +02:00
Fabian Bieler e28630bc32 wined3d: Remove usesFog flag from IWineD3DVertexShaderImpl. 2007-04-23 13:55:45 +02:00
H. Verbeet 1b9a5ba682 wined3d: Add a function to determine if a surface is the front or the backbuffer for a swapchain, and return the corresponding GLenum. 2007-04-17 11:12:34 +02:00
H. Verbeet c4cc10a595 wined3d: Add a function for dumping FBO status codes. 2007-04-17 11:11:31 +02:00
Stefan Dösinger 725057da47 d3d: Remove dependency on ddraw.h header. 2007-04-16 13:20:15 +02:00
H. Verbeet a79654d339 wined3d: Fix some swizzles on scalars. 2007-04-13 12:56:06 +02:00
H. Verbeet 75e91fa409 wined3d: Use the framebuffer blit extension to implement StretchRect. 2007-04-09 12:40:52 +02:00
H. Verbeet 75108443ff wined3d: Add a function to dump WINED3DTEXTUREFILTERTYPE values. 2007-04-09 12:39:35 +02:00
H. Verbeet c9b178b594 wined3d: Fixup FBO depth attachments when the depth attachment is larger than the render target. 2007-04-09 12:39:23 +02:00
H. Verbeet 3d4e054b55 wined3d: Handle FBO attachments slightly more efficiently. 2007-04-09 12:38:53 +02:00
Stefan Dösinger 290f2eb146 wined3d: Add Filtering to IWineD3DSurface::Blt and handle it.
This is to allow StretchRect to pass the texture filter to WineD3D.
DirectDraw sets the texture filter to WINED3DTEXF_NONE, simmilar to all
other functions which do not need filtering.
2007-04-07 10:58:10 +02:00
Stefan Dösinger 4f5d33311b wined3d: Use GL_APPLE_client_storage if available. 2007-04-02 11:34:12 +02:00
Stefan Dösinger bee084503b wined3d: Implement bem shader instruction. 2007-03-27 12:30:38 +02:00
Stefan Dösinger 90fe64cee0 wined3d: Store an array of contexts in the swapchain.
This is a preparation for using multiple contexts on one drawable to
handle multithreading.
2007-03-19 12:23:16 +01:00
Stefan Dösinger 9789f993ce wined3d: Remove some old stuff. 2007-03-19 12:18:20 +01:00
Andrew Talbot 2f5f3825c6 wined3d: Replace inline static with static inline. 2007-03-17 20:04:46 +01:00
Erich Hoover 9795e6839f wined3d: Allow SetCursorProperties on existing cursor. 2007-03-14 13:14:08 +01:00
H. Verbeet 30ee071eb9 wined3d: Disable vertex shaders when transformed vertices are used. 2007-03-13 11:55:55 +01:00
H. Verbeet ee09e8bfd6 wined3d: Remove FVF related fields from IWineD3DVertexDeclaration. 2007-03-13 11:54:24 +01:00
Stefan Dösinger 603e7933ea wined3d: Blit the offscreen texture into the drawable if needed.
When using pbuffer or back buffer offscreen rendering the content of
the drawable will have been overwritten. Thus the texture has to be
written into the drawable. An exception is the (pretty common) case
that the whole render target is cleared before rendering to it.
2007-03-12 12:02:05 +01:00
Stefan Dösinger c54a0fc2cf wined3d: Rework surface dirtification.
Previously the surfaces stored a flag if the system memory copy was
ahead of the gl copy(SFLAG_DIRTY) or the gl copy is
ahead(SFLAG_GLDIRTY). The pbuffer copy was 'managed' differently using
SFLAG_INPBUFFER and SFLAG_INTEXTURE.

This patch replaces them with 3 flags, INSYSMEM, INPBUFFER and
INTEXTURE which specify which copy contains the most up to date
copy. It is perfectly valid to have more than one of those flags
set. One must be set at least (except at init, when no content is in
the surface yet). When one copy is modified, the flags for the others
are removed.
2007-03-07 12:18:14 +01:00
Stefan Dösinger ebe274feed wined3d: Remove IWineD3DSurface::SetPBufferState.
The method is removed because it does not really help with
anything. It should not be exported from wined3d, there is no need for
the other libs to call it. It does not help abstraction and code
simplification in any way because it is very specific and the code
calling it has to know what is happening in the surface to use this
method.
2007-03-07 12:17:33 +01:00
H. Verbeet 2384bdde9d wined3d: Remove broken software shaders. 2007-03-07 11:52:17 +01:00
Stefan Dösinger 76b60b0516 wined3d: Support event queries using GL_NV_fence. 2007-03-01 11:40:14 +01:00
Stefan Dösinger 409aa73132 wined3d: Move clip planes to the state table. 2007-02-28 21:09:37 +01:00
Stefan Dösinger 8d9a553d89 wined3d: Support for using auxilliary buffers for offscreen rendering.
OpenGL AUX buffers provide a way for offscreen rendering which is very
similar to our back buffer "offscreen" rendering emulation. Not all
card support aux buffers, but if they are available they are a nice
present which is easy to use.
2007-02-28 21:04:47 +01:00
H. Verbeet 19d223cade wined3d: Store multiple constant indices per list entry. 2007-02-28 13:35:34 +01:00
H. Verbeet 2c85e5e8a3 wined3d: Store GLSL programs in a hash table rather than a linked list. 2007-02-28 13:35:23 +01:00
H. Verbeet 2a82ed89b1 wined3d: Add some hash table code. 2007-02-28 13:35:16 +01:00
Francois Gouget 93494f2ac0 Assorted spelling fixes. 2007-02-20 20:30:51 +01:00
Stefan Dösinger 59ae2a56fb wined3d: Use VBOs for index buffers. 2007-02-20 11:50:10 +01:00
Stefan Dösinger ecfd4cb0e4 wined3d: Move the scissor rectangle to the state table. 2007-02-20 11:49:53 +01:00
Stefan Dösinger 7676462a3d wined3d: Fix d3d8/9 style palettes. 2007-02-20 11:46:20 +01:00
H. Verbeet 78e50b78a6 wined3d: Remove the d3d9.h include from wined3d_private.h. 2007-02-16 12:31:28 +01:00
H. Verbeet a4bc52a89c wined3d: Fix WINED3DPRESENT_PARAMETERS and use it instead of D3DPRESENT_PARAMETERS. 2007-02-16 12:31:03 +01:00
Stefan Dösinger 2f96220b3e 6/10: WineD3D: rsq and rcp instructions may need a default swizzle in arb.
ARB shaders need a swizzle for the RSQ and RCP instructions, while d3d
shaders do not. The DirectX sdk says that the x component is used if
no swizzle is given.
2007-02-15 17:21:27 +01:00
Stefan Dösinger 8e84127aed wined3d: Restore the display mode when releasing a swapchain. 2007-02-15 16:56:02 +01:00
H. Verbeet ea683407af wined3d: Add WINED3DTEXOPCAPS flags and use them. 2007-02-15 11:43:22 +01:00
Stefan Dösinger b3f96f4327 wined3d: alphaop fixes for color keying. 2007-02-15 11:40:57 +01:00
Stefan Dösinger 49a49fcfec wined3d: Load one bump mapping environment matrix into pixel shaders if needed. 2007-02-15 11:36:01 +01:00
Stefan Dösinger 0feddccfe3 wined3d: Instancing emulation. 2007-02-14 20:46:25 +01:00
Stefan Dösinger 174b6321eb wined3d: Move lights to the state table. 2007-02-14 20:45:15 +01:00
Stefan Dösinger acadf3f241 wined3d: Replace the light chain with a hashmap. 2007-02-14 20:44:58 +01:00
H. Verbeet 157205c085 d3d8: Don't store the d3d8 declaration in the wined3d object. 2007-02-14 13:56:50 +01:00
H. Verbeet efed9aea1f d3d8: Move loading local d3d8 vertex shader constants from wined3d to d3d8. 2007-02-14 13:54:55 +01:00
H. Verbeet dea795f7ac d3d9: Don't store the d3d9 declaration in the wined3d object. 2007-02-14 13:54:42 +01:00
H. Verbeet 32e5cac2be wined3d: Get rid of the vertexDeclaration field in IWineD3DVertexShaderImpl. 2007-02-14 13:54:29 +01:00
Stefan Dösinger b48dfb3c54 wined3d: Always use np2 repacking if no native np2 support is available. 2007-02-14 12:29:01 +01:00
Stefan Dösinger c3f0eb489b wined3d: Remove pow2Size from the surfaces. 2007-02-14 12:28:19 +01:00
Stefan Dösinger f5f501d573 wined3d: Use the context manager to create onscreen contexts. 2007-02-13 12:08:02 +01:00
Stefan Dösinger 12252d0589 wined3d: Use the context manager to select the primary render target. 2007-02-13 12:05:35 +01:00
Stefan Dösinger 7253fae31f wined3d: Make the context array dynamic. 2007-02-13 12:04:40 +01:00
Stefan Dösinger f22d37e4dd wined3d: Use the context manager to prepare for blitting. 2007-02-13 12:04:08 +01:00
Stefan Dösinger c1623d4e7b wined3d: Use the context manager to prepare for drawing. 2007-02-13 12:03:40 +01:00
Stefan Dösinger 380930dc54 wined3d: Store dirty states per context. 2007-02-13 11:55:07 +01:00
Stefan Dösinger e6c9a073b0 wined3d: Store state optmization members in the context. 2007-02-13 11:50:38 +01:00
Stefan Dösinger c739c387b6 wined3d: Add a per context structure for context management. 2007-02-13 11:50:14 +01:00
Stefan Dösinger fa97fbdcad wined3d: Make shader_cleanup more useful. 2007-02-12 12:37:48 +01:00
Stefan Dösinger 67b1f4a7e9 wined3d: BeginScene and EndScene tests and fixes. 2007-02-12 12:08:34 +01:00
H. Verbeet 7c40799df0 wined3d: Remove the d3d9types.h include from wined3d_private.h. 2007-01-23 11:27:05 +01:00
H. Verbeet 6112522122 wined3d: Move SetupFullscreenWindow() and RestoreWindow() from IDirectDrawImpl to IWineD3DDeviceImpl. 2007-01-19 12:28:58 +01:00
Stefan Dösinger 1d3abdeeaa wined3d: Store the stream number in the strided structure. 2007-01-17 11:23:54 +01:00
H. Verbeet 7252b4d340 wined3d: Give WINED3DSIO_CRS its own function, properly take the write mask into account. 2007-01-16 16:05:49 +01:00
H. Verbeet cb26d59d26 05/49: wined3d: Only add line numbers for new lines in shader_addline(). 2007-01-16 16:02:28 +01:00
Stefan Dösinger e328e24daa wined3d: Better tracking of vertex buffer assignments. 2007-01-15 12:43:40 +01:00
Stefan Dösinger 03389acc30 wined3d: Do not free regularily locked surfaces. 2007-01-15 12:43:29 +01:00
Stefan Dösinger 60c9ea6751 wined3d: Remove dead NV_TEXTURE_SHADER code 2007-01-10 22:03:50 +01:00
Stefan Dösinger d4b63bbd87 wined3d: Store the scissor rect in the stateblock. 2007-01-10 22:01:20 +01:00
Stefan Dösinger 222c531b1a wined3d: Count the framerate per swapchain, not globally. 2007-01-10 22:00:47 +01:00
Stefan Dösinger 577f8db7cf wined3d: Fix np2 textures. 2007-01-08 21:00:23 +01:00
Stefan Dösinger 9f2e0fa2e0 wined3d: Do not try to read the vertex decl when the stateblock isn't finalized. 2007-01-08 21:00:14 +01:00
Stefan Dösinger 2e55c196ee wined3d: Remove some unneeded context cache members from the device. 2007-01-08 21:00:04 +01:00
Stefan Dösinger fdb62cbaeb wined3d: Do not activate vertex shaders needlessly. 2007-01-08 20:58:21 +01:00
Stefan Dösinger 09ab812e79 wined3d: Avoid negative draw start indices. 2007-01-08 20:58:11 +01:00
Stefan Dösinger 8e37fcd266 wined3d: Move applying shader constants to the state table. 2007-01-08 20:57:57 +01:00
Stefan Dösinger d5f18e6a63 wined3d: Move applying the gl stream sources to the state table. 2007-01-08 20:55:51 +01:00
Stefan Dösinger 0d700bef5d wined3d: Break the viewport out of the vertex declaration state. 2007-01-04 10:57:33 +01:00
Stefan Dösinger e26e3ee5f3 wined3d: Remove d3ddevice_set_ortho. 2007-01-03 11:19:55 +01:00
Stefan Dösinger 5fa0f7f775 wined3d: Move the world matrix to the state table. 2007-01-03 11:19:09 +01:00
Stefan Dösinger 20de200fa3 wined3d: Move the functionality of primitiveInitState to the state table. 2007-01-03 11:17:08 +01:00
Stefan Dösinger a48bbc3611 wined3d: Add a viewport state to the state table. 2007-01-03 11:10:13 +01:00
Stefan Dösinger 438c172841 wined3d: Move decoding the vertex declaration to the vertexshader state handler. 2007-01-03 11:10:01 +01:00
Stefan Dösinger 04ce141940 wined3d: Pass the user pointer strided structure via the device implementation. 2007-01-03 11:03:03 +01:00
Stefan Dösinger 71631f7638 wined3d: Use the baseVertexIndex in the stateblock. 2007-01-03 11:02:51 +01:00
Stefan Dösinger ef1ebb6e4d wined3d: Add emtpy vertex declaration and related states to the state table. 2007-01-02 12:29:18 +01:00
Stefan Dösinger 091f9c28e4 wined3d: Put the decoded strided data structure into the device. 2007-01-02 12:29:04 +01:00
Stefan Dösinger b58715e8ab wined3d: Add empty transform states to the state table. 2006-12-29 12:49:41 +01:00
Alexandre Julliard bbfe120036 Revert "wined3d: Where possible, avoid using D3DCOLORTOGLFLOAT4."
This reverts commit 045975b1f4.
2006-12-29 11:35:57 +01:00
H. Verbeet c972351051 wined3d: Move set_glsl_shader_program() to glsl_shader.c. 2006-12-28 12:17:49 +01:00
H. Verbeet 045975b1f4 wined3d: Where possible, avoid using D3DCOLORTOGLFLOAT4. 2006-12-28 12:17:29 +01:00
Chris Robinson e37755b60c wined3d: Clarify OpenGL error codes. 2006-12-24 15:12:42 +01:00
Stefan Dösinger df97fd3e46 wined3d: Reinstall the nvrc texture unit mapping. 2006-12-20 17:09:40 +01:00
Stefan Dösinger 22e2a5aca5 wined3d: Add pixel shaders to the state table. 2006-12-20 17:09:21 +01:00
Stefan Dösinger 666b507766 wined3d: Move samplers to the state table. 2006-12-20 17:07:56 +01:00
Stefan Dösinger 2d1aeb4382 wined3d: Add empty sampler entries to the state table. 2006-12-20 17:07:47 +01:00
Stefan Dösinger 762af471e8 wined3d: Move WINED3DTSS_COLOROP to the state table. 2006-12-20 17:06:00 +01:00
Stefan Dösinger 569a2fa7c0 wined3d: Add empty texture stage states to the state table. 2006-12-20 17:05:40 +01:00
H. Verbeet 299c1e62bf wined3d: Allow the FBO code to handle multiple render targets. 2006-12-20 12:32:13 +01:00
H. Verbeet 8355b1a501 wined3d: Allow the device to store multiple render targets. 2006-12-20 12:31:40 +01:00
Stefan Dösinger 7532c759f1 wined3d: Add the state dirtification infrastructure. 2006-12-19 16:53:00 +01:00
Markus Amsler 9b397ec2d5 wined3d: Remove IWineD3DSurface_GetContainerParent. 2006-12-18 12:02:17 +01:00
Dmitry Timoshkov 47ffd7ae95 wined3d: Make some data const. 2006-12-14 20:11:41 +01:00
Stefan Dösinger 3e05e133f9 wined3d: Remove the unused tween factor stateblock member. 2006-12-11 12:47:04 +01:00
Stefan Dösinger a628b99d63 wined3d: Remove the unused stateblock vertex blend member. 2006-12-11 12:46:55 +01:00
Stefan Dösinger d30f1527cc wined3d: Implement IWineD3DDevice::Reset. 2006-12-11 12:40:13 +01:00
Stefan Dösinger 2a24e84a65 wined3d: Add render states to the state table. 2006-12-07 21:10:26 +01:00
Stefan Dösinger c0268c7840 wined3d: Create the state table. 2006-12-07 21:10:07 +01:00
Markus Amsler 50a0c21265 d3d: Callback infrastructure for implicit volume destruction in IWineD3DVolumeTexture. 2006-12-06 12:39:14 +01:00
Markus Amsler 04ae4596ff d3d: Callback infrastructure for implicit surface destruction in IWineD3DTexture. 2006-12-06 12:38:37 +01:00
H. Verbeet 8a7f427948 wined3d: Select the right shader backend when creating the device. 2006-11-28 12:19:27 +01:00
H. Verbeet df6f482a69 wined3d: Move some code specific to the different shader backends into the respective source files. 2006-11-28 12:19:19 +01:00
Andrew Talbot f3a515ce19 wined3d: Cast-qual warnings fix. 2006-11-27 13:43:05 +01:00
H. Verbeet 8afe27dacd wined3d: Fix GL_ARB_texture_cube_map extension support. 2006-11-20 11:50:14 +01:00
H. Verbeet ef2c062c09 wined3d: Allow the depth buffer to be shared between onscreen and offscreen rendering modes. 2006-11-17 18:14:25 +01:00
H. Verbeet 6d66085150 wined3d: Add FBO support for offscreen rendering. 2006-11-17 18:14:13 +01:00
H. Verbeet ad4c2bdb69 wined3d: Make the offscreen render mode a registry setting. 2006-11-17 18:13:57 +01:00
H. Verbeet 9bf04ecd03 wined3d: Rename renderUpsideDown to render_offscreen. 2006-11-17 15:53:52 +01:00
Ivan Gyurdiev 4c723a7662 wined3d: Add D3DSTREAMSOURCE codes to the WINED3D namespace. 2006-10-31 12:10:31 +01:00
Francois Gouget ef998ea6cb Assorted spelling fixes. 2006-10-16 11:33:38 +02:00
Ivan Gyurdiev 4745e602d2 wined3d: Add D3DCLIPPLANE constants to the WINED3D namespace. 2006-10-13 11:15:18 +02:00
Ivan Gyurdiev 29aa316d67 wined3d: Add D3DSI and other opcode masks to the WINED3D namespace. 2006-10-13 11:14:47 +02:00
Ivan Gyurdiev 6f0bb0f6fc wined3d: Add D3DVERTEXBLENDFLAGS to the WINED3D namespace. 2006-10-13 11:14:33 +02:00
Ivan Gyurdiev c912032aa5 wined3d: Add D3DTEXTUREOP to the WINED3D namespace. 2006-10-13 11:13:02 +02:00
Ivan Gyurdiev 2bac4a02da wined3d: Merge D3DPRIMITIVETYPE types into one type in WINED3D namespace. 2006-10-12 12:37:52 +02:00
Ivan Gyurdiev ac37163124 wined3d: Merge D3DMATRIX types into one type in WINED3D namespace. 2006-10-12 12:35:00 +02:00
Ivan Gyurdiev ec782c2b97 wined3d: D3DTRANSFORMSTATETYPE: Consistently use in the WINED3D namespace. 2006-10-12 12:33:39 +02:00
Ivan Gyurdiev fea4495a61 wined3d: TEXTUREFILTERTYPE: Consistently use in WINED3D namespace. 2006-10-11 12:20:34 +02:00
Ivan Gyurdiev a07a8f793b wined3d: D3DDECLTYPE: Consistently use in WINED3D namespace. 2006-10-11 12:20:21 +02:00
Ivan Gyurdiev f0d5b35c97 wined3d: D3DQUERYTYPE: Consistently use in WINED3D namespace. 2006-10-11 12:19:15 +02:00
Ivan Gyurdiev 19c5534c35 wined3d: D3DDEVTYPE: Consistently use in WINED3D namespace. 2006-10-11 12:17:52 +02:00
Ivan Gyurdiev fb0c932f21 wined3d: D3DFORMAT: Consistently use WINED3D namespace. 2006-10-11 12:17:21 +02:00
Ivan Gyurdiev 17c9d9588a wined3d: Move D3DSP_REG structures into the WINED3D namespace. 2006-10-10 13:37:49 +02:00
Ivan Gyurdiev 062541c026 wined3d: Move D3DSIO structure into WINED3D namespace. 2006-10-10 13:37:03 +02:00
Ivan Gyurdiev e020eceddf wined3d: Make the shader mode selections per device. 2006-10-09 20:27:55 +02:00
Stefan Dösinger d45c16ba98 wined3d: Define the surface alignment in the header. 2006-10-06 12:53:24 +02:00
Stefan Dösinger 2bcacf22d3 wined3d: Add IWineD3DSurface::UpdateOverlay. 2006-10-06 12:53:24 +02:00
Stefan Dösinger 080e4f56cf wined3d: Add UpdatOverlayZOrder. 2006-10-06 12:53:24 +02:00
Stefan Dösinger f6647486cf wined3d: Add IWineD3DSurface::GetOverlayPosition. 2006-10-06 12:53:24 +02:00
Stefan Dösinger 0f3995d21a wined3d: Add IWineD3DSurface::SetOverlayPosition. 2006-10-06 12:53:24 +02:00
Ivan Gyurdiev 3dcd3681f3 wined3d: Win64 printf fixes. 2006-10-02 14:38:04 +02:00
Ivan Gyurdiev 01d9eac0be wined3d: Remove unused field in shader opcode_arg. 2006-10-02 12:32:30 +02:00
Ivan Gyurdiev 42a9262acf wined3d: Read GL info and load constants into the same device. 2006-09-27 19:53:43 +02:00
Ivan Gyurdiev d0032a1a2a wined3d: Move device pointer into the BaseShader class. 2006-09-27 19:44:09 +02:00
H. Verbeet 193f6bbd92 wined3d: Add support for native NPOT textures. 2006-09-27 09:48:11 +02:00
H. Verbeet ba8a6a3c0c wined3d: Fix the default values for wined3d_settings. 2006-09-27 09:46:37 +02:00
Stefan Dösinger 96bce8d6d4 wined3d: Avoid wasting a uniform. 2006-09-25 18:24:19 +02:00
Stefan Dösinger 674af50174 wined3d: Stop fixing up a VBO if the declaration changes too often. 2006-09-25 18:22:36 +02:00
Stefan Dösinger 6286c4e70d ddraw: Pass the fullscreen flag to wined3d. 2006-09-10 10:18:45 +02:00
Ivan Gyurdiev de54843d7b wined3d: Remove unused field: Surface.textureName. 2006-09-07 13:47:25 +02:00
Stefan Dösinger 760456dc7f wined3d: Find the correct sampler type for < 2.0 pshaders. 2006-08-28 11:37:24 +02:00
Jan Zerebecki fd15b8d064 wined3d: Use a common function for all D3DCMPFUNC -> GLenum conversions. 2006-08-25 20:04:56 +02:00
Stefan Dösinger d7f94bf7c9 wined3d: Correctly draw transformed and untransformed vertices in the same scene. 2006-08-22 12:53:53 +02:00
Roderick Colenbrander de97fa7a3b wined3d: Better GPU detection. 2006-08-21 12:21:19 +02:00
H. Verbeet 09eb0c40a6 wined3d: Improve float constant loading a bit.
- Use a list to keep track of what constants are set.
- Move TRACEs and checkGLcall calls out of the main constant loading loop.
2006-08-21 12:17:42 +02:00
H. Verbeet 49f4c68e29 wined3d: Lookup GLSL float uniform locations only once per program. 2006-08-21 12:16:27 +02:00
Jan Zerebecki 4d6cfb6351 wined3d: Registry setting for the amount of simulated texture memory.
Set VideoMemorySize under HKCU\Software\Wine\Direct3D to amount in MB
as string.
2006-08-08 11:20:05 +02:00
H. Verbeet 02a8f74490 wined3d: Add a couple of traces to the vertexdeclaration creation code. 2006-08-07 19:42:31 +02:00
H. Verbeet ef87a40c72 wined3d: Delay vertex shader compilation until the shader is first used. 2006-08-07 13:12:10 +02:00
Jason Green d353ab7879 wined3d: Start checking for D3DUSAGE_QUERY_* items, improve traces. 2006-07-29 11:49:51 +02:00
Jason Green 72bfe131d1 wined3d: More shader fixes / new instructions.
- Replace gl_FragColor with gl_FragData[0] for GLSL pixel shader output.
- Subtract 1 more constant from total GLSL allowed float constants to
  accommodate the PROJECTION matrix row that we reference.
2006-07-28 14:01:16 +02:00
Stefan Dösinger 65e5ed60ae wined3d: Do not use the IWineD3DSurface for the cursor. 2006-07-28 12:31:57 +02:00
Stefan Dösinger 3b10a021db wined3d: More efficient color keying dirtifying.
Instead of blindly dirtifying the surface LoadTexture keeps track of
the color key that was used when creating the opengl texture and
reloads the surface if the color key has changed.
2006-07-26 15:21:00 +02:00
Stefan Dösinger 06106e2810 ddraw: Support using an application-provided surface pointer. 2006-07-26 15:17:59 +02:00
Jason Green 7e90aba97b wined3d: Implement more GLSL instructions.
Implement D3DSIO_TEXREG2AR, TEXREG2GB, TEXREG2RGB, TEXM3X3TEX, TEXM3X3SPEC.
2006-07-25 11:22:55 +02:00
H. Verbeet 536638918d wined3d: Add real occlusion query support. 2006-07-25 11:22:00 +02:00
Jason Green ac8f2c033c wined3d: Improve traces for D3DTRANSFORMSTATETYPE.
Added debug function for WINED3DTRANSFORMSTATETYPE and changed all
references from D3DTS_* to WINED3DTS_*.
2006-07-24 19:55:27 +02:00
Stefan Dösinger a98ccb543d wined3d: Draw the cursor. 2006-07-24 13:27:15 +02:00
Jason Green 75950b5bf8 wined3d: Replace memset/memcpy routines on stateblock (fixes dynamic shader constants regression). 2006-07-24 12:57:34 +02:00
Stefan Dösinger 9423fd2d9f wined3d: Do not try to create a vbo more than once. 2006-07-21 20:21:00 +02:00
H. Verbeet a8f2c1075a wined3d: Compilation fixes. 2006-07-20 12:11:06 +02:00
Jason Green 718716b77a wined3d: Make the number of floating point shader constants dynamic. 2006-07-19 09:54:30 +02:00
Stefan Dösinger 739d565c59 wined3d: Add a setting for the render target locking method. 2006-07-18 11:22:51 +02:00
Jason Green 6a97f2202e wined3d: Fix for vertex shaders. 2006-07-17 15:05:38 +02:00
Ivan Gyurdiev 33293df143 wined3d: More flow control instructions.
- Implement call, callnz, label, and ret
- Implement support for NOT modifier
2006-07-11 17:14:24 +02:00
Ivan Gyurdiev 6ede56495a wined3d: More flow control instructions
- Implement if, else, endif, rep, endrep, break
- Implement ifc, breakc, using undocumented comparison bits in the instruction token
- Fix bug in main loop processing of codes with no dst token
- Fix bug in GLSL output modifier processing of codes with no dst token
- Fix bug in loop implementation (src1 contains the integer data, src0 is aL)
- Add versioning for all the instructions above, and remove
  GLSL_REQUIRED thing, which is useless and should be removed from all
  opcodes in general.
2006-07-11 17:13:05 +02:00
Ivan Gyurdiev e9de563e41 wined3d: Place immediate constants in the same array as global constants.
- move DEF, DEFI, DEFB handling into the register counting pass
- keep track of defined constants as a linked list (because there's a
  few of them)
- apply immediate constants after global constants in the constant
  loading function
- both types of constants now get loaded with array notation in the
  shader (into the same array)
2006-07-11 17:11:30 +02:00
Ivan Gyurdiev 5b3c500efe wined3d: Reverse semantics maps for shaders. 2006-07-07 17:39:26 +02:00
Ivan Gyurdiev c611012df5 wined3d: Make WINED3D_ATR macros more flexible.
Make them operate on a type, as opposed to a semantic name.
2006-07-07 17:37:25 +02:00
Ivan Gyurdiev 85aa8ab855 wined3d: Add position_transformed flag to Strided data format. 2006-07-07 17:35:36 +02:00
Michael Stefaniuc 32b1a24501 janitorial: Move the storage specifier to the beginning of the declaration. 2006-07-07 14:30:35 +02:00
Ivan Gyurdiev 276609e1e5 wined3d: Move register count pass to SetFunction.
Move semantics pointers out of the reg_maps, make them persistent data
in the shader (again, for future software shaders).
2006-07-06 16:07:38 +02:00
Ivan Gyurdiev 771623692e wined3d: Rework shader mode selection.
- currently half the shader selection code (GLSL vs ARB) is in
fillGLcaps. The parts that check for software shaders are in
GetDeviceCaps. That placement, will work, but is definitely not optimal.
FillGLcaps should detect support - it should not make decision as to
what's used, because that's not what the purpose of the function is.
GetDeviceCaps should report support as it has already been selected.
Instead, select shader mode in its own function, called in the
appropriate places.

- unifying pixel and vertex shaders into a single selection is a
mistake. A software vertex shader can be coupled with a hardware arb or
glsl pixel shader, or no shader at all. Split them back into two and add
a SHADER_NONE variant.

- drawprim is doing support checks for ARB_PROGRAM, and making shader
decisions based on that - that's wrong, support has already been
checked, and decided upon, and shaders can be implemented via software,
ARB_PROGRAm or GLSL, so that support check isn't valid.

- Store the shader selected mode into the shader itself. Different types
of shaders can be combined, so this is an improvement. In fact, storing
the mode into the settings globally is a mistake as well - it should be
done per device, since different cards have different capabilities.
2006-07-06 16:07:37 +02:00
Ivan Gyurdiev 7e9fd0b4c1 wined3d: Add a function to print out D3DDECLUSAGE9 values. 2006-07-03 12:04:37 +02:00
Ivan Gyurdiev d06e13db99 wined3d: Move SHADER_ARB code into arb_program_shader.c. 2006-07-03 12:03:31 +02:00
H. Verbeet f3a2a9f30a wined3d: Add code for using register combiners for texture stage operations.
On nVidia cards the value of GL_MAX_TEXTURE_UNITS is generally not
larger than 4. In Direct3D that would correspond to
MaxSimultaneousTextures in the caps, rather than MaxTextureBlendStages
(which can be much larger) to which it currently corresponds in
wined3d. Using register combiners we can get around that limitation
and get up to GL_MAX_GENERAL_COMBINERS_NV (typically 8) texture
stages. This patch adds code for doing the texture operations with
register combiners instead of ARB_texture_env_combine or
NV_texture_env_combine4, but doesn't make use of that code yet. That's
what the next patch will do.
2006-06-28 16:08:36 +02:00
H. Verbeet a54e36adfe wined3d: Texture limits fixes.
GL_LIMITS(textures) is currently used for both the number of texture
stages and the maximum number of simultaneous textures. In the current
code that's the same, but in a later patch that will be separated,
since a texture stage doesn't have to reference an actual
texture. Also, shaders can access a larger number of samplers than the
number of texture units the fixed function pipeline can access.
2006-06-28 16:06:25 +02:00
Stefan Dösinger cea41b0a0f wined3d: Vertex buffer can be locked multiple times. 2006-06-27 21:14:02 +02:00
Jason Green baf38b3007 wined3d: Implement more GLSL instructions and a little cleanup.
- Implement D3DSIO_DP2ADD, D3DSIO_TEXKILL, D3DSIO_TEXM3X3PAD
- Partially implement D3DSIO_TEXBEM, D3DSIO_TEXM3X3VSPEC (as much as
  they are implemented in ARB_fragment_program at least).
- Stop copying the SHADER_PARSE_STATE struct in each ARB shader
  routine - use a pointer instead.
2006-06-27 11:16:10 +02:00
Stefan Dösinger 7d31ab95e4 wined3d: Add support for VBOs to the drawing code. 2006-06-26 13:02:19 +02:00
Stefan Dösinger 3518747165 wined3d: Pixel format cleanup. 2006-06-21 12:15:50 +02:00
Jason Green f444009bfb wined3d: Implement locally defined boolean and integer constants in GLSL. 2006-06-19 10:59:13 +02:00
Jason Green 34d271bab6 wined3d: Add preliminary support for constant boolean and integer registers in GLSL.
- Separate the declaration phase of the shader string generator into
  the arb and glsl specific files.
- Add declarations and recognition for application-sent constant
  integers and booleans (locally defined ones will follow).
- Standardize capitilization of pixel/vertex specific variable names.
2006-06-19 10:50:14 +02:00
Jason Green 2d8e05f8a1 wined3d: Move constant loading into target-specific files.
- Moves GLSL constant loading code into glsl_shader.c and out of the
  over-populated drawprim.c.
- Creates a new file named arb_program_shader.c which will hold code
  specific to ARB_vertex_program & ARB_fragment_program.
- Remove the constant loading calls from drawprim.c
2006-06-19 10:49:52 +02:00
Stefan Dösinger 3862f8e3d7 wined3d: Support more than one back buffer. 2006-06-15 16:51:41 +02:00
Jason Green cc06ed3d53 wined3d: Implement more GLSL instructions.
- Implemented: D3DSIO_SGN, LOOP, ENDLOOP, LOGP, LIT, DST, SINCOS
- Process instruction-based modifiers (function existed, it just
  wasn't being called)
- Add loop checking to register maps.
- Renamed "sng" to "sgn" for D3DSIO_SGN - it's not handled anywhere
  except for GLSL, so won't matter.
2006-06-15 12:20:20 +02:00
Alexandre Julliard 836b5c7e93 wined3d: Use unsigned int instead of size_t to avoid printf format warnings. 2006-06-13 14:14:20 +02:00
Ivan Gyurdiev 8c6ee8df0d wined3d: Mark instructions without a destination token.
There are a total of 17 instructions without a destination token. Of
those 9 have num_params != 0, which means that we will not process any
of them correctly, because we assume the first token (if present) is a
destination token.

Those are basically all the flow control instructions, which we plan to
support very soon. They have source tokens, and no destination. Add a
flag that marks them up to the ins table. Use this flag in the trace
pass, and generation pass.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 0d08316523 wined3d: Improve Sampler support on 2.0 and 3.0 shaders.
- track sampler declarations and store the sampler usage in reg_maps structure
- store a fake sampler usage for 1.X shaders (defined as 2D sampler)
- re-sync glsl TEX implementation with the ARB one (no idea why they diverged..)
- use sampler type in new TEX implementation to support 2D, 3D, and Cube sampling
- change drawprim to bind pixel shader samplers

Additional improvements:
- rename texture limit to texcoord to prevent confusion
- add sampler limit, and use that for samplers - *not* the same as texcoord above
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev a1f4dfe4e3 wined3d: Add support for shader model 3.0 I/O registers.
SM 3.0 can pack multiple "semantics" into 12 generic input/output registers.

To support that, define temporaries called IN and OUT, and use those as
the output registers. At the end of the vshader, unpack the OUT temps
into the proper GL variables. At the beginning of the pshader, pack the
GL variables back into 12 IN registers.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev a42925ee09 wined3d: Register map cleanups.
Various cleanups:
- do not use DWORD as a bitmask, that places artificial limit of 32 on
  registers
- track attributes that are used and declare only those
- move declarations function call in pshader/vshader to allow us to
  insert pixel or vertex specific code between the declarations and
  the rest of the code
- remove redundant 0 intializers
- remove useless continue statement
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 17b0d26c1e wined3d: Share trace pass
Now that the declaration function is out of the way, the tracing pass,
which is very long and 100% the same can be shared between pixel and
vertex shaders.

The new function is called shader_trace_init(), and is responsible for:
- tracing the shader
- initializing the function length
- setting the shader version [needed very early]
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 9bae7755ab wined3d: Rework dcl processing.
The new function is called in pass 2 (getister counting/maps), and
it's now in baseshader. It operates on all INPUT and OUTPUT registers,
which, in addition to the old vertex shader input declarations covers
Shader Model 3.0 vshader output and pshader input declarations. The
result is stored into the reg_map structure.
2006-06-13 11:40:21 +02:00
Ivan Gyurdiev f144d58ac2 wined3d: The namedArrays code path is dead (always FALSE).
Delete the entire namedArrays code path and all its dependencies (one
of which is quite long - storeOrder in drawprim is always FALSE, for
example). Delete declaredArrays, and make its code path the default.
2006-06-13 11:40:21 +02:00
Jan Zerebecki 7528fc0de1 wined3d: Fix stencil related render states. 2006-06-13 10:50:55 +02:00
H. Verbeet 405e11ea62 wined3d: Cleanup GetSrcAndOpFromValue().
- Cleanup GetSrcAndOpFromValue().
- Use naming more consistent with the rest of the file.
2006-06-12 16:07:58 +02:00
Ivan Gyurdiev 621f075fb9 wined3d: Print out sampler state names. 2006-06-10 12:41:54 +02:00
Jason Green d5d4568450 wined3d: Allow drawPrim to create and use the GLSL program. 2006-06-09 15:20:06 +02:00
Jason Green d59714b78c wined3d: Prototype the GLSL functions for use with pixel and vertex shaders. 2006-06-09 15:14:34 +02:00
Jason Green ca70d13af4 wined3d: Unified float constant register mapping between ARB pixel and vertex shaders.
- Got rid of the separate constant maps.
- Side effect of this is that the map is a bit larger for pixel shaders than it needs to be
2006-06-09 14:36:50 +02:00
Jason Green 0c59ca6448 wined3d: Add the bulk of the GLSL string generation functions.
- Add a new file glsl_shader.c which contains almost every GLSL specific function we'll need
- Move print_glsl_info() into glsl_shader.c
- Move the shader_reg_maps struct info into the private header, and make it part of SHADER_OPCODE_ARG.
- Create a new shared ps/vs register map for float constants (future patch will make ARB programs use this, too)
2006-06-09 13:47:55 +02:00
Jason Green 1f1057fc9b wined3d: Move constant loading out of DrawPrimDrawStrided() and enable
loading float constants for GLSL.

- DrawPrim is just too big of a function.  This separates the passing
  of constants to the shader into new functions.
- Fixes an off-by-one error when loading vertex declaration constants
  (should be <, not <=)
- Adds a function for GLSL loading of constants (aka Uniforms)
- Adds a GLSL program variable to the stateblock and sets it to 0 (a
  future patch will actually create this program)
2006-06-09 13:26:51 +02:00
Ivan Gyurdiev 4d66615bbb wined3d: Fix missing light recording.
Write a light with the default parameters in disabled state if
capturing a missing light.
2006-06-07 15:20:00 +02:00
Ivan Gyurdiev 5f5969b3c5 wined3d: Remove constant type field in stateblock.
It is wrong to maintain a mapping from a constant index to a type
field, because different constant types do not share an index -
boolean constant 0 is supposed to co-exist with floating point
constant 0, not replace it. Drawprim and other code using the type
array to decide whether to look up a constant in bools, floats, or
ints is wrong - you can't make that decision based on the index.
2006-06-06 11:58:54 +02:00
Ivan Gyurdiev aec2e3e46d wined3d: Trace improvements. 2006-06-06 11:49:03 +02:00
Jason Green 473ce80fa2 wined3d: Add ability to generate GLSL shader objects for vertex and pixel shaders. 2006-05-27 11:01:05 +02:00
Roderick Colenbrander 54e5f9c465 wined3d: Dynamicly load GL_ARB_multitexture functions. 2006-05-25 20:17:32 +02:00
Stefan Dösinger 5b8b776431 wined3d: Small rhw vertex fix.
Fix the one pixel displacement and move the glOrtho code in a common
function.
2006-05-25 20:09:57 +02:00
Stefan Dösinger e902cd119f wined3d: Swapchain and back buffer corrections + tests. 2006-05-24 13:56:55 +02:00
Jason Green d204540d1f wined3d: Replaced USING_GLSL define with a new wined3d_settings option based on the registry. 2006-05-24 10:40:35 +02:00
Jason Green a67488a26e wined3d: Add function to print the infolog of a GLSL shader on errors.
With assistance from H. Verbeet.
2006-05-24 10:37:33 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Stefan Dösinger 158691ea3b wined3d: OpengGL accelerated blits.
Implement some basic opengl accelerated blts from and to render
targets. It's not perfect yet, but enought to make some D3D apps
happy. For now the only supported operations are:

- Full screen back -> Front buffer: Just call present
- Offscreen surface -> render target
- Render target -> offscreen surface(slow)
- render target colorfill
2006-05-23 12:41:31 +02:00
Ivan Gyurdiev cb973648ab wined3d: Clean up register use maps. 2006-05-22 11:40:38 +02:00
Stefan Dösinger cfcdb6515b wined3d: Sort of oversized surface support. 2006-05-20 14:06:09 +02:00
Stefan Dösinger 566cdcf55c wined3d: Implement IWineD3DDevice::SetDisplayMode. 2006-05-20 14:05:06 +02:00
Phil Costin 1b320431b8 wined3d: Check registry for UseGLSL enabled. 2006-05-18 16:40:32 +02:00
Ivan Gyurdiev 42b89791ff wined3d: Take predication tokens into account.
Each instruction can have a predication token. Account for it in the
trace pass, register count pass, and store it in the SHADER_OPCODE_ARG
structure for generation. MSDN claims the token is at the end of the
instruction, but that's not true - testing a demo, which lets me
manipulate the shader shows the predication token is the first source
token immediately following the destination token.
2006-05-18 10:32:54 +02:00
Ivan Gyurdiev 746d1b1cd3 wined3d: Modify shader_dump_param() to take into account address token.
Currently we hardcode a0.x, which I think is correct for shaders 1.0.
However, for shaders 2.0, we must look into the address token, and
print the register there. Handle both cases to correct the trace.
2006-05-17 10:55:11 +02:00
Ivan Gyurdiev 03b67e3030 wined3d: Use shader_get_param() in trace pass, reg. count pass, generation pass.
Change the trace pass, the register counting pass, and the hw
generator pass to take into account the new get_params() function. For
hw generation, store the address tokens into the SHADER_OPCODE_ARG
structure, so they're available to generator functions.
2006-05-17 10:54:23 +02:00
Ivan Gyurdiev 404eff792f wined3d: Add shader_get_param() fn, which processes address tokens.
Add a new function to process parameters.
On shaders 1.0, processing parameters amounts to *pToken++.
On shaders 2.0+, we have a relative addressing token to account for.
This function should be used, instead of relying on num_params everywhere.
2006-05-17 10:53:18 +02:00
Ivan Gyurdiev 8b7401c39a wined3d: Shaders: share dump_param function, version functions. 2006-05-15 16:07:31 +02:00
Stefan Dösinger 2f724834f8 wined3d: Implement IWineGDISurface. 2006-05-15 14:02:03 +02:00
Stefan Dösinger 9abdac6aaa wined3d: Implement IWineD3DDevice::ProcessVertices. 2006-05-15 13:57:17 +02:00
Ivan Gyurdiev 257692e087 wined3d: Initialize volume format. 2006-05-11 12:11:42 +02:00
Ivan Gyurdiev c61af3af8d wined3d: Share shader_dump_ins_modifiers().
Share shader_dump_ins_modifiers(), and make vertex shaders use it.
The saturate modifer (_sat) is valid on vs_3_0+, and it isn't being
shown in the trace.
2006-05-11 12:10:59 +02:00
Jason Green e9927d6ffd wined3d: Further split GLSL & ARB_v/f_program generation and allow GLSL functions to be called. 2006-05-10 12:20:39 +02:00
Jason Green 246677ae46 wined3d: Modified the opcode tables (and struct) to include a pointer to a GLSL generator function. 2006-05-10 12:20:08 +02:00
Jason Green 36b0b9cc1c wined3d: Added new GenerateShader function for Vertex Shaders & declare generate_base_shader(). 2006-05-10 12:18:08 +02:00
Jason Green cc2ea9e08c wined3d: Place # of textures, addresses, & temps used inside the baseShader struct to prepare for GenerateShader merge. 2006-05-10 12:16:22 +02:00
Jason Green 653e71d774 wined3d: Further split up GenerateProgramArbHW for pixelshaders. 2006-05-10 12:16:02 +02:00
Jason Green 5308e026d1 wined3d: Move program_dump_decl_usage into baseshader. 2006-05-10 12:14:39 +02:00
Ivan Gyurdiev cdfe848b6d wined3d: Break out arithmetic instruction processing. 2006-05-10 11:28:11 +02:00
Ivan Gyurdiev 320e33dcb3 wined3d: Merge register counting pass. 2006-05-10 11:26:01 +02:00
Stefan Dösinger 9b29fb6860 wined3d: Implement IWineD3DSurface::SetColorKey. 2006-05-09 20:46:59 +02:00
Stefan Dösinger 08dc9e003d wined3d: Implement IWineD3DSurface::IsLost and Restore. 2006-05-09 20:45:39 +02:00
Stefan Dösinger 10ff0d8184 wined3d: rhw vertex fixup.
Change the rhw=0 range to ]1e-8,1e-8[ and move the value to a constant
in wined3d_types.h
2006-05-09 20:45:27 +02:00
Ivan Gyurdiev 1d0c672393 wined3d: Share get_opcode. 2006-05-09 20:45:10 +02:00
Ivan Gyurdiev c93239d36d wined3d: Clean up per version shader limits code. 2006-05-09 11:58:14 +02:00
Ivan Gyurdiev 5f10560762 wined3d: Addline cleanup. 2006-05-09 11:55:45 +02:00
Stefan Dösinger af462957c3 wined3d: Implement IWineD3DSurface::GetDC and IWineD3DSurface::ReleaseDC. 2006-05-08 20:58:27 +02:00
Ivan Gyurdiev 4b3079438b wined3d: Share get_register_code(). 2006-05-08 15:15:30 +02:00
Stefan Dösinger a173c8e35a wined3d: Add IWineD3DDevice::DrawPrimitiveStrided. 2006-05-08 14:51:13 +02:00
Stefan Dösinger 1cfbc903d5 wined3d: Add some surface flags. 2006-05-08 14:50:58 +02:00
Stefan Dösinger a6f71af021 wined3d: Implement IWineD3DPalette. 2006-04-21 11:28:11 +02:00
Stefan Dösinger 04da3ce2d1 wined3d: Implement GetHWND and SetHWND. 2006-04-19 12:55:03 +02:00
Stefan Dösinger a6206836e6 wined3d: Implement IWineD3DDevice::EnumDisplayModes. 2006-04-19 12:53:30 +02:00
Stefan Dösinger d04f0507cf wined3d: Implement Init3D and Uninit3D. 2006-04-19 12:43:22 +02:00
Stefan Dösinger cff4e1ea4b wined3d: Add IWineD3DPalette. 2006-04-18 11:11:49 +02:00
Stefan Dösinger ffc8e46e76 wined3d: Add IWineD3DSurface::Blt. 2006-04-17 11:19:30 +02:00
Stefan Dösinger e0c8773199 wined3d: Add a resource dumper. 2006-04-12 12:54:28 +02:00
Ivan Gyurdiev 634698cb19 wined3d: Print all errors in checkGLcall. 2006-04-10 12:24:23 +02:00
Stefan Dösinger cf4b91f074 wined3d: Add WINED3DBOX to wined3d_types.h. 2006-04-07 14:55:50 +02:00
Stefan Dösinger 63fd9a7a98 wined3d: Add WINED3DTEXTUREFILTERTYPE to wined3d_types.h. 2006-04-06 22:22:35 +02:00
Stefan Dösinger f6ed704f96 wined3d: Make use of WINED3DDEVICE_CREATION_PARAMETERS. 2006-04-03 21:35:44 +02:00
H. Verbeet 59af5c4a62 wined3d: Move fields common to vertex shaders and pixel shaders to IWineD3DBaseShader. 2006-03-30 21:55:15 +02:00
H. Verbeet d4132cf7d7 wined3d: Move the vshader_ins and pshader_ins arrays into their respective objects. 2006-03-29 13:40:16 +02:00
H. Verbeet 3ee642bb09 wined3d: Move the SHADER_OPCODE definition to wined3d_private.h. 2006-03-29 13:39:33 +02:00
Stefan Dösinger d75fd75d48 wined3d: Add WINED3DPOOL to wined3d_types.h. 2006-03-28 17:34:42 +02:00
Stefan Dösinger b4b295c2a5 wined3d: Add WINED3DMULTISAMPLE_TYPE to wined3d_types.h. 2006-03-27 11:30:49 +02:00
H. Verbeet 46b13aaa58 wined3d: glTypeLookup cleanup.
Use a struct instead of an UINT array as entries in the glTypeLookup
table.
2006-03-22 21:39:04 +01:00
Stefan Dösinger 913df5b143 wined3d: Consistently use WINED3DRESOURCETYPE. 2006-03-10 21:43:00 +01:00
Stefan Dösinger 46e8d67787 wined3d: Update the glOrtho between 2 rhw draws if the viewport was changed. 2006-02-13 13:25:21 +01:00
H. Verbeet e43cfb1a68 wined3d: Fix SetContainer.
Add/Release references to the container.
Change the type of the container from IUnknown to IWineD3DBase.
2006-02-06 11:30:48 +01:00
Oliver Stieber 7c482cb9a1 wined3d: Vertex shader 8 support.
Start to add support for DirectX 8 vertex shaders, constants and
registers are now correctly assigned and loaded allowing support for
most basic d3d8 shaders.
2005-12-09 11:23:52 +01:00
Oliver Stieber aa9ce3577a Added support for vertex and pixel shader constants that have no type
i.e. they haven't been set yet or are clear.
2005-11-29 17:05:54 +01:00
Francois Gouget 6d442aeb34 Assorted spelling fixes. 2005-11-23 20:14:43 +01:00
Oliver Stieber 932815d6f0 Implement a pixel shader parser and cross compiler. All version of
shaders up to 3 should be parsed correctly, but only shaders 1-1.4
will be cross compiled.
2005-11-21 16:27:55 +00:00
Raphael Junqueira 705aec5a6f - defined D3DCOLOR_B macros to access byte values of D3DCOLOR
- use D3DCOLOR macros instead of using shift + masks
- fix a bug where diffuse.lpData checked instead of specular.lpData
- implement color fixup on ARB VShader compilation code:
 -> on input parameters using swizzle
 -> add is_color parameter on vshader_program_add_param
2005-11-15 12:03:13 +00:00
Oliver Stieber 1f2a9e2c31 Move the softwareVertexProcessing flag from the stateblock to the
device because its state shouldn't be recorded in a stateblock.
2005-10-29 10:30:36 +00:00
Oliver Stieber b3563daca2 Implement state tracking for pixel shader constants. 2005-09-28 10:13:00 +00:00
Francois Gouget a8c7284f92 Assorted spelling fixes. 2005-09-26 10:58:41 +00:00
Oliver Stieber 9e6957bbdc Optionally repack nonpower 2 textures to the expected span length when
a textures is locked. This is necessary for buggy games like Warhammer
40k that don't work with the odd span sizes produce by default
nonpower 2 support.
2005-09-23 11:08:03 +00:00
Oliver Stieber 329d017db3 Start to implement TestCooperativeLevel. 2005-09-21 10:55:03 +00:00
Oliver Stieber 0c2fcf2efe Added support for state management of vertex shader constants via
stateblocks.
2005-09-21 10:19:29 +00:00
Oliver Stieber 5ea96a851f Implemented occlusion queries using either GL_ARB_occlusion_query or
GL_NV_occlusion_query.
2005-09-21 09:43:13 +00:00
Mike McCormack 93ab695a5c Fix gcc 4.0 warnings. 2005-08-26 08:53:31 +00:00
Oliver Stieber 2af36c646e Implemented stubbed out pixel shaders and their states in wined3d. 2005-08-25 19:24:21 +00:00
Oliver Stieber 3f24b9164d Fix quite a few texturing problems and cases where text isn't being
correctly displated.
2005-08-22 10:07:10 +00:00
Oliver Stieber 1be54d8b79 Integrate hardware vertex shaders into the drawing pipeline. 2005-08-19 10:05:00 +00:00
Oliver Stieber 2c0e97e641 Copy the parser and cross compiler from d3d8 and update everything to
vertex shaders 3.0.
The Parser will now display the input shader in DirectX style, and the
cross compiler now generates valid ARB_VERTEX_PROGRAM programs and
outputs the result in ARB_VERTEX_PROGRAM style.
Support for a number of extended attributes has been added, but this
may not be complete, and dereferencing from loop counters isn't
properly parsed yet.
2005-08-17 11:34:03 +00:00
Oliver Stieber 9b0b803b47 Add support for vertex shader constants to the stateblock. 2005-08-17 10:27:01 +00:00
Oliver Stieber 80cbb93163 Tidy up vertex shaders and bring the current code inline with the rest
of wined3d.
2005-08-17 09:54:54 +00:00
Oliver Stieber 313b01073c Track the state of softwareVertexProcessing. 2005-08-11 10:31:40 +00:00
Oliver Stieber e31bc6cea4 Moved support for non power 2 texture to hardware.
Fix for the texture state separation patches, ApplyTextureStates is
now called instead of being commented out.
2005-08-03 19:49:05 +00:00
Oliver Stieber bb6f9b022b Move the setting of states from device to basetexture, states that
relate to the opengl texture object will only be updated when they are
out of sync, this reduces the number of texture object state changes
during game play in Axis and allies from several hundreds to 0 or 1.
2005-08-03 11:00:28 +00:00
Oliver Stieber d344162f41 Separate the setting of the DirectX texture and sampler states from
the setting of OpenGL states (now in applyTextureStateState and
applySamplerState).
2005-08-01 10:58:31 +00:00
Oliver Stieber 386470bedc Tidy up some of the formatting in drawprim and add missing strided
data.
2005-07-30 19:06:14 +00:00
Mike McCormack 8955ac43a3 gcc 4.0 -Wpointer-sign fixes. 2005-07-28 10:16:21 +00:00
Oliver Stieber c93da09265 Changed swapchains held by the device from an array to a linked
list. Also provide a notification function that that the swapchain can
be removed when it is released.
2005-07-27 15:33:17 +00:00
Oliver Stieber 052d108bf5 DirectX uses a R/Z transform to translate a texture but under OpenGL a
Q transform must be used instead.
2005-07-26 20:01:29 +00:00
Oliver Stieber 7cb748fed2 Makes sure any internal reference counting is passed onto the parent,
any objects referenced by the internal stateblock are released when
the stateblock is released (we don't reference count while a
stateblock is recording, so recorded stateblocks have no references to
clean up).
2005-07-26 18:49:30 +00:00
Oliver Stieber ea6189e04b Implement resource tracking, require for reset and evict managed
resources and provides extra sanity checks.
2005-07-26 10:34:15 +00:00
Raphael Junqueira cc8762a91e - add a new settings for vbo support
- use a struct to handle wined3d settings
- prepare VBO using some abstraction APIs
2005-07-24 17:11:33 +00:00
Francois Gouget bd19d67ad1 Assorted spelling fixes. 2005-07-22 09:06:03 +00:00
Oliver Stieber 948563267e Implement the use of PBuffers for offscreen textures. 2005-07-19 11:39:24 +00:00
Oliver Stieber fe80b4ea48 Implemented Get/Set/Free private data in resource. 2005-07-15 09:54:57 +00:00
Oliver Stieber b220ce1343 Correct a few formats that were incorrect. 2005-07-13 19:38:39 +00:00
Oliver Stieber 6a032491d3 Added basic memory management and tracking to wined3d. 2005-07-13 11:34:55 +00:00
Oliver Stieber 13621056db Move parameters relating to opengl on the surface structure on to a
glDesciption member.
Removed Level and Target from LoadTexture, and reduced the dependency
on surface->device.
Fixed a couple of compiler warnings in d3d9.
2005-07-11 20:38:27 +00:00
Oliver Stieber 520c2f0870 Implemented basic non-power 2 texture in wined3d.
Also fixed a typo in drawprim that was causing vertex declarations to
crash.
2005-07-11 14:25:54 +00:00
Oliver Stieber 8a6799d47d Implement render targets using either textures, swapchains or
standalone surfaces.
2005-07-07 20:35:05 +00:00
Oliver Stieber abb11f30cd Implemented stateblocks in wined3d. 2005-07-05 14:05:18 +00:00
Francois Gouget 02c25a8981 Assorted spelling fixes. 2005-06-30 18:19:33 +00:00
Oliver Stieber 18857f1170 Add support for samplers.
Switch from using d3d9 constants to wined3d constants so that there's
no recursive dependencies.
2005-06-24 11:53:07 +00:00
Oliver Stieber 46e7c30a71 Implement swapchains. 2005-06-23 11:05:24 +00:00
Marcus Meissner 9c01e4274f Fixed definition/declaration mismatches of newly static vtables. 2005-06-09 09:47:10 +00:00
Dmitry Timoshkov eba47f1dfe Make remaining OLE interface vtables const. 2005-06-06 19:50:35 +00:00
Oliver Stieber 67f2ad4563 - Volume now inherits Resource. This isn't the way Microsoft implements
the interface but it is more correct way (Microsoft even have a
  resource type of volume).
- Moved usage, format, allocatedMemory and size onto the resource
  class structure.
- Refactored Preload for classes that inherit BaseTexture, preload now
  binds the texture instead of bind texture calling preload, bindTexture
  allocated a glTexture if there isn't one.
- Added two new class static members BaseTexture_CleanUp and
  Resource_CleanUp that should be called by classes that implement
  BaseTexture or Resource.
2005-03-29 19:01:00 +00:00
Oliver Stieber ba5eb14768 Encapsulate texture, surface encapsulated.
Added BindTexture, GetTextureDimensions, UnBindTexture.
Proper GetContainer support for surface.
SetContainer added to surface and volume.
SetInPbufferState added to surface (until gl context management is
implemented).
Minor changes:
- BaseTexture no longer 'holds' a reference to IWineD3DDevice to
  prevent circular referencing.
- Better managment of referinging for texture.
- Some TODO's for implementing a context manager.
- Better preload implementation.
- Fix compile warning in device.c Set/GetSamplerState.
- Add QueryInterface support for surface.
- Format X8R8G8B8 added to locking.
2005-03-14 10:12:52 +00:00
Oliver Stieber 7b261656fd Added a stubbed out version of query to d3d9 and wined3d.
Update the d3d9 headers and creates wined3d types where d3d9 and d3d8
are incompatible.
2005-03-03 13:57:15 +00:00
Oliver Stieber 2121f7831e Put all the stubs in wined3d in place, with some functionality copied
across from d3d9.
Make sure all d3d9 device function call their wined3d counterpart (or
perform a function).
2005-03-02 12:16:10 +00:00
Raphael Junqueira 4c385f981d - VertexDeclaration device APIs
- D3D9 declarations parsing
- a little better APIs (trying to avoid compile problems)
2005-01-26 20:54:00 +00:00
Raphael Junqueira 4f02b52c6b Begin support of VertexDeclaration on wined3d using d3d8 code base
(handling d3d8 and d3d9 specs).
2005-01-19 19:34:49 +00:00
Jason Edmeades 33025b203c - Handle failures to allocate storage more gracefully.
- Only prototype the interfaces which are subclassed (I overdid it
  last time!).
- Implement Get/Set Texture and GetBackBuffer, plus device's
  GetDisplayMode / GetDeviceCaps.
- Make some of the d3d9 skeleton code issue fixme's to highlight code
  which hasn't been migrated yet.
- Correct the d3d9 headers for D3DSURFACE_DESC which caused stack
  corruption in demos.
2005-01-18 11:42:29 +00:00
Jason Edmeades bcecddc084 - Add texture support for all the texture types for d3d9->wined3d.
- Add prototypes for the COM interfaces.
- Fix some incorrect types from the last patch.
2005-01-17 13:44:57 +00:00
Jason Edmeades 41427857b1 Add render target support, and ensure there is a front and back buffer
created during device creation.
2005-01-09 17:37:02 +00:00
Raphael Junqueira 66cae0d2a8 Fixed build problem with GL_VERSION_1_2. 2004-12-17 19:07:44 +00:00
Jason Edmeades c4de952eb5 Add Clear, Present and EndScene support and fix a bug in the drawing
code.
2004-12-14 11:54:27 +00:00
Jason Edmeades 2003c7ab11 Add {G,S}etRenderState and {G,S}etTextureStageState support, and
ensure the stateblock is fully populated at device startup.
2004-12-13 13:35:38 +00:00