Other than being a bit nicer than passing function pointers all over the
place, this helps dxgi/d3d10. While the swapchain itself is created in dxgi,
its surfaces are constructed in d3d10core, which makes it impractical for dxgi
to pass the appropriate function pointers.
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.
Let the few existing parts which need the capabiliteis use the WineD3D
capability structure (gl_info). This info structure contains next to
'flags' inidicating certain features also all GL/GLX functions
pointers. Because D3D8 moves over to the wined3d gl_info structure all
the gl prototypes in d3dcore_gl.h were unneeded and removed.
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.
- Move some of the screen mode related functions into wined3d and add
untested support for the new d3d9 options of providing the format to
some of the calls.
- Move other functions from the directx interface into the common
library and implement the calls from d3d9 as well.
- Copy across the first of the functions used to make traces more readable,
creating utils.c to store them in. Eventually the ones in d3d8 will be
removed but for now just duplicate the code.
constants (the Mesa bug) and VRally use the 0..95 indexes so fix it
- fix normalize for some HW VertexShader inputs
- trying to fix the combination of NV_texture_combine_4 with
texture_combine_EXT (impl of D3DTOP_DISABLE, D3DTOP_MODULATE for
NV_texture_combine_4)
- if shaders disabled declare to support 0 for MaxVertexShaderConst.
- 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)
Fixed handling of macros at the end of vertex shaders.
Handled NOP and PHASE instructions.
Fixed versions of several instructions.
Improved pixel shader dump traces.
Fixed write mask.
Fixed X2 and -X2 source modifiers and implements DZ and DW ones.
Implemented texcrd, texld, texm3x3pad, texm3x3tex, texm3x3spec and
texm3x3vspec instructions (and partially texbem).
Added cnd, cmp and lrp instructions.
Rewrite of the "autoparam" code so we can add more complicated
instructions (only cnd and cmp as well as simple instructions use that
code at the moment).
(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)
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.
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
didn't change the back buffer size information until after copying the
presentation parameters, so when setting up the viewport the
backbufferwidth/height was 0. Moved the copy until after it has been
corrected.