mesa.git
9 years agonir: Add a nir_opt_undef() to handle csels with undef.
Eric Anholt [Tue, 4 Aug 2015 23:25:24 +0000 (16:25 -0700)]
nir: Add a nir_opt_undef() to handle csels with undef.

We may find a cause to do more undef optimization in the future, but for
now this fixes up things after if flattening.  vc4 was handling this
internally most of the time, but a GLB2.7 shader that did a conditional
discard and assign gl_FragColor in the else was still emitting some extra
code.

total instructions in shared programs: 100809 -> 100795 (-0.01%)
instructions in affected programs:     37 -> 23 (-37.84%)

v2: Use nir_instr_rewrite_src() to update def/use on src[0] (by Thomas
    Helland).
v3: Make sure to flag metadata dirties, and copy the swizzle and abs/neg
    over to src[0], too (by anholt).

Reviewed-by: Thomas Helland <thomashelland90@gmail.com> (v2)
Tested-by: Thomas Helland <thomashelland90@gmail.com> (v2)
9 years agogm107/ir: indirect handle goes first on maxwell also
Ilia Mirkin [Fri, 14 Aug 2015 18:10:36 +0000 (14:10 -0400)]
gm107/ir: indirect handle goes first on maxwell also

Fixes fs-simple-texture-size.shader_test

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
9 years agonv30: add depth bounds test support for hw that has it
Ilia Mirkin [Tue, 11 Aug 2015 16:19:54 +0000 (12:19 -0400)]
nv30: add depth bounds test support for hw that has it

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agonv50: add depth bounds test support
Ilia Mirkin [Tue, 11 Aug 2015 15:59:56 +0000 (11:59 -0400)]
nv50: add depth bounds test support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agonvc0: add depth bounds test support
Ilia Mirkin [Tue, 11 Aug 2015 15:46:22 +0000 (11:46 -0400)]
nvc0: add depth bounds test support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agodocs/relnotes: document amdgpu, GL 4.1 and other new features
Marek Olšák [Thu, 13 Aug 2015 21:46:13 +0000 (23:46 +0200)]
docs/relnotes: document amdgpu, GL 4.1 and other new features

9 years agoradeonsi: add all new VI PCI IDs including Fiji
Marek Olšák [Thu, 16 Apr 2015 20:59:41 +0000 (22:59 +0200)]
radeonsi: add all new VI PCI IDs including Fiji

9 years agoradeonsi: revert a wrong DB bug workaround for VI
Marek Olšák [Mon, 10 Aug 2015 14:23:53 +0000 (16:23 +0200)]
radeonsi: revert a wrong DB bug workaround for VI

The bug was misunderstood. Besides that, the bug affects a DB feature we
don't use yet.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeon/uvd: implement HEVC support
Boyuan Zhang [Wed, 8 Jul 2015 20:54:48 +0000 (16:54 -0400)]
radeon/uvd: implement HEVC support

add context buffer to fix H265 uvd decode issue.
fix H265 corruption issue caused by incorrect assigned ref_pic_list.

v2: disable interlace for HEVC
    add CZ sps flag workaround
    fix coding style

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
9 years agoradeon/vce: disable VCE dual instance for harvest part
Leo Liu [Mon, 13 Jul 2015 17:36:27 +0000 (13:36 -0400)]
radeon/vce: disable VCE dual instance for harvest part

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: implement VCE dual instance support
Leo Liu [Thu, 25 Jun 2015 14:14:14 +0000 (10:14 -0400)]
radeon/vce: implement VCE dual instance support

VCE dual instances are encoding in parallel, it needs two frames for
encoding with their own parameters in one IB. Master instance will check
the task info to find another frame, assign it to the slave instance

Signed-off-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/video: config encode stacked frame number based on HW
Leo Liu [Thu, 25 Jun 2015 16:12:12 +0000 (12:12 -0400)]
radeon/video: config encode stacked frame number based on HW

since VCE 3.0 with dual instances, we need stack frames for them.

Signed-off-by: Leo Liu <leo.liu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: make reloc offset signed
Christian König [Mon, 15 Jun 2015 18:19:48 +0000 (20:19 +0200)]
radeon/vce: make reloc offset signed

We need a negative offset for FW 50.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/vce: add config task and put task info into encoder v2
Leo Liu [Mon, 1 Jun 2015 17:48:24 +0000 (13:48 -0400)]
radeon/vce: add config task and put task info into encoder v2

The config task has own task ID, extract the configuration functions
into config task.

v2 (chk): calculate offset automatically

Signed-off-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/vce: fix VCE fail after rebase
Leo Liu [Mon, 15 Jun 2015 19:20:20 +0000 (15:20 -0400)]
radeon/vce: fix VCE fail after rebase

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: add dual pipe support for VI
Leo Liu [Mon, 15 Jun 2015 18:11:57 +0000 (14:11 -0400)]
radeon/vce: add dual pipe support for VI

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: add new firmware support for VI and CI
Leo Liu [Fri, 29 May 2015 17:43:00 +0000 (13:43 -0400)]
radeon/vce: add new firmware support for VI and CI

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/vce: implement VCE two pipe support
Leo Liu [Wed, 15 Apr 2015 16:36:32 +0000 (12:36 -0400)]
radeon/vce: implement VCE two pipe support

v2: rebase by Marek

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/uvd: make 30M as minimum for MPEG4 dpb buffer size
Leo Liu [Thu, 12 Mar 2015 20:24:57 +0000 (16:24 -0400)]
radeon/uvd: make 30M as minimum for MPEG4 dpb buffer size

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/uvd: recalculate dbp buffer size
Leo Liu [Thu, 12 Mar 2015 20:13:44 +0000 (16:13 -0400)]
radeon/uvd: recalculate dbp buffer size

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeon/video: add 4K support for decode/encode parameters
Leo Liu [Mon, 9 Mar 2015 20:24:48 +0000 (16:24 -0400)]
radeon/video: add 4K support for decode/encode parameters

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: add h264 performance HW decoder support
Leo Liu [Mon, 15 Dec 2014 17:51:50 +0000 (12:51 -0500)]
gallium/radeon: add h264 performance HW decoder support

v2: -make tonga use new h264 performance HW decoder;
    -integrate it scaling buffer to msg_fb buffer

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: use VM for VCE
Christian König [Thu, 10 Apr 2014 15:18:32 +0000 (17:18 +0200)]
gallium/radeon: use VM for VCE

v2: (leo) add checking for driver backend
v3: (leo) change variable name from use_amdgpu to use_vm
v4: rebase by Marek

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: use VM for UVD
Christian König [Wed, 9 Apr 2014 17:41:06 +0000 (19:41 +0200)]
gallium/radeon: use VM for UVD

v2: (leo) add checking for driver backend
v3: (leo) change variable name from use_amdgpu to use_vm
v4: rebase by Marek

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: add support for FIJI (v4)
Alex Deucher [Wed, 29 Jul 2015 19:40:46 +0000 (15:40 -0400)]
radeonsi: add support for FIJI (v4)

v2: incorporate comments from Marek
v3: add missing fiji case in winsys init
    use tonga raster config (double check this)
v4: rebase on harvest patch

Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v3)
Reviewed-by: Christian König <christian.koenig@amd.com> (v3)
Reviewed-by: David Zhang <david1.zhang@amd.com> (v3)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agowinsys/amdgpu: add addrlib support for Fiji (v2)
Alex Deucher [Wed, 8 Jul 2015 02:18:13 +0000 (22:18 -0400)]
winsys/amdgpu: add addrlib support for Fiji (v2)

v2: fix tonga chip check

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: David Zhang <david1.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: add harvest support for CI/VI parts (v3)
Alex Deucher [Thu, 9 Jul 2015 02:19:55 +0000 (22:19 -0400)]
radeonsi: add harvest support for CI/VI parts (v3)

Properly calculate the PA_SC_RASTER_CONFIG[_1] settings
for harvest chips.

v2: - fix default raster config settings for CZ and KV
    - Suggestions from Michel
v3: - handle multiple packers properly for CI+
    - GRBM_GFX_INDEX is privileged on VI+

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> (v2)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogallium/radeon: enable the GPU load query for amdgpu
Marek Olšák [Sat, 27 Jun 2015 11:57:25 +0000 (13:57 +0200)]
gallium/radeon: enable the GPU load query for amdgpu

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: properly handler raster_config setup on CZ
Alex Deucher [Wed, 10 Jun 2015 15:43:24 +0000 (11:43 -0400)]
radeonsi: properly handler raster_config setup on CZ

Need to take into account the number of RBs.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeonsi: properly set the raster_config for KV
Alex Deucher [Wed, 10 Jun 2015 15:39:30 +0000 (11:39 -0400)]
radeonsi: properly set the raster_config for KV

This enables the second RB on asics that support it which
should boost performance.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: mesa-stable@lists.freedesktop.org
9 years agoradeonsi: add amdgpu support for querying the GPU reset state
Marek Olšák [Thu, 30 Apr 2015 15:02:38 +0000 (17:02 +0200)]
radeonsi: add amdgpu support for querying the GPU reset state

Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoradeonsi: add VI hardware support
Marek Olšák [Thu, 16 Apr 2015 18:44:54 +0000 (20:44 +0200)]
radeonsi: add VI hardware support

9 years agoradeonsi: add definitions for VI status registers
Marek Olšák [Sat, 11 Jul 2015 11:22:22 +0000 (13:22 +0200)]
radeonsi: add definitions for VI status registers

Useful for debugging hangs with the read-register interface.
I checked that this adds the same register fields as the kernel driver.

Acked-by: Michel Dänzer <michel.daenzer@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
9 years agoradeonsi: add VI register definitions
Marek Olšák [Thu, 16 Apr 2015 18:12:24 +0000 (20:12 +0200)]
radeonsi: add VI register definitions

9 years agoradeonsi: fix DRM version checks for amdgpu DRM 3.0.0
Marek Olšák [Thu, 16 Apr 2015 18:35:27 +0000 (20:35 +0200)]
radeonsi: fix DRM version checks for amdgpu DRM 3.0.0

9 years agowinsys/amdgpu: add addrlib - texture addressing and alignment calculator
Marek Olšák [Thu, 16 Apr 2015 17:41:33 +0000 (19:41 +0200)]
winsys/amdgpu: add addrlib - texture addressing and alignment calculator

This is an internal project that Catalyst uses and now open source will do
too.

v2: squashed these commits in:
    - winsys/amdgpu: fix warnings in addrlib
    - winsys/amdgpu: set PIPE_CONFIG and NUM_BANKS in tiling_flags

9 years agowinsys/amdgpu: add a new winsys for the new kernel driver
Marek Olšák [Thu, 16 Apr 2015 20:43:23 +0000 (22:43 +0200)]
winsys/amdgpu: add a new winsys for the new kernel driver

v2: - lots of changes according to Emil Velikov's comments
    - implemented radeon_winsys::read_registers

v3: - a lot of new work, many of them adapt to libdrm interface changes
Squashed patches:
winsys/amdgpu: implement radeon_winsys context support
winsys/amdgpu: add reference counting for contexts
winsys/amdgpu: add userptr support
winsys/amdgpu: allocate IBs like normal buffers
winsys/amdgpu: add IBs to the buffer list, adapt to interface changes
winsys/amdgpu: don't use KMS handles as reloc hash keys
winsys/amdgpu: sync buffer accesses to different rings
winsys/amdgpu: use dependencies instead of waiting for last fence v2
gallium/radeon: unify buffer_wait and buffer_is_busy in the winsys interface (amdgpu part)
winsys/amdgpu: track fences per ring and be thread-safe
winsys/amdgpu: simplify waiting on a variable in amdgpu_fence_wait
gallium/radeon: allow the winsys to choose the IB size (amdgpu part)
winsys/amdgpu: switch to new amdgpu_cs_query_fence_status interface
winsys/amdgpu: handle fence and dependencies merge
winsys/amdgpu follow libdrm change to move user fence into UMD
winsys/amdgpu: use amdgpu_bo_va_op for va map/unmap v2
winsys/amdgpu: use the new tiling flags
winsys/amdgpu: switch to new GTT_USWC definition
winsys/amdgpu: expose amdgpu_cs_query_reset_state to drivers
winsys/amdgpu: fix valgrind warnings
winsys/amdgpu: don't use VRAM with APUs that don't have much of it
winsys/amdgpu: require LLVM 3.6.1 for VI because of bug fixes there
winsys/amdgpu: remove amdgpu_winsys::num_cpus
winsys/amdgpu: align BO size to page size
winsys/amdgpu: reduce BO cache timeout
winsys/amdgpu: remove useless flushing and waiting in amdgpu_bo_set_tiling
winsys/amdgpu: use amdgpu_device_handle as a unique device ID instead of fd
winsys/amdgpu: use safer access to amdgpu_fence_wait::signalled
winsys/amdgpu: allow maximum IB size of 4 MB
winsys/amdgpu: add ip_instance into amdgpu_fence
gallium/radeon: add RING_COMPUTE instead of RADEON_FLUSH_COMPUTE
winsys/amdgpu: set the ring type at CS initilization
winsys/amdgpu: query the GART page size from the kernel
winsys/amdgpu: correctly wait for shared buffers to become idle
winsys/amdgpu: set the amdgpu_cs_fence structure only once at fence creation
winsys/amdgpu: add a specific error message for cs_submit -> -ENOMEM
winsys/amdgpu: check num_active_ioctls before calling amdgpu_bo_wait_for_idle
winsys/amdgpu: clear user fence BO after allocating it
winsys/amdgpu: fix user fences
winsys/amdgpu: make amdgpu_winsys_create public
winsys/amdgpu: remove thread offloading
winsys/amdgpu: flatten the amdgpu_cs_context structure and simplify more

v4: require libdrm 2.4.63

9 years agost/vdpau: add HEVC support v2
Christian König [Wed, 29 Apr 2015 13:35:02 +0000 (15:35 +0200)]
st/vdpau: add HEVC support v2

v2: fix return code

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
9 years agost/omx/enc: stack frame tasks for the gathering
Leo Liu [Thu, 25 Jun 2015 17:19:56 +0000 (13:19 -0400)]
st/omx/enc: stack frame tasks for the gathering

Put tasks to the FIFO queue for results

Signed-off-by: Leo Liu <leo.liu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agost/omx/enc: flush after eos handling v2
Leo Liu [Fri, 29 May 2015 18:50:44 +0000 (14:50 -0400)]
st/omx/enc: flush after eos handling v2

v2 (chk): reorder the flush

Signed-off-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
9 years agovl: add HEVC profiles and defines
Christian König [Tue, 28 Apr 2015 13:31:37 +0000 (15:31 +0200)]
vl: add HEVC profiles and defines

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
9 years agovl: add cap for stacking frames
Leo Liu [Thu, 25 Jun 2015 16:09:11 +0000 (12:09 -0400)]
vl: add cap for stacking frames

Signed-off-by: Leo Liu <leo.liu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
9 years agoswrast: fix EXT_depth_bounds_test
Marek Olšák [Wed, 12 Aug 2015 23:51:37 +0000 (01:51 +0200)]
swrast: fix EXT_depth_bounds_test

zMin and zMax can't use _DepthMaxF, because the test is done in Z32_UNORM.

Probably a useless patch given how popular swrast is nowadays, but it helped
create and validate the piglit test.

v2: add an explicit cast to GLuint

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agoradeonsi: add support for EXT_depth_bounds_test
Marek Olšák [Mon, 10 Aug 2015 00:23:21 +0000 (02:23 +0200)]
radeonsi: add support for EXT_depth_bounds_test

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agost/mesa: add EXT_depth_bounds_test
Marek Olšák [Mon, 10 Aug 2015 00:18:43 +0000 (02:18 +0200)]
st/mesa: add EXT_depth_bounds_test

Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agogallium: add an interface for EXT_depth_bounds_test
Marek Olšák [Mon, 10 Aug 2015 00:11:48 +0000 (02:11 +0200)]
gallium: add an interface for EXT_depth_bounds_test

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agost/mesa: small cleanup in st_extensions.c
Marek Olšák [Mon, 10 Aug 2015 17:53:22 +0000 (19:53 +0200)]
st/mesa: small cleanup in st_extensions.c

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
9 years agogallium: add support for GLES texture float extensions (v3)
Marek Olšák [Mon, 10 Aug 2015 17:37:01 +0000 (19:37 +0200)]
gallium: add support for GLES texture float extensions (v3)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74329

v2: add a CAP for half floats
    drivers should not expose the CAPs if they don't support the formats

v3: update relnotes

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
9 years agor600,compute: setup compute sampler states and views
Zoltan Gilian [Tue, 7 Jul 2015 21:38:27 +0000 (23:38 +0200)]
r600,compute: setup compute sampler states and views

v2: Add compute mode flag to sampler state setup (Marek).
    Drop branches which avoid reference counting (Marek).
    Simplify unset branch condition (Marek).

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
9 years agost/clover: Fix build against LLVM 3.8 SVN r244928
Michel Dänzer [Fri, 14 Aug 2015 06:16:12 +0000 (15:16 +0900)]
st/clover: Fix build against LLVM 3.8 SVN r244928

raw_svector_ostream::flush() is now unnecessary and forbidden:

  CXX      llvm/libclllvm_la-invocation.lo
../../../../../src/gallium/state_trackers/clover/llvm/invocation.cpp: In function 'clover::module {anonymous}::build_module_llvm(llvm::Module*, unsigned int (&)[7])':
../../../../../src/gallium/state_trackers/clover/llvm/invocation.cpp:574:29: error: use of deleted function 'void llvm::raw_svector_ostream::flush()'
       bitcode_ostream.flush();
                             ^
In file included from /home/daenzer/src/llvm-git/llvm/include/clang/Basic/VirtualFileSystem.h:22:0,
                 from /home/daenzer/src/llvm-git/llvm/include/clang/Basic/FileManager.h:20,
                 from /home/daenzer/src/llvm-git/llvm/include/clang/Basic/SourceManager.h:38,
                 from /home/daenzer/src/llvm-git/llvm/include/clang/Frontend/CompilerInstance.h:16,
                 from ../../../../../src/gallium/state_trackers/clover/llvm/invocation.cpp:25:
/home/daenzer/src/llvm-git/llvm/include/llvm/Support/raw_ostream.h:512:8: note: declared here
   void flush() = delete;
        ^
Makefile:862: recipe for target 'llvm/libclllvm_la-invocation.lo' failed

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
9 years agomesa: set correct error for non-renderable multisample textures
Tapani Pälli [Thu, 13 Aug 2015 06:30:35 +0000 (09:30 +0300)]
mesa: set correct error for non-renderable multisample textures

v2: same common error on gles31 and desktop OpenGL
    (spotted by Erik Faye-Lund)

Signed-off-by: Marta Lofstedt <marta.lofstedt@linux.intel.com>
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agoi965/skl: Remove early platform support
Ben Widawsky [Fri, 7 Aug 2015 20:58:37 +0000 (13:58 -0700)]
i965/skl: Remove early platform support

We do not want bug reports from this early stepping of SKL. Few if any were ever
shipped outside of Intel to early enabling partners, and none will be sold.

There is a functional change here. If you're using new mesa on an old
kernel/libdrm, the revid will be -1, and we'll use new SKL values instead of
early ones (a hopefully irrelevant improvement IMO).

v2: Remove hunk which warned before dying. Instead, default to normal SKL
support (Ken)

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Neil Roberts <neil@linux.intel.com>
9 years agoegl: improve attribute checking for eglCreateContext
Frank Binns [Wed, 12 Aug 2015 15:36:00 +0000 (16:36 +0100)]
egl: improve attribute checking for eglCreateContext

The EGL 1.4 spec states for eglCreateContext:

"attribute EGL_CONTEXT_CLIENT_VERSION is only valid when the current
 rendering API is EGL_OPENGL_ES_API"

Additionally, if the EGL_KHR_create_context EGL extension is supported
(this is mandatory in EGL 1.5) then the EGL_CONTEXT_MAJOR_VERSION_KHR,
which is an alias for EGL_CONTEXT_CLIENT_VERSION, and
EGL_CONTEXT_MINOR_VERSION_KHR attributes are also accepted by
eglCreateContext with the extension spec stating:

"The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
 EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API
 version. They are only meaningful for OpenGL and OpenGL ES
 contexts, and specifying them for other types of contexts will
 generate an error."

Add the necessary checks against the extension and rendering APIs when
validating these attributes as part of eglCreateContext.

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
[Emil Velikov: Add newline before the spec quote (Matt)]
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl: don't allow eglGetConfigs to set num_configs param to a negative value
Frank Binns [Wed, 12 Aug 2015 15:35:59 +0000 (16:35 +0100)]
egl: don't allow eglGetConfigs to set num_configs param to a negative value

When a buffer is provided to eglGetConfigs it's supposed to set the value
of the num_config parameter to the total number of configs that have been
copied into this buffer. For some reason the EGL spec doesn't consider it
to be an error to pass this function a buffer while specifying its size to
be less than 0. Given this, one would expect this combination to result in
the num_config parameter being set to 0 but this wasn't the case. This was
due to the buffer size being copied straight into num_configs without being
clamped to 0.

This was causing the following dEQP EGL test to fail:
dEQP-EGL.functional.query_config.get_configs.get_configs_bounds

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/x11: don't abort when creating a DRI2 drawable fails
Frank Binns [Tue, 4 Aug 2015 13:32:45 +0000 (14:32 +0100)]
egl/x11: don't abort when creating a DRI2 drawable fails

When calling either eglCreateWindowSurface or eglCreatePixmapSurface it
was possible for an application to be aborted as a result of it failing
to create a DRI2 drawable on the server. This could happen due to an
application passing in an invalid native drawable handle, for example.

v2: Handle the case where an error has been set on the connection

Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/x11: set EGL_BAD_NATIVE_(PIXMAP|WINDOW) for invalid pixmaps/windows
Frank Binns [Tue, 4 Aug 2015 13:32:44 +0000 (14:32 +0100)]
egl/x11: set EGL_BAD_NATIVE_(PIXMAP|WINDOW) for invalid pixmaps/windows

Both eglCreatePixmapSurface and eglCreateWindowSurface were incorrectly
setting the EGL error to be EGL_BAD_ALLOC when an invalid native drawable
handle was being passed in. The EGL spec states the following for
eglCreatePixmapSurface:

"If pixmap is not a valid native pixmap handle, then an EGL_BAD_-
 NATIVE_PIXMAP error should be generated."

(eglCreateWindowSurface has similar text)

Correctly set the EGL error value based on xcb_get_geometry_reply returning
an error structure containing something other than BadAlloc.

v2: Check for BadAlloc error and update commit message to reflect this

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/x11: fix use of EGL_BAD_NATIVE_WINDOW
Frank Binns [Tue, 4 Aug 2015 13:32:43 +0000 (14:32 +0100)]
egl/x11: fix use of EGL_BAD_NATIVE_WINDOW

Commit 4ed23fd590 introduced some calls to _eglError inappropriately
passing it EGL_BAD_NATIVE_WINDOW. This was actually harmless in two of the
cases as _eglError gets called later on with a more appropriate error code
but (just to be safe) switch these to _eglLog calls instead.

The final case is a little trickier as it actually needs to set an error
of which the following are available (according to the EGL spec):
EGL_BAD_MATCH, EGL_BAD_CONFIG, EGL_BAD_NATIVE_(PIXMAP|WINDOW) and
EGL_BAD_ALLOC.

Of these, EGL_BAD_ALLOC seems to be the most appropriate given that
failure can occur either as a result of xcb_get_setup failing due to an
earlier error on the connection (where the most commonly occurring error
code is XCB_CONN_CLOSED_MEM_INSUFFICIENT) or as a result of the
xcb_screen_iterator_t 'rem' field being 0.

In addition to this, commit af2aea40d2 unconditionally set the error to
EGL_BAD_NATIVE_WINDOW when creating a window or pixmap surface with a NULL
native handle. Change this to correctly set the error based on surface
type.

v2: Updated patch description (Emil Velikov)
    Return EGL_BAD_NATIVE_PIXMAP when eglCreatePixmapSurface is called
    with a NULL native pixmap handle

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agomesa: remove extern from texture function
Timothy Arceri [Thu, 13 Aug 2015 08:42:54 +0000 (18:42 +1000)]
mesa: remove extern from texture function

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
9 years agoglsl: make linker error message more informative
Timothy Arceri [Wed, 12 Aug 2015 07:01:52 +0000 (17:01 +1000)]
glsl: make linker error message more informative

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agoi965: Stop aux data compare preventing program binary re-use
Topi Pohjolainen [Thu, 25 Jun 2015 11:00:41 +0000 (14:00 +0300)]
i965: Stop aux data compare preventing program binary re-use

Items in the program cache consist of three things: key, the data
representing the instructions and auxiliary data representing
uniform storage. The data consisting of instructions is stored into
a drm buffer object while the key and the auxiliary data reside in
malloced section. Now the cache uploading is equipped with a check
that iterates over existing items and seeks to find a another item
using identical instruction data than the one being just uploaded.
If such is found there is no need to add another section into the
drm buffer object holding identical copy of the existing one. The
item just being uploaded should instead simply point to the same
offset in the underlying drm buffer object.

Unfortunately the check for the matching instruction data is
coupled with a check for matching auxiliary data also. This
effectively prevents the cache from ever containing two items
that could share a section in the drm buffer object.

The constraint for the instruction data and auxiliary data to
match is, fortunately, unnecessary strong. When items are stored
into the cache they will anyway contain their own copy of the
auxiliary data (even if they matched - which they in real world
never will). The only thing the items would be sharing is the
instruction data and hence we should only check for that to match
and nothing else.

No piglit regression in jenkins.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
9 years agoi965: Only write program to cache when it doesn't exist yet
Topi Pohjolainen [Thu, 25 Jun 2015 11:35:26 +0000 (14:35 +0300)]
i965: Only write program to cache when it doesn't exist yet

Current logic re-writes the same data when existing data is found.
Not that this actually matters at the moment in practice, the
contraint for finding matching data is too severe to ever allow
data to be shared between two items in the cache.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
9 years agoi965: Rename brw_upload_item_data to brw_alloc_item_data
Topi Pohjolainen [Thu, 25 Jun 2015 11:31:03 +0000 (14:31 +0300)]
i965: Rename brw_upload_item_data to brw_alloc_item_data

and simplify the interface to take directly the size and to return
the offset. The routine does nothing more than allocate, it doesn't
upload anything.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
9 years agomesa: update MaxShaderStorageBlockSize to 2^27
Tapani Pälli [Wed, 12 Aug 2015 08:13:40 +0000 (11:13 +0300)]
mesa: update MaxShaderStorageBlockSize to 2^27

Extension spec originally required 2^24 but 2^27 is the minimum value
required by OpenGL 4.5 and OpenGL ES 3.1 specifications.

Fixes:
   ES31-CTS.shader_storage_buffer_object.basic-max

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
9 years agomesa: fix name returned for XFB varyings
Tapani Pälli [Mon, 3 Aug 2015 07:46:33 +0000 (10:46 +0300)]
mesa: fix name returned for XFB varyings

_mesa_get_program_resource_name has logic to append '[0]' in name
if variable is an array, this should be skipped for XFB varyings
that have array index already appended.

v2: fix comment, change also GL_NAME_LENGTH query to match
    the behaviour

Fixes:
   ES31-CTS.program_interface_query.transform-feedback-types

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
9 years agomesa: Fix printf format specifier warn of the ptrdiff_t
Edward O'Callaghan [Wed, 29 Jul 2015 11:49:45 +0000 (21:49 +1000)]
mesa: Fix printf format specifier warn of the ptrdiff_t

See §7.19.6.1, paragraph 7 of the ISO C specification.

Signed-off-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
9 years agor600g: allow setting geometry shader sampler states
Marek Olšák [Tue, 11 Aug 2015 19:37:59 +0000 (21:37 +0200)]
r600g: allow setting geometry shader sampler states

We were ignoring them. This is both hilarious and sad.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agor600g: fix polygon offset scale
Marek Olšák [Tue, 11 Aug 2015 20:36:51 +0000 (22:36 +0200)]
r600g: fix polygon offset scale

The value was copied from r300g, which uses 1/12 subpixels, but this hw
uses 1/16 subpixels.

Should fix piglit: gl-1.4-polygon-offset (formerly a glean test)
(untested, ported from radeonsi)

Reviewed-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Cc: mesa-stable@lists.freedesktop.org
9 years agoradeonsi: fix polygon offset scale
Marek Olšák [Tue, 11 Aug 2015 20:36:51 +0000 (22:36 +0200)]
radeonsi: fix polygon offset scale

The value was copied from r300g, which uses 1/12 subpixels, but this hw
uses 1/16 subpixels.

Fixes piglit: gl-1.4-polygon-offset (formerly a glean test)

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Cc: mesa-stable@lists.freedesktop.org
9 years agoradeonsi: enable VS_OUT_MISC_SIDE_BUS_ENA
Marek Olšák [Mon, 10 Aug 2015 00:28:01 +0000 (02:28 +0200)]
radeonsi: enable VS_OUT_MISC_SIDE_BUS_ENA

This is recommended for better performance.
Diag tests always enable this.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: add support for gl_PrimitiveID in the fragment shader
Marek Olšák [Sun, 9 Aug 2015 23:50:11 +0000 (01:50 +0200)]
radeonsi: add support for gl_PrimitiveID in the fragment shader

It must be obtained from the VS.

The GS scenario A must be enabled for PrimID to be generated for the VS.

+ 4 piglits

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agoradeonsi: move VGT_GS_MODE to the VS state
Marek Olšák [Sun, 9 Aug 2015 22:52:21 +0000 (00:52 +0200)]
radeonsi: move VGT_GS_MODE to the VS state

The VS will want to select GS scenario A here (VS with PrimitiveID).

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agofreedreno/a4xx: format updates
Rob Clark [Wed, 12 Aug 2015 15:39:24 +0000 (11:39 -0400)]
freedreno/a4xx: format updates

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/a3xx+a4xx: add texture buffer object support
Rob Clark [Tue, 11 Aug 2015 20:47:16 +0000 (16:47 -0400)]
freedreno/a3xx+a4xx: add texture buffer object support

Basic texture buffer support.  Should be straightforward to add first/
last_element support.  And with a bit of work in ir3 emulate larger
texture buffer sizes.  But this seems to be enough for stk gl31 render
paths.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agottn: add buffer texture type
Rob Clark [Tue, 11 Aug 2015 20:33:14 +0000 (16:33 -0400)]
ttn: add buffer texture type

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/ir3: 'keeps' need neighbors found too
Rob Clark [Tue, 11 Aug 2015 20:11:04 +0000 (16:11 -0400)]
freedreno/ir3: 'keeps' need neighbors found too

This shows up with a glamor shader, which does a TXF and uses the result
for conditional kill.  Before we wouldn't group the fanin (collect)
neighbors which need to be allocated adjacently at RA, resulting in
badness.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/ir3/print: print left/right neighbors too
Rob Clark [Tue, 11 Aug 2015 20:09:48 +0000 (16:09 -0400)]
freedreno/ir3/print: print left/right neighbors too

When debugging compiler, this is useful to see.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/ir3: use nir pass to lower const to scalar
Rob Clark [Tue, 11 Aug 2015 15:47:46 +0000 (11:47 -0400)]
freedreno/ir3: use nir pass to lower const to scalar

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/a4xx: point-size and spritelist fixes
Rob Clark [Tue, 11 Aug 2015 12:48:34 +0000 (08:48 -0400)]
freedreno/a4xx: point-size and spritelist fixes

a4xx needs similar treatment as 995f55a6

Also fixup a few point-size and vpsrepl issues and drop fix_blit_fp()
hack previously needed for mem2gmem.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno: cap cleanups
Rob Clark [Tue, 11 Aug 2015 00:41:45 +0000 (20:41 -0400)]
freedreno: cap cleanups

Move a few things around to group stuff that is common to a3xx/a4xx
together.  Also, introduce is_ir3() for things that are more specific to
the compiler / shader-ISA than to the gpu generation.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agomesa: add NV_read_{depth,stencil,depth_stencil} extensions
Rob Clark [Mon, 10 Aug 2015 10:58:37 +0000 (06:58 -0400)]
mesa: add NV_read_{depth,stencil,depth_stencil} extensions

These extensions allow reading depth/stencil for GLES contexts, which is
useful for tools like apitrace.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
9 years agoi965/shader: Don't use OptimizeForAOS for NIR vec4 vertex shaders
Jason Ekstrand [Thu, 6 Aug 2015 21:26:47 +0000 (14:26 -0700)]
i965/shader: Don't use OptimizeForAOS for NIR vec4 vertex shaders

Shader-db results for vec4 programs using NIR on HSW:

   total instructions in shared programs: 1838157 -> 1828469 (-0.53%)
   instructions in affected programs:     275978 -> 266290 (-3.51%)
   helped:                                2827
   HURT:                                  244
   GAINED:                                0
   LOST:                                  0

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
9 years agomesa/teximage: report the correct function which triggered the error
Nanley Chery [Fri, 7 Aug 2015 23:37:47 +0000 (16:37 -0700)]
mesa/teximage: report the correct function which triggered the error

This function would always report that a dimension or size error occurred
in glTexImage even when it was called from glCompressedTexImage. Replace
the static string with the dynamically determined caller name.

Reviewed-by: Tapani Palli <tapani.palli@intel.com>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
9 years agomesa/formats: don't byteswap when building array formats
Oded Gabbay [Wed, 12 Aug 2015 15:22:53 +0000 (18:22 +0300)]
mesa/formats: don't byteswap when building array formats

Because we build here an array format, we don't need to swap the
bytes for big endian.
If it isn't an array format, the bytes will be swapped in
_mesa_format_convert.

v2: remove temp variable

Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
9 years agomesa/formats: Don't flip channels of null array formats
Jason Ekstrand [Mon, 10 Aug 2015 08:32:23 +0000 (01:32 -0700)]
mesa/formats: Don't flip channels of null array formats

Before, if we encountered an array format of 0 on a BE system, we would
flip all the channels even though it's an invalid format.  This would
result in a mostly invalid format with a swizzle of yyyy or wwww.  Instead,
we should just return 0 if the array format stashed in the format info is
invalid.

Cc: "10.6 10.5" <mesa-stable@lists.freedesktop.org>
9 years agomesa/formats: Fix swizzle flipping for big-endian targets
Jason Ekstrand [Mon, 10 Aug 2015 06:45:44 +0000 (23:45 -0700)]
mesa/formats: Fix swizzle flipping for big-endian targets

The swizzle defines where in the format you should look for any given
channel.  When we flip the format around for BE targets, we need to change
the destinations of the swizzles, not the sources.  For example, say the
format is an RGBX format with a swizzle of xyz1 on LE.  Then it should be
wzy1 on BE;  however, the code as it was before, would have made it 1zyx on
BE which is clearly wrong.

Reviewed-by: Iago Toral <itoral@igalia.com>
Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>
Cc: "10.6 10.5" <mesa-stable@lists.freedesktop.org>
9 years agomesa/formats: Only do byteswapping for packed formats
Jason Ekstrand [Sat, 8 Aug 2015 16:00:21 +0000 (09:00 -0700)]
mesa/formats: Only do byteswapping for packed formats

Reviewed-by: Iago Toral <itoral@igalia.com>
Cc: "10.6 10.5" <mesa-stable@lists.freedesktop.org>
9 years agoconfigure.ac: Always define __STDC_LIMIT_MACROS.
Matt Turner [Tue, 11 Aug 2015 22:21:03 +0000 (15:21 -0700)]
configure.ac: Always define __STDC_LIMIT_MACROS.

... which ensures that we get defines like LONG_MAX in C++.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91591
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
9 years agoi965: Optimize brw_inst_set_bits() and brw_compact_inst_set_bits().
Matt Turner [Tue, 11 Aug 2015 01:50:48 +0000 (18:50 -0700)]
i965: Optimize brw_inst_set_bits() and brw_compact_inst_set_bits().

Cuts about 2k of .text.

   text     data      bss      dec      hex  filename
5017141   197160    27672  5241973   4ffc75  i965_dri.so before
5014981   197160    27672  5239813   4ff405  i965_dri.so after

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Optimize brw_inst_bits() and brw_compact_inst_bits().
Matt Turner [Mon, 10 Aug 2015 23:57:58 +0000 (16:57 -0700)]
i965: Optimize brw_inst_bits() and brw_compact_inst_bits().

Cuts about 1k of .text.

   text     data      bss      dec      hex  filename
5018165   197160    27672  5242997   500075  i965_dri.so before
5017141   197160    27672  5241973   4ffc75  i965_dri.so after

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agodocs: add news item and link release notes for 10.6.4
Emil Velikov [Tue, 11 Aug 2015 18:00:03 +0000 (19:00 +0100)]
docs: add news item and link release notes for 10.6.4

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agodocs: add sha256 checksums for 10.6.4
Emil Velikov [Tue, 11 Aug 2015 17:54:18 +0000 (18:54 +0100)]
docs: add sha256 checksums for 10.6.4

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit 99793e2541510fe208d29e69fedf97a6fff006f8)

9 years agodocs: add release notes for 10.6.4
Emil Velikov [Tue, 11 Aug 2015 15:39:10 +0000 (16:39 +0100)]
docs: add release notes for 10.6.4

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit 6b2fcee64edadbd4db2293f5f4fc1a70e80c7251)

9 years agogallium/radeon: fix r600g build if LLVM is disabled
Marek Olšák [Sat, 8 Aug 2015 12:03:54 +0000 (14:03 +0200)]
gallium/radeon: fix r600g build if LLVM is disabled

MESA_LLVM_VERSION_PATCH is undefined.

Reviewed-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
Tested-by: Benjamin Bellec <b.bellec@gmail.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
9 years agor600g: use a bitfield to track dirty atoms
Grazvydas Ignotas [Sun, 9 Aug 2015 21:42:35 +0000 (00:42 +0300)]
r600g: use a bitfield to track dirty atoms

r600 currently has 73 atoms and looping through their dirty flags has
become costly because checking each flag requires a pointer
dereference before the read. To avoid having to do that add additional
bitfield which can be checked really quickly thanks to tzcnt instruction.

id field was added to struct r600_atom but that doesn't affect memory
usage for both 32 and 64 bit CPUs because it was stuffed into padding.

The performance improvement is ~2% for benchmarks that can have FPS in
the thousands but is hardly measurable in "real" programs.

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
9 years agor600g: don't mark unused atom dirty
Grazvydas Ignotas [Sun, 9 Aug 2015 21:42:34 +0000 (00:42 +0300)]
r600g: don't mark unused atom dirty

On evergreen config_state is not used, so don't mark it dirty.

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
9 years agor600g: use a helper to add an initialized atom
Grazvydas Ignotas [Sun, 9 Aug 2015 21:42:33 +0000 (00:42 +0300)]
r600g: use a helper to add an initialized atom

Instead of writing to rctx->atoms directly use a helper to take
advantage of assert checks.

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
9 years agogallium/radeon: use helper functions to mark atoms dirty
Grazvydas Ignotas [Sun, 9 Aug 2015 21:42:32 +0000 (00:42 +0300)]
gallium/radeon: use helper functions to mark atoms dirty

This is analogous to r300_mark_atom_dirty() used by r300, and will
be used by later patches. For common radeon code, appropriate helper
is called through a function pointer.

No functional changes.

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
9 years agodocs: Mark ARB_shader_image_load_store as done on i965.
Francisco Jerez [Fri, 1 May 2015 14:00:02 +0000 (17:00 +0300)]
docs: Mark ARB_shader_image_load_store as done on i965.

9 years agoi965: Expose ARB_shader_image_load_store.
Francisco Jerez [Thu, 7 May 2015 15:56:01 +0000 (18:56 +0300)]
i965: Expose ARB_shader_image_load_store.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoi965/fs: Clamp image array indices to the array bounds on IVB.
Francisco Jerez [Mon, 27 Jul 2015 11:33:06 +0000 (14:33 +0300)]
i965/fs: Clamp image array indices to the array bounds on IVB.

This fixes the spec@arb_shader_image_load_store@invalid index bounds
piglit tests on IVB, which were causing a GPU hang and then a crash
due to the invalid binding table index result of the array index
calculation.  Other generations seem to behave sensibly when an
invalid surface is provided so it doesn't look like we need to care.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>