Commit graph

85519 commits

Author SHA1 Message Date
Vinson Lee
c10dcb2ce8 Revert "mesa_glinterop: remove inclusion of GLX header"
This reverts commit 8472045b16.

Conflicts:

	include/GL/mesa_glinterop.h

This patch fixes this build error with GCC 4.4.

  Compiling src/glx/dri_common_interop.c ...
In file included from src/glx/dri_common_interop.c:33:
include/GL/mesa_glinterop.h:62: error: redefinition of typedef ‘GLXContext’
include/GL/glx.h:165: note: previous declaration of ‘GLXContext’ was here

Fixes: 8472045b16 ("mesa_glinterop: remove inclusion of GLX header")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96770
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
2016-10-10 15:09:44 -07:00
Axel Davy
eef0744d43 st/nine: More checks for GetRenderTargetData
Fixes a wine test crash

Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
a52e700169 st/nine: Add debug output for lost devices
Add debug output to ease debugging.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
5d85253dc3 st/nine: Prevent crash in GetRenderTargetData
Return error instead of crashing on source surfaces
with format D3DFMT_NULL.

Fix for issue #236.

Tested on Windows 7.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
09edc0555f st/nine: Set CLAMP_TO_EDGE on cubetextures
Wine tests show that cubetextures always use
PIPE_TEX_WRAP_CLAMP_TO_EDGE regardless of set
sampler states.

Fixes failing d3d9 wine test test_cube_wrap.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
fa2574497b st/nine: handle possible failure of D3DWindowBuffer_create
Check for errors and pass them to the callers.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
f04fa0a62c st/nine: Assert on buffer creation failure
Add an assert to make sure buffer creation doesn't fail.
Add error handling in calling functions.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
f8c01e7a96 st/nine: Use NineDevice9_CreateDepthStencilSurface in swapchain9
Replace custom code with NineDevice9_CreateDepthStencilSurface.
All functionality is given now.
2016-10-10 23:43:51 +02:00
Axel Davy
63367e6c95 st/nine: Fix check and remove useless code in swapchain9
The removed code was there for two reasons:
1) Allow DF16, DF24, INTZ to be used as depth buffer
for swapchain, if the driver doesn't support
PIPE_BIND_SAMPLER_VIEW for the underlying format
2) Set PIPE_BIND_SAMPLER_VIEW if possible, such that
if StretchRect is called on the depth texture, it is happy.

1) The reason these formats needed a workaround is because
the check flags for them in CheckDeviceFormat were incorrect,
which led applications to think the formats were valid for
swapchains, even if they weren't supported.
2) StretchRect limitations for depth buffers force
the resource_copy_region path, which should be fine without
PIPE_BIND_SAMPLER_VIEW.

Thus fix the check for 1), and remove the code.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
60624be203 st/nine: Implement MSAA quality levels
Advertise quality levels:
Each supported multisample count matches to one quality level.
The application doesn't know how much samples each quality level has.
For that reason it's not possible to set the multisample mask.

Return errors on quality level missmatch.

Fixes several old games not having multisample support until now.

Fix for issue #73.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
8a50b1244f st/nine: Prepare update_framebuffer for MS quality levels
Compare resource's nr_samples instead of D3D multisample level.
Required for multisample quality levels to work correct.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
b560305687 st/nine: Add additional error handling in CheckDeviceMultiSampleType
Return one supported quality level in error cases.
Return error on invalid multisample count.

Fixes failing wine tests.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
7afab4ad39 st/nine: Fix compiler warning
Use strict aliasing in SetPrivateData and struct pheader.
Casting char[1] to IUnknown** isn't allowed in strict aliasing.
Compute pointer to body by adding size of header to header pointer.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
b9f31111ac st/nine: Remove resource9 {Set/Get/Free}PrivateData functions
Remove {Set/Get/Free}PrivateData in resource9.
Functionality has been implement in IUnknown interface.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
03888e8a46 st/nine: Remove volume9 {Set/Get/Free}PrivateData functions
Remove {Set/Get/Free}PrivateData in volume9.
Functionality has been implement in IUnknown interface.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
485cba7eb4 st/nine: Switch {Set/Get/Free}PrivateData functions
Switch {Set/Get/Free}PrivateData function to introduced IUnknown functions.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
4117f5e1ab st/nine: Implement {Set/Get/Free}PrivateData in iunknown
Implement {Set/Get/Free}PrivateData in iunknown to get rid
of duplicated code in resource9 and volume9.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
c1c8e852c1 st/nine: Return device in NineSurface9_GetContainer
According to MSDN the device is returned for surfaces that do
not have a regular container.

Such surfaces are:
OffscreenPlainSurface, DepthStencilSurface and RenderTarget

Tested and verified on Windows.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
ba0274c7d6 st/nine: Allocate surface resources in surface ctor
Allocate resources in surface ctor.
Allows to use statetracker internal memory accounting.

Fix for issue #231.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Axel Davy
1f65f67b21 st/nine: Fix D3DFMT_NULL size
D3DFMT_NULL is mapped to PIPE_FORMAT_NONE.
Instead of relying on PIPE_FORMAT_NONE to
return a size, pick one.
The one picked is the same than Wine.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
9dc792b95b st/nine: Add debugging output
Add DBG calls to NineTexture9_GetLevelDesc and
NineTexture9_GetSurfaceLevel to ease debugging.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
8ceb2264c5 st/nine: Fix assert in NineUnknown_QueryInterface
Tests showed that is allowed to call this method on
object that have a zero refcount.
Required for issue #230.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:51 +02:00
Patrick Rudolph
f2eacef33d st/nine: Print interface id in NineVolume9_GetContainer
To ease debugging print interface id.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Patrick Rudolph
489dbc51ae st/nine: Print interface id in NineSurface9_GetContainer
To ease debugging print interface id.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Patrick Rudolph
e63a38832b st/nine: Print interface id in NineUnknown_QueryInterface
To ease debugging print interface id.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Patrick Rudolph
6a1cce20b6 st/nine: Move assert in NineSurface9_ctor
Move assert to function entry.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
851e4b8d8a st/nine: Properly declare sampler states for ff
Fixes a softpipe assertion failure with wine tests

Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:50 +02:00
Axel Davy
5ce23c1689 st/nine: Handle user clipping planes properly for ff
Found reading msdn and checking Wine.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
d2fd296648 st/nine: Fix the calculation of the number of vs inputs
Fixes hangs on radeonsi, and assert on llvmpipe.

Signed-off-by: Axel Davy <axel.davy@ens.fr>

Cc: "12.0" <mesa-stable@lists.freedesktop.org>
2016-10-10 23:43:50 +02:00
Axel Davy
71e7292a85 st/nine: Fix specular w coordinate
Found looking at Wine formulas.
Fixes a few visual issues.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
732cea09cd st/nine: Disable parts of lighting calculation if no normal provided
Behaviour found in Wine sources, and checked with some test apps.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
fc9bb19dce st/nine: Fix condition for specular lightning
Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
c56c7c1fc8 st/nine: Do always accumulate diffuse
According to spec.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:50 +02:00
Axel Davy
c5bce80f50 st/nine: Initialize ps ff registers
Found with wine tests for the rTmp register.
Not sure for the other ones.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
4ed3d5ee57 st/nine: Do not pollute rTmp in ff ps
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:50 +02:00
Axel Davy
d9b8b3196e st/nine: Allocate temporaries on demand for ps ff
Same change than for vs ff.
This makes it easier to not introduce mistakes
reusing temporaries whose result shouldn't be
erased.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:50 +02:00
Axel Davy
f7dd27aed3 st/nine: Fix texbem
Error found with wine tests.
nine_shader was expecting another order
than the one device9 was using.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:50 +02:00
Axel Davy
7afcbb49ba st/nine: Fix ff computation for inverse
Thanks to wine tests.
Apparently 4x4 inverse is to be used, and
if the inverse can't be calculated, the
input matrix is to be used.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
36399f9a7f st/nine: Used normed Vtx for reflectionvector
Fix deduced from the spec.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
eda1e6ece7 st/nine: Implement SPHEREMAP
Behaviour checked with a test app.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
a3ddc80ec8 st/nine: Enable passthrough only if positiont is used
Wine tests for the passthrough feature are for positiont.

Nothing seems to indicate passthrough happens when positiont
it not used. However having passthrough with positiont makes
sense (to be used with ProcessVertices outputs).

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
0b5bed774b st/nine: Fix wrong mask in ff vs
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:50 +02:00
Axel Davy
028dab95f6 st/nine: Fix tweening factor computation
The computation was reversed.
Deduced by tests on windows.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
1fe055338d st/nine: Disable ff vertex blending if required inputs are missing
This behaviour has been partially tested on windows.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
aa69bb6848 st/nine: Use materials if source is not given.
Deduced by test on windows.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
ab068a78d3 st/nine: Fix ff SPECULARENABLE
We were (wrongly) adding specular to diffuse
in vertex shaders when SPECULARENABLE was set.

However the spec says specular has to be added
after texture processing (which is in ps).
Besides SPECULARENABLE is flagged as a pixel state.

There was unused support for SPECULARENABLE
in the ps ff code.
Remove the vs code, and use the ps code.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
1d7890a441 st/nine: Undefined specular should be full of zeros
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2016-10-10 23:43:50 +02:00
Axel Davy
d9330f9348 st/nine: Implement normal transformation with vertex blending
The formula is different from the one of the spec,
but otherwise nothing particular.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
305e8106ab st/nine: Increase MaxVertexBlendMatrixIndex
Modern cards do advertise 8.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00
Axel Davy
567be40de9 st/nine: Compact ff vs constants a bit
There are several holes. This patch reduces
the holes a bit, which reduces the size of
the constant buffer uploaded.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
2016-10-10 23:43:50 +02:00