This is a long-needed cleanup aimed at removing the ddraw_primary,
ddraw_window, ddraw_width and ddraw_height members from
IWineD3DDeviceImpl, which just do not belong there. Destination
window and screen handling is supposed to be done by swapchains.
QueryInterface should return S_OK on success and set the object
pointer to NULL on failure. This is similar to the patch Ivan
submitted a while ago for wined3d.
Right now the ActiveRender code in D3D8 requests a GLX_DEPTH_SIZE of
32 in case the direct3d color format also has a depth of 32. As
verified on various linux drivers (Ati fglrx, Ati (dri) and Nvidia)
the color depth needs to be 24. This patch sets the depth to 24 and it
fixes bugs in 3dmark2001 and other programs.
- 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
- some fixes to ATI specific paths of set_tex_op (Christian needs to
complete it)
- fix use of GL_SUPPORT(NV_TEXGEN_REFLECTION). I have used the wrong
define, I'll get a brown paper bag :(
- add a new DEBUG_SINGLE_MODE #define (for debug caps needs)
- better traces for surface dumping
- much better Texture support on Utilities functions and on
CheckDeviceType
- D3DRS_ZVISIBLE as unsupported (as seen in msdn)
(glCompressedTexImage2DARB problem).
- Fix typo on constant.
- Detection of NVidia texture_shader and register_combiners
extensions.
- Begin to implement BUMPMAPPING using NVidia Texture shader extension
(not really working for now).
- implement SetRenderState D3DRS_RANGEFOGENABLE
- fix SetRenderState D3DRS_FOGVERTEXMODE Caps/Detection traces
- fix IDirect3D8::GetAdapterIdentifier to use FillGLCaps and provide
more exact infos (driver versions, vendor, ...)
- split Fake GL Context creation from GetDeviceCaps for external use
- add a new channel (d3d_caps) for all IDirect3D8 Caps/detection traces
- rename fps channel to d3d_fps
- high use of runtime detected OpenGL Caps instead of defines
- update supported Caps using runtime detection
detection (and not build time GL headers)
- add a new debug channel for hardware vertex shaders
- hardware VS "compiler" fixes:
-> special case for address registers (MOV must be replaced by ARL)
-> add line numbers to trace (better to find why NVidia drivers complains)
-> one parse to determine temporary and address registers needs
(@todo: check GL limits)
-> remove duplicate traces from Generic ParseProgram
- try to fix D3DTADDRESS_BORDER, D3DTADDRESS_MIRROR,
D3DTADDRESS_MIRRORONCE using OpenGL extensions
- better set_tex_op: now use Runtime Extension support (and not
compile support)
- support of D3DTSS_MIPMAPLODBIAS (using EXT_TEXTURE_LOD_BIAS extension)
- correct support of D3DTSS_MAXANISOTROPY for D3DTSS_MAGFILTER and
D3DTSS_MINFILTER
- fixes for D3DTSS_MAGFILTER and D3DTSS_MAGFILTER
If glColorMaterial is set to track current color and none is supplied,
it gets disabled.
glMaterial is reset when I think it is necessary.
Slow mode now has defaults for when fvf parms are not supplied (as per
fast mode).
Slow mode now sets up the specular color (forgot that bit previously,
I think!).
Trace now lists the front, back and stencil buffers for ease of
debugging.
their impact of performance changes.
SetTransform almost rewritten in a much neater way, and in
coordination with drawprim it significantly reduces the number of
times that we reload the matrixes.
Handle alphaop disabled but color op not-disable in a more appropriate
way (Docs say this is an illegal state and then proceed to use it).
Trace out textures as they are created.
Update the comments around the debug code and complete the debugging
set so textures which are used in the game can also be viewed.
get quad damage.
checkGLcall must not supply a \n as that is supplied by its
expansion.
Performance fixes to save applying the same states 6 times and to
reduce function calls when accessing front/back buffers.
Make traces more readable by more constants -> english descriptions.
surface.c/*texture.c (with add of lockable, locked and Dirty flags)
- add of dirtyRect/dirtyBox for better dirtification management (not
used yet, but huge optimisation can be possible now)
- fix some debug traces (well it's better to use debug_d3dpool)
- fix some stupid regression on point parameters (forgot to check
extension on fillcaps)
- split of CreateDevice gl/gxl detection code into FillGLCaps
- implementation of resolution change (using ChangeDisplaySettings)
but desactived as ChangeDisplaySettings don't seem to work well
- begin of swap chain support (now need to split/clean
gxlpbuffer/glxpixmap code for swap chain use)
- pixel shader code split into a new "COM object" (as done before for
vertex shader)
- some fixes on Validate* functions call types
- add pixel shader (ie fragment_program) detection on caps code
- more cubetextures fixes (now d3d8 sdk cubemap sample work almost
perfectly)
- add a new debug function "debug_d3dpool" and use it
- add a new param (the device) for the conversions functions (because
we need to check caps to see how to convert)
- some crashes fixed in render to surface code with no stencil-depth
surface
- a very simple cliplane fix
- a stupid palettes fix (stupid language)
- begin of anisotropic filter support
- begin of compressed textures support
- a very useful debug functions: IDirect3DSurface8Impl_SaveSnapshot to
dump surfaces as png ;)
- many useful surfaces debug code (using SaveSnapshot)
using glx pbuffers (with a useful debug code to display rendered
surface into window drawable)
- better cubetextures
- split utilities functions into utils.c and added more
- more readable debug again
- a better caps code (not perfect but i'll use glx code later)
- use of the new caps code
- begin of UpdateTexture
- begin of Cursor support
- cleaning most of deprecated #if 0/#endif
- correct some lockable/unlockable behavior
- correct some returns code
- fix a crash in pixel shader parser (happened with unreal2)
- currently desactive pixel shaders caps (with #define) while hw
shaders code isn't merged
- when we have a special debug channel for shader, use it ;)
- fix again some stubs return value
- more more readable traces now (principaly IDirect3D8 capacities
check and surface locking code) using new debug functions
- fix/cleaning the surface locking code
- now we support D3DTOP_SUBSTRACT so declare it in caps
- now support true 32bit (well X 24 bit can be used as 32 bit in caps
code)
- first try to get D3DTSS_TCI_CAMERASPACENORMAL and
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR look good
- native support 32 bit support (now application can choose 16 or 32
bit support) if current resolution is 24 bit (as we can only launch
games in windowed mode)
- textures palettes support
- fix reflexion placement code (the sdk sample begin to work)
- fix a stupid crash when using traces in vshaderdeclaration
- more more readable traces (init/caps)
- more cubetextures fixes
- some useful debug functions for textures format
- correct DrawPrimitive (RHW correctness and vshader RHW)
- more copyrects fixes (only two unimplemented behavior remain)
- fix GetFrontBuffer to get screenshots samples working
- add D3DCOLORTOGLFLOAT4 and use it
- first try of D3DRS_FOGTABLEMODE support
- minor indentation and traces fixes
- fix locking/unlocking/dirty behavior (dirtify on lock) +
optimisations (only copy when dirty)
- fix IDirect3DDevice8::Clear behavior (problem seen after a
locking/unlocking code error)
- begin to fix volume and cube textures management
- minor indentation changes
- fix SELECTARG2 behavior (with help from Lionel Ulmer)
- surface locking/unlocking (only rendering and textures surfaces
supported now)
- beginning of Target/Front surface support
- try to get D3DTOP_SELECTARG_* working
- implemented D3DTOP_SUBTRACT: currently only if OpenGL1.3 is used, we
have to use GL_SUBTRACT_ARB for other versions
the others as well), and call when needed as well.
- Change D3DFMT_R5G6B5 handling to make backdrop of Max Payne appear.
- Add code to reject attempts to use invalid texture units (Max Payne
did this a lot).
- ValidateDevice fixme silenced as harmless but occurs frequently.
- Add trace which can be compiled in to debug vertex shaders, and
correct fixmes and dprintf's into appropriate trace statements.
- Ensure we trace what we return when querying the device caps.
- Correct bug with negative numbers in vertex shader code.
DrawPrimitive call.
- Beginning of VertexShader constants support into stateblock (only
stored, not captured yet).
- Fix compiation with nivdia GL/gl.h and mesa Gl/glext headers as
reported by Andrew John Hughes.
- One glActiveTexture/glActiveTextureARB missing.
- stateblocks to IDirect3DStateBlockImpl interface and moving into
a new file (stateblock.c)
- shaders to IDirect3D*ShaderImpl interfaces
- splitting vshader and vshader declaration as in dx9 into 2
interfaces (for future common layer use)
- vshader declaration code to a new file (vsaderdeclaration.c)
- device calls to new interfaces (redirect stubs)
Simple texture fix for a little regression after last Jason's patches.
Some caps code using the GL/glext.h defines (GL_VERSION_*).
alpha alpha stage as i haven't understand needed extension behavior)
- modify SetRenderState for matrix blending specific params
- by default diffuse color is white ;)
- comments most of the traces (else flood ...)
- add more urls in comments
- indent, cleanups
- AddRef/Release where needed
- use IUnknown* instead void*
- fix many GetDevice using AddRef
- fix IDirect3DSurface8Impl_GetContainer using QueryInterface
- better traces
- specific input data filling function for vertex shaders using vertex
shader declaration (and not FVF ... maybe FVF will return for fast
path with simples vertex shader declarations)
- huge vertex shader fixes:
- add and fix many vs (1.0->2.0) used opcodes in complex shaders
- improvements to programs parser: parse comments, version, ..
- add a vertex shader input filler function (parsing vertex shader
declaration): almost complete
- comments most of the traces (else flood ...)
- add more urls in comments
- indent, cleanups
- remove non-esthetic c++ comments into c comments block ;)
- more more debug
- indent, cleanups
- trying to use DIFFUSE and SPECULAR for vertex shader
- many fixes
- integration with Jason's texture patch
- beginning of shaders support (Vertex and Pixel Shaders 1.1 on
DirectX8)
- beginning of D3DX8 support the D3D8 utility API (very basic, only
the core header)
buffer).
- Texture mapping corrected if no real texture bound.
- Code now detects which opengl extensions are present - to be
extended later.
- More debug tracepoints.
- Add dummy textures so texture operations which dont reference the
texture can work.
- Support 2d and 3d textures properly.
- Reapply the texture state information as textures get set, as opengl
stores the state along with the bound texture whereas directx uses the
current state information during the draw stage.
- 3rd attempt to sort out lighting, for programs which dont set normals.
- Temporarily silence some unnecessary fixmes.
- Small fix for alpha testing.
- Add support to enable/disable clipping as a whole.
- Allow D3DRS_TEXTUREFACTOR to be changed once texture stage arg set
up.
- D3DTOP_DISABLE initial implementation.