Connor Abbott [Wed, 22 Jul 2015 02:54:22 +0000 (19:54 -0700)]
nir/cf: split up and improve nir_handle_remove_jumps()
Before, the process of removing a jump and wiring up the remaining block
correctly was atomic, but with the new control flow modification it's
split into two parts: first, we extract the jump, which creates a new
block with re-wired successors as well as a free-floating jump, and then
we delete the control flow containing the jump, which removes the entry
in the predecessors and any phi node sources. Split up
nir_handle_remove_jumps() to accomodate this, and add the missing
support for removing phi node sources.
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Connor Abbott [Wed, 22 Jul 2015 02:54:21 +0000 (19:54 -0700)]
nir/cf: add remove_phi_src() helper
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Connor Abbott [Wed, 22 Jul 2015 02:54:20 +0000 (19:54 -0700)]
nir: add nir_foreach_phi_src_safe()
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Connor Abbott [Wed, 22 Jul 2015 02:54:19 +0000 (19:54 -0700)]
nir/cf: add insert_phi_undef() helper
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Connor Abbott [Wed, 22 Jul 2015 02:54:18 +0000 (19:54 -0700)]
nir: move control flow modification to its own file
We want to start reworking and expanding this code, but it'll be a lot
easier to do once we disentangle it from the rest of the stuff in nir.c.
Unfortunately, there are a few unavoidable dependencies in nir.c on
methods we'd rather not expose publicly, since if not used in very
specific situations they can cause Bad Things (tm) to happen. Namely, we
need to do some magical control flow munging when adding/removing jumps.
In the future, we may disallow adding/removing jumps in
nir_instr_insert_*() and nir_instr_remove(), and use separate functions
that are part of the control flow modification code, but for now we
expose them and put them in a separate, private header.
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Connor Abbott [Wed, 22 Jul 2015 02:54:17 +0000 (19:54 -0700)]
nir: make cleanup_cf_node() not use remove_defs_uses()
cleanup_cf_node() is part of the control flow modification code, which
we're going to split into its own file, but remove_defs_uses() is an
internal function used by nir_instr_remove(). Break the dependency by
making cleanup_cf_node() use nir_instr_remove() instead, which simply
calls remove_defs_uses() and then removes the instruction from the list.
nir_instr_remove() does do extra things for jumps, though, so we avoid
calling it on jumps which matches the previous behavior (this will be
fixed later in the series).
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Connor Abbott [Wed, 22 Jul 2015 02:54:16 +0000 (19:54 -0700)]
nir: inline block_add_pred() a few places
It was being used to initialize function impls and loops, even though
it's really a control flow modification helper. It's pretty trivial, so
just inline it to avoid the dependency.
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Connor Abbott [Wed, 22 Jul 2015 02:54:15 +0000 (19:54 -0700)]
nir/validate: check successors/predecessors more carefully
We should be checking almost everything now.
Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Kenneth Graunke [Fri, 7 Aug 2015 01:18:40 +0000 (18:18 -0700)]
nir: Delete the nir_function_impl::start_block field.
It's simply the first nir_cf_node in the nir_function_impl::body list,
which is easy enough to access - we don't to store a pointer to it
explicitly. Removing it means we don't need to maintain the pointer
when, say, splitting the start block when modifying control flow.
Thanks to Connor Abbott for suggesting this.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Nanley Chery [Fri, 31 Jul 2015 16:25:56 +0000 (09:25 -0700)]
mesa/formats: only do type and component lookup for uncompressed formats
Only uncompressed formats have a non-void type and actual
components per pixel. Rename _mesa_format_to_type_and_comps
to _mesa_uncompressed_format_to_type_and_comps and require
callers to check if the format is not compressed.
v2. include compressed format cases to avoid gcc warnings (Chad).
Reviewed-by: Chad Versace <chad.versace@intel.com>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Rob Clark [Sat, 15 Aug 2015 15:57:22 +0000 (11:57 -0400)]
freedreno/a4xx: formats update
Fixes glamor, which wants to use R8 integer textures.
Signed-off-by: Rob Clark <robclark@freedesktop.org>
Rob Clark [Mon, 24 Aug 2015 16:58:08 +0000 (12:58 -0400)]
freedreno: update generated headers
Signed-off-by: Rob Clark <robclark@freedesktop.org>
Chris Wilson [Sun, 23 Aug 2015 08:24:57 +0000 (09:24 +0100)]
i965: Always re-emit the pipeline select during invariant state emission
On the older platforms where we don't have logical contexts preserving
state across batches, we emit the invariant state setup on every batch
using the brw_invariant_state atom. This includes the pipeline selection
which is cached with the introduction of
commit
0e0e23ef537c9add672ff322f34e129a07edc55e
Author: Jordan Justen <jordan.l.justen@intel.com>
Date: Wed Apr 22 11:43:50 2015 -0700
i965/state: Emit pipeline select when changing pipelines
However, we do not reset the cache between batches on context-less
platforms resulting in us not setting the pipeline selection and can
cause GPU hangs if a media pipelined was loaded in the meantime (e.g.
mixing mplayer/gstreamer using libva and gnome-shell). A simple solution
is to just forcibly re-emit the pipeline select along with the invariant
state and reset the cache at that point.
Reported-and-tested-by: Tomasz C. <tomaszc@o2.pl>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91254
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
Marek Olšák [Sun, 23 Aug 2015 16:57:44 +0000 (18:57 +0200)]
Revert "radeon/winsys: increase the IB size for VM"
This reverts commit
567394112d904096abff1d994ab952f475dfb444.
It regressed performance. It looks like smaller IBs are better, because
the GPU goes idle quicker and there is less waiting for buffers and fences.
Cc: 11.0 <mesa-stable@lists.freedesktop.org>
Ilia Mirkin [Sun, 23 Aug 2015 07:11:09 +0000 (03:11 -0400)]
nv50: fix 2d engine blits for 64- and 128-bit formats
This fixes bin/ext_framebuffer_multisample-formats all_samples
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
Ilia Mirkin [Sun, 23 Aug 2015 06:56:45 +0000 (02:56 -0400)]
nv50: account for the int RT0 rule for alpha-to-one/cov
Same as commit
1af0641db but for nvc0. If an integer texture is
bound to RT0, don't do alpha-to-one or alpha-to-coverage.
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
Dave Airlie [Mon, 27 Jul 2015 03:13:49 +0000 (13:13 +1000)]
mesa/arb_gpu_shader_fp64: add support for glGetUniformdv
This was missed when I did fp64, I've sent a piglit test to cover
the case as well.
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Ilia Mirkin [Sun, 23 Aug 2015 03:59:50 +0000 (23:59 -0400)]
nv50,nvc0: disable depth bounds test on blit
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
Neil Roberts [Thu, 20 Aug 2015 01:55:44 +0000 (18:55 -0700)]
i965/bdw: Fix 3DSTATE_VF_INSTANCING when the edge flag is used
When the edge flag element is enabled then the elements are slightly
reordered so that the edge flag is always the last one. This was
confusing the code to upload the 3DSTATE_VF_INSTANCING state because
that is uploaded with a separate loop which has an instruction for
each element. The indices used in these instructions weren't taking
into account the reordering so the state would be incorrect.
v2: Use nr_elements instead of brw->vb.nr_enabled so that it will cope
when gl_VertexID is used.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91292
Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Tested-by: Mark Janes <mark.a.janes@intel.com>
Neil Roberts [Mon, 13 Jul 2015 17:01:14 +0000 (18:01 +0100)]
i965: Swap the order of the vertex ID and edge flag attributes
The edge flag data on Gen6+ is passed through the fixed function hardware as
an extra attribute. According to the PRM it must be the last valid
VERTEX_ELEMENT structure. However if the vertex ID is also used then another
extra element is added to source the VID. This made it so the vertex ID is in
the wrong register in the vertex shader and the edge attribute is no longer in
the last element.
v2: Also implement for BDW+
v3 [by Ben]: Remove 10.5 tag. Too late.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84677
Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Tested-by: Ben Widawsky <ben@bwidawsk.net>
Tested-by: Mark Janes <mark.a.janes@intel.com>
Glenn Kennard [Sat, 22 Aug 2015 23:01:31 +0000 (01:01 +0200)]
r600g: Fix assert in tgsi_cmp
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=91726
Signed-off-by: Glenn Kennard <glenn.kennard@gmail.com>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@gmail.com>
Alexander von Gluck IV [Wed, 19 Aug 2015 01:47:59 +0000 (20:47 -0500)]
egl: scons: fix the haiku build, do not build the dri2 backend
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Emil Velikov [Sat, 22 Aug 2015 12:28:16 +0000 (13:28 +0100)]
docs: add 11.1.0-devel release notes template, bump version
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Boyan Ding [Fri, 21 Aug 2015 13:44:36 +0000 (21:44 +0800)]
egl/wayland: define set_cloexec_or_close only when mkostemp is not present
Fixes a compiler warning of defined but not used function when
HAVE_MKOSTEMP is defined.
Fixes:
eb3e2562a4b(configure.ac: check for mkostemp())
Signed-off-by: Boyan Ding <boyan.j.ding@gmail.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
Emil Velikov [Sat, 22 Aug 2015 11:58:03 +0000 (12:58 +0100)]
mapi: ship ARB_tessellation_shader.xml
Fixes:
e2b59a39cbb(mapi: add ARB_tessellation_shader)
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Emil Velikov [Sat, 22 Aug 2015 11:15:27 +0000 (12:15 +0100)]
nouveau: add codegen/unordered_set.h to the tarball
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Emil Velikov [Fri, 21 Aug 2015 01:01:42 +0000 (02:01 +0100)]
winsys/sw/kms-dri: don't attempt to bundle the sconscript
The build/file was removed with an earlier commit while the EXTRA_DIST
was forgotten.
Fixes:
66d77cd71c6 (scons: don't build the kms-dri winsys)
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Emil Velikov [Thu, 20 Aug 2015 21:55:49 +0000 (22:55 +0100)]
winsys/amdgpu: automake: remove missing headers
The files are not referenced in any other place in whole of
mesa. They are likely remnants of the early development stage.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Emil Velikov [Thu, 20 Aug 2015 21:52:49 +0000 (22:52 +0100)]
automake: build all drivers but vc4 during distcheck
vc4 conflicts with ilo, when build on x86 as it's build for emulation
purposes. In that mode a i965-like symbol is exported by vc4, which
conflicts with the ilo one in the gallium-dri megadriver.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Mauro Rossi [Tue, 18 Aug 2015 09:53:32 +0000 (11:53 +0200)]
android: enable amdgpu winsys in radeonsi driver
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Mauro Rossi [Tue, 18 Aug 2015 09:53:31 +0000 (11:53 +0200)]
android: fix cflags and includes for amdgpu winsys
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Emil Velikov [Sat, 22 Aug 2015 10:04:11 +0000 (11:04 +0100)]
docs: add news item and link release notes for 10.6.5
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Emil Velikov [Sat, 22 Aug 2015 10:00:47 +0000 (11:00 +0100)]
docs: add sha256 checksums for 10.6.5
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit
fa34225167396008e75e93f23696666caba8a7bf)
Emil Velikov [Sat, 22 Aug 2015 09:20:54 +0000 (10:20 +0100)]
docs: add release notes for 10.6.5
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit
a43b3dd99bd4c114d0f3e90f4fd4792164fe7539)
Chris Wilson [Fri, 21 Aug 2015 14:28:22 +0000 (15:28 +0100)]
i965: Move control flush into pipelined conditional render
The nv_conditional_render piglits were sporadically failing. Moving
the control flush from the write and placing it just before the read
was sufficient to make the piglits pass a 1000/1000 times. The bspec
says that the flush enable bit "waits until all previous writes of
immediate data from post sync circles are complete before executing the
next command" - the operative word being previous!
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90691
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Neil Roberts <neil@linux.intel.com>
Cc: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Eric Anholt [Fri, 21 Aug 2015 17:57:24 +0000 (10:57 -0700)]
vc4: Actually allow math results to allocate into r4.
I switched us to tracking whether the results *could* go to r4, but then
didn't make a separate register class for the class bits that included r4.
Switch the "any" class to actually be "any", and name the "any but r4"
class more appropriately.
total instructions in shared programs: 96798 -> 94680 (-2.19%)
instructions in affected programs: 62736 -> 60618 (-3.38%)
Eric Anholt [Fri, 21 Aug 2015 07:08:13 +0000 (00:08 -0700)]
vc4: Fold the 16-bit integer pack into the instructions generating it.
total instructions in shared programs: 97580 -> 96798 (-0.80%)
instructions in affected programs: 52826 -> 52044 (-1.48%)
Eric Anholt [Fri, 21 Aug 2015 07:04:36 +0000 (00:04 -0700)]
vc4: Reuse QPU dumping for packing bits in QIR.
Eric Anholt [Wed, 19 Aug 2015 03:26:05 +0000 (20:26 -0700)]
vc4: Make _dest variants of qir ALU helpers to provide an explicit dest.
Eric Anholt [Fri, 21 Aug 2015 16:22:32 +0000 (09:22 -0700)]
vc4: Use the SSA defs list for figuring out eligible MOVs for copy prop.
I thought I'd converted this over previously. It was copy propagating
MOVs badly with the new destination packing flags.
Krzysztof Sobiecki [Thu, 20 Aug 2015 21:19:30 +0000 (23:19 +0200)]
st/nine: Always use user constant buffers
We had several reports of users hitting bugs
with the other path to upload constants,
and switching to the user constant buffer
path solves the bugs.
User constant buffers are expected to be slower
for Nvidia cards, so ideally this patch should be
reverted when the path is fixed.
Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Krzysztof Sobiecki <sobkas@gmail.com>
Axel Davy [Sun, 16 Aug 2015 11:11:50 +0000 (13:11 +0200)]
st/nine: Silent warning in nine_ff
release build was complaining
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 16 Aug 2015 11:11:27 +0000 (13:11 +0200)]
st/nine: Silent warning in sm1_declusage_to_tgsi
release build was complaining
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 16 Aug 2015 10:58:41 +0000 (12:58 +0200)]
st/nine: Silent warning in NineCubeTexture9_ctor
The compiler was complaining the value may be uninitialised
when it is used (which is wrong). Initialize to NULL to silent
the warning.
Axel Davy [Sun, 16 Aug 2015 10:57:40 +0000 (12:57 +0200)]
st/nine: Silent warning in update_vertex_buffer
There was an unused variable
Axel Davy [Sun, 9 Aug 2015 17:06:01 +0000 (19:06 +0200)]
st/nine: Catch setting the same shader
This is quite rare that an app does set again
the same shaders, but it isn't an expensive check
either.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 9 Aug 2015 17:02:02 +0000 (19:02 +0200)]
st/nine: Avoid Constant upload when there is no change
It is very common for d3d9 apps to set again the constants
they need before every draw call, even if nothing changed.
Since we are mostly gpu bound, it is better to check
for change, and upload constants again (and thus use
gpu bandwith) only if the constants changed.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sat, 25 Jul 2015 15:54:26 +0000 (17:54 +0200)]
st/nine: Fix the number of texture stages
The number of texture stages is 8.
'tex_stage' array was too big, and thus
the checks with 'Elements(state->ff.tex_stage)' were passing,
causing some invalid API calls to pass, and crash because of
out of bounds write since bumpmap_vars was just the correct size.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Thu, 14 May 2015 17:24:57 +0000 (19:24 +0200)]
st/nine: Use CSO cache for sampler views
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>
Axel Davy [Thu, 14 May 2015 17:10:41 +0000 (19:10 +0200)]
st/nine: Calculate dummy sampler state only once
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Thu, 14 May 2015 13:42:50 +0000 (15:42 +0200)]
st/nine: Better check shader constant limits
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Thu, 13 Aug 2015 17:24:02 +0000 (19:24 +0200)]
st/nine: Remove NINED3DRS_ZBIASSCALE
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>
Axel Davy [Sat, 16 May 2015 22:22:33 +0000 (00:22 +0200)]
st/nine: Implement special DOTPRODUCT3 behaviour
Taken from wine tests
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sat, 16 May 2015 10:14:54 +0000 (12:14 +0200)]
st/nine: Implement ff vertex data passthrough
Fixes Wine tests
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Fri, 15 May 2015 23:24:29 +0000 (01:24 +0200)]
st/nine: Change nine_state_update order
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>
Axel Davy [Wed, 13 May 2015 23:27:33 +0000 (01:27 +0200)]
st/nine: Programmable ps D3DTTSS_PROJECTED support
The implementation used Wine tests for conformance
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Tue, 12 May 2015 21:49:54 +0000 (23:49 +0200)]
st/nine: Complete ff texture transform implementation
Wine tests were used to get it right.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sat, 15 Aug 2015 20:52:19 +0000 (22:52 +0200)]
st/nine: Change a few advertised caps
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>
Axel Davy [Fri, 8 May 2015 17:50:15 +0000 (19:50 +0200)]
st/nine: Advertise Fog flags
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 16 Aug 2015 12:59:52 +0000 (14:59 +0200)]
st/nine: Revert to userbuf path when needed
Automatically switch to userbuf path when
we would need to upload fog or bumpmat
constants
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Tue, 12 May 2015 19:56:04 +0000 (21:56 +0200)]
st/nine: Finish Fog implementation
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Mon, 11 May 2015 19:32:57 +0000 (21:32 +0200)]
st/nine: Rework shader states
Separate state setting and commit
Changes how the shader key is computed
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 10 May 2015 09:42:25 +0000 (11:42 +0200)]
st/nine: Remove some useless variables
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: David Heidelberg <david@ixit.cz>
Axel Davy [Sun, 10 May 2015 10:01:10 +0000 (12:01 +0200)]
st/nine: Fix nine_ff_ps_key padding
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Fri, 8 May 2015 17:48:45 +0000 (19:48 +0200)]
st/nine: Begin programmable shader fog support
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Fri, 8 May 2015 17:26:20 +0000 (19:26 +0200)]
st/nine: Fix fixed function fog support
Previous code had only a subcase of fog working right.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Tue, 24 Mar 2015 10:06:22 +0000 (11:06 +0100)]
st/nine: Rework ff constant buffers
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>
Axel Davy [Tue, 24 Mar 2015 09:47:35 +0000 (10:47 +0100)]
st/nine: Rework constant buffer state handling
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>
Axel Davy [Tue, 24 Mar 2015 09:10:25 +0000 (10:10 +0100)]
st/nine: Rework blend states
Separate state preparation and state commit
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sat, 3 Jan 2015 10:36:09 +0000 (11:36 +0100)]
st/nine: Improve fallback when driver doesn't support user buffers.
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>
Axel Davy [Sun, 15 Feb 2015 15:22:43 +0000 (16:22 +0100)]
st/nine: Avoid useless updates in SetSamplerState
Check for redundant settings
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: David Heidelberg <david@ixit.cz>
Axel Davy [Tue, 24 Mar 2015 09:16:59 +0000 (10:16 +0100)]
st/nine: Rework rasterizer states
Separate state preparation and state commit
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Fri, 15 May 2015 21:52:09 +0000 (23:52 +0200)]
st/nine: Reorder DSA state settings
Separate state preparation and state commit
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Tue, 24 Mar 2015 08:35:18 +0000 (09:35 +0100)]
st/nine: Reorder nine_state.
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>
Axel Davy [Sun, 15 Feb 2015 08:19:16 +0000 (09:19 +0100)]
st/nine: Remove group_mask argument from nine_update_state
It was only used to discriminate update framebuffer vs update
everything. Instead use two functions.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Tiziano Bacocco [Fri, 30 Jan 2015 19:10:38 +0000 (20:10 +0100)]
st/nine: Implement TEXBEM,TEXBEML and BEM
Signed-off-by: Tiziano Bacocco <tizbac2@gmail.com>
Patrick Rudolph [Sun, 17 May 2015 10:46:42 +0000 (12:46 +0200)]
st/nine: Fix use of uninitialized values
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>
Patrick Rudolph [Sat, 16 May 2015 17:47:00 +0000 (19:47 +0200)]
st/nine: Prevent possible crash
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>
Patrick Rudolph [Tue, 19 May 2015 18:18:29 +0000 (20:18 +0200)]
st/nine: Return correct error codes in NineDevice9_Reset
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>
Patrick Rudolph [Wed, 13 May 2015 17:51:30 +0000 (19:51 +0200)]
st/nine: Fail on D3DUSAGE_DYNAMIC for D3DPOOL_SCRATCH textures
Texture with pool D3DPOOL_SCRATCH and D3DPOOL_MANAGED
cannot be used with flag D3DUSAGE_DYNAMIC.
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Axel Davy [Thu, 14 May 2015 15:22:26 +0000 (17:22 +0200)]
st/nine: Fix Lock Checks for Compressed textures
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Thu, 14 May 2015 15:01:40 +0000 (17:01 +0200)]
st/nine: Impose restrictions on DXTN texture sizes
This is the expected behaviour.
Fixes wine tests.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: David Heidelberg <david@ixit.cz>
Patrick Rudolph [Wed, 13 May 2015 17:43:04 +0000 (19:43 +0200)]
st/nine: Return NULL pointer in lock error cases
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>
Patrick Rudolph [Wed, 13 May 2015 05:19:11 +0000 (07:19 +0200)]
st/nine: Fix resource SetPriority/GetPriority
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>
Patrick Rudolph [Tue, 12 May 2015 18:28:17 +0000 (20:28 +0200)]
st/nine: Clean GetPrivateData
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>
Patrick Rudolph [Mon, 20 Apr 2015 17:26:55 +0000 (19:26 +0200)]
st/nine: Allow lock coordinates outside range
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>
Patrick Rudolph [Tue, 12 May 2015 18:07:09 +0000 (20:07 +0200)]
st/nine: Fix GenerateMipSubLevels potential crash
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>
Axel Davy [Sat, 16 May 2015 16:40:02 +0000 (18:40 +0200)]
st/nine: Fix FillColor Flag check
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>
Axel Davy [Thu, 7 May 2015 23:29:35 +0000 (01:29 +0200)]
st/nine: Fix StretchRect checks
Fixes Wine tests
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Fri, 8 May 2015 14:54:53 +0000 (16:54 +0200)]
st/nine: Implement EvictManagedResources
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>
Axel Davy [Wed, 6 May 2015 22:03:21 +0000 (00:03 +0200)]
st/nine: Track managed textures
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Tue, 5 May 2015 18:40:12 +0000 (20:40 +0200)]
st/nine: Only update dirty rect for UpdateTexture
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>
Axel Davy [Sun, 3 May 2015 22:17:09 +0000 (00:17 +0200)]
st/nine: Textures start dirty
According to the spec all textures start
dirty.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 3 May 2015 21:53:48 +0000 (23:53 +0200)]
st/nine: Track dirty region for SYSTEMMEM too
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>
Axel Davy [Sun, 3 May 2015 21:46:14 +0000 (23:46 +0200)]
st/nine: Add missing BASETEX_REGISTER_UPDATE calls
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>
Axel Davy [Sun, 3 May 2015 21:28:25 +0000 (23:28 +0200)]
st/nine: SetAutoGenFilterType should regenerate the sublevels
It should regenerate the sublevels according to the spec
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 3 May 2015 20:57:13 +0000 (22:57 +0200)]
st/nine: Simplify NineVolume9_CopyVolume
We had only one usage for this function.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Axel Davy [Sun, 3 May 2015 20:40:38 +0000 (22:40 +0200)]
st/nine: Split NineSurface9_CopySurface
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>
Axel Davy [Tue, 5 May 2015 21:51:24 +0000 (23:51 +0200)]
st/nine: Simplify Volume9 dirty region tracking
Similar to what was done for Surface9, track the dirty region
only in VolumeTexture9.
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Marek Olšák [Sat, 8 Nov 2014 12:02:47 +0000 (13:02 +0100)]
util/u_blitter: implement alpha blending for pipe->blit