| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
The CSO cache unbinds views that are not needed anymore,
which we don't do.
It checks for change before committing the views.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
| |
It wasn't giving the expected result.
This fixes some object being transparents
in games like FEAR.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
Taken from wine tests
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
Fixes Wine tests
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
| |
nine_update_state called every draw call.
This patch attemps to change the order
of the checks to have better control flow
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
The implementation used Wine tests for conformance
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
Wine tests were used to get it right.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
| |
There were flags all sm3 cards do advertise,
and we weren't.
Some games can trigger buggy rendering path
if the caps are not what they expect.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
| |
Automatically switch to userbuf path when
we would need to upload fog or bumpmat
constants
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
| |
Separate state setting and commit
Changes how the shader key is computed
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: David Heidelberg <david@ixit.cz>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
Previous code had only a subcase of fog working right.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
| |
Always use a user constant buffer for ff.
It means we have to:
. commit the user constant buffer for ff when we use it
. commit back the non-ff constant buffer when we stop using it
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have two paths:
. One that uses a fixed constant buffer, and updates it when needed
. One that uses a user constant buffer, and uploads it when needed.
This patch separates the preparation of the constant buffer
and the commit.
It also removes NineDevice9_RestoreNonCSOState, which was
used to restore all states. Instead the commit of the constant
buffer is moved to nine_state, and the other field settings
moved to other functions where more appropriate.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
Separate state preparation and state commit
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
|
|
| |
For now the path updated is only used by Amd drivers, but a later
patch will make it used by all drivers. Some drivers like llvmpipe
doesn't support the uploading of constants from user buffers, so improve
the path to work for all drivers
Inspired from the gl state tracker.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
| |
Check for redundant settings
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: David Heidelberg <david@ixit.cz>
|
|
|
|
|
|
| |
Separate state preparation and state commit
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
Separate state preparation and state commit
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of mixing state preparation (filling pipe_****)
and state commit (pipe->set_*****),
begin doing so in two separate functions.
This will allow to implement efficient Stateblocks,
and eventually lead to optimisation where the complete
pipe_*** structure is only partially updated.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
| |
It was only used to discriminate update framebuffer vs update
everything. Instead use two functions.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
| |
Signed-off-by: Tiziano Bacocco <tizbac2@gmail.com>
|
|
|
|
|
|
|
| |
Set all values to 0 after allocation. Found using valgrind.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
|
| |
In case NineBaseTexture9_ctor returns an error
This->surfaces[l] might be NULL.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
|
| |
Allow more than two errors, and return D3DERR_INVALIDCALL
for failed display resolution changes.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
| |
Texture with pool D3DPOOL_SCRATCH and D3DPOOL_MANAGED
cannot be used with flag D3DUSAGE_DYNAMIC.
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
| |
This is the expected behaviour.
Fixes wine tests.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: David Heidelberg <david@ixit.cz>
|
|
|
|
|
|
|
|
| |
Tests showed, that in case of errors, the pBits pointer is set to NULL.
The pBits field isn't set to NULL in case of an already locked object.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
|
| |
Return 0 for non MANAGED textures and surfaces.
Fixes failing wine d3d9 tests device.c test_resource_priority.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
|
|
| |
Move the assert to return error codes in the correct order.
Always set the pSizeOfData to the required buffer size.
Fixes failing wine test device.c test_private_data()
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
|
|
|
| |
This fixes wine test device.c test_lockrect_invalid()
Mimic WindowsXp behaviour and allow negative values in the rectangle passed.
Add comment to point out behaviour used.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
|
|
|
| |
For the case of D3DPOOL_MANAGED textures, This->base.resource can be NULL
at the start of the function. In This case, UploadSelf will take care
of the defining. Assign resource after the UploadSelf call
to prevent NULL pointer exception.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
|
|
|
|
|
|
|
| |
IT is better check if the surface was created with RT flag,
instead of checking capability (llvmpipe was complaining)
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
Fixes Wine tests
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
| |
EvictManagedResources is used by apps to free
the gpu memory of MANAGED textures (which have
a cpu memory backing)
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
| |
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
| |
UpdateTexture is supposed to optimise by uploading only for the
dirty region of the source (d3d9 doc, wine tests).
This patch adds the behaviour for surfaces, but not entirely for
volumes.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
| |
According to the spec all textures start
dirty.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
|
| |
Dirty regions should be tracked for both MANAGED
and SYSTEMMEM.
Until now we didn't bother to track for SYSTEMMEM,
because we hadn't implemented using the dirty region
to avoid some copies
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
|
| |
If the texture is bound and dirty_mip is true,
BASETEX_REGISTER_UPDATE adds the texture to the list
of things to update before the next draw call.
Some calls to it were missing.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
It should regenerate the sublevels according to the spec
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
| |
We had only one usage for this function.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NineSurface9_CopySurface was supporting more cases than what
we needed, and doing checks that were innapropriate for
some NineSurface9_CopySurface use cases.
This patch splits it into two for the two use cases, and moves
the checks to the caller.
This patch also adds a few checks to NineDevice9_UpdateSurface
Signed-off-by: Axel Davy <axel.davy@ens.fr>
|