Commit graph

58805 commits

Author SHA1 Message Date
Brian Paul
550f9ee64c softpipe: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
8280b29d7c radeon: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
0de99d52b7 svga: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
6ef9fc791e trace: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
e64112b1f9 rbug: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
bd1514849b noop: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
c772338488 llvmpipe: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
41a9be70e4 ilo: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
9564ec8317 identity: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
aec11d48cf i915g: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
e5d000c3f1 galahad: implement pipe_context::bind_sampler_states() 2013-10-03 14:05:26 -06:00
Brian Paul
4bdf7d3842 clover: use pipe_context::bind_sampler_states() if non-null 2013-10-03 14:05:26 -06:00
Brian Paul
96b9c09495 vl: use pipe_context::bind_sampler_states() if non-null 2013-10-03 14:05:26 -06:00
Brian Paul
bbc1fd8c80 util: use pipe_context::bind_sampler_states() if non-null 2013-10-03 14:05:26 -06:00
Brian Paul
27d500a844 draw: use pipe_context::bind_sampler_states() if non-null 2013-10-03 14:05:26 -06:00
Brian Paul
5cba8725a4 cso: use pipe_context::bind_sampler_states() if non-null 2013-10-03 14:05:26 -06:00
Brian Paul
755d788fe2 gallium: add pipe_context::bind_sampler_states()
The bind_vertex/geometry/fragment/compute_sampler_states() functions
will be replaced by a single functions.
2013-10-03 14:05:26 -06:00
Brian Paul
9b99451da2 r300g: rename r300_bind_sampler_states to r300_bind_fragment_sampler_states 2013-10-03 14:05:26 -06:00
Brian Paul
c368479e38 draw: rename bind_sampler_states variables
Put 'fragment' in the names.  In preparation for upcoming function
renaming.
2013-10-03 14:05:25 -06:00
Marek Olšák
c7d91a6f13 r600g: fix ínitialization of non_disp_tiling flag
This fixes a regression caused by e64633e8c3
2013-10-03 18:30:49 +02:00
Marek Olšák
b893bbf438 r600g,radeonsi: create aux_context last
This fixes a regression caused by 68f6dec32e.
2013-10-03 18:30:49 +02:00
Marek Olšák
52bfe8e0f6 r300g/swtcl: don't call draw_prepare_shader_outputs 2013-10-03 18:30:49 +02:00
Brian Paul
bde5b626c2 st/mesa: silence warning about unhandled enum in switch statement 2013-10-03 09:14:03 -06:00
Chris Forbes
d133592619 mesa: fix make check for ARB_texture_gather
Clean up inconsistency in enum decoration:
- Use the undecorated enums where possible.
- MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB remains decorated, since it
  has no undecorated equivalent in GL4.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70054
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 21:38:48 +13:00
Chris Forbes
61519f15ac docs: Mark off ARB_texture_gather 2013-10-03 07:58:12 +13:00
Chris Forbes
88f196ab6e i965/hsw: Apply gather4 RG32F w/a using SCS instead of shader.
The new surface channel select bits allow us to avoid having to
recompile the shader for this workaround.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-and-tested-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:40 +13:00
Chris Forbes
7df985ad47 i965: Enable ARB_texture_gather on Gen7
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:37 +13:00
Chris Forbes
dd4c2a516c i965: use gather slots in the binding table for gather4.
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:34 +13:00
Chris Forbes
c08f2083ee i965: Emit a second set of SURFACE_STATE for gather4 from textures.
This allows us to use a different surface format for gather4, which is
required for R32G32_FLOAT to work on Gen7.

V4: - Only emit alternate surface state for shaders which will actually
      use it.
    - Pass a simple 'for_gather' flag rather than a function pointer.
      The callee can decide what w/a to apply.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:29 +13:00
Chris Forbes
5901d48b41 i965: make room in the binding table for a full alternate set of surface_states
Worst-case is that *every* texunit uses a format that needs overriding.

V4: Place the gather slots last, so shaders which don't use gather don't
    get penalized by having a huge binding table.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:26 +13:00
Chris Forbes
855b2a8f4a i965: Add BRW_SURFACEFORMAT_R32G32_FLOAT_LD, required for IVB gather4 w/a
gather4 GREEN channel against a surface with format R32G32_FLOAT doesn't work
correctly on IVB. w/a from bspec:

   - use R32G32_FLOAT_LD = 0x97 instead, for gather4 only.
   - select BLUE channel to read GREEN

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:23 +13:00
Chris Forbes
cfa3c8a0d3 i965: w/a for gather4 green RG32F
V4: Only flag quirks if there are any uses of gather in the shader,
    to avoid spurious recompiles just because someone happened to use
    RG32F.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:20 +13:00
Chris Forbes
36e25ccd29 glsl: flag shaders which use gather4 at all
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:56:02 +13:00
Chris Forbes
4ed3930f97 i965/vs: Add support for ir_tg4
Pretty much the same as the FS case. Channel select goes in the header,

V2: Less mangling.
V3: Avoid sampling at all, for degenerate swizzles.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:55:59 +13:00
Chris Forbes
942a4ec18f i965/fs: Add support for ir_tg4
Lowers ir_tg4 (from textureGather and textureGatherOffset builtins) to
SHADER_OPCODE_TG4.

The usual post-sampling swizzle workaround can't work for ir_tg4,
so avoid doing that:

* For R/G/B/A swizzles use the hardware channel select (lives in the
   same dword in the header as the texel offset), and then don't do
   anything afterward in the shader.
* For 0/1 swizzles blast the appropriate constant over all the output
   channels instead of sampling.

V2: Avoid duplicating header enabling block
V3: Avoid sampling at all, for degenerate swizzles.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:55:56 +13:00
Chris Forbes
fb455500bf i965: add SHADER_OPCODE_TG4
Adds the Gen7 message IDs, a new SHADER_OPCODE_TG4 pseudo-op, and
low-level support for emitting it via generate_tex().

V3: Updated for changes in master.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:55:55 +13:00
Maxence Le Dore
18002d9eda glsl: add texture gather changes
V2 [Chris Forbes]:
   - Add new pattern, fixup parameter reading.

V3: Rebase onto new builtins machinery

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2013-10-03 07:55:54 +13:00
Maxence Le Dore
d3575622b7 mesa: add texture gather changes
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2013-10-03 07:55:51 +13:00
Chris Forbes
0d7fc10bcd i965: fix bogus swizzle in brw_cubemap_normalize
When used with a cube array in VS, failed assertion in ir_validate:

   Assignment count of LHS write mask channels enabled not
   matching RHS vector size (3 LHS, 4 RHS).

To fix this, swizzle the RHS correctly for the writemask.

This showed up in the ARB_texture_gather tests, which exercise cube
arrays in the VS.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Cc: "9.2" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-03 07:54:53 +13:00
Vincent Lejeune
4e4c32ba11 r600/llvm: Adds support for MSAA 2013-10-02 17:30:21 +02:00
Vincent Lejeune
8edbd7609b r600g/llvm: Undef z and w component of 2D TXP inst 2013-10-02 17:30:14 +02:00
Vincent Lejeune
9f183eb7de r600g/llvm: fix txq for texture buffer 2013-10-02 17:30:07 +02:00
Chia-I Wu
848c0e72f3 i965: compute DDX in a subspan based only on top row
Consider only the top-left and top-right pixels to approximate DDX in a 2x2
subspan, unless the application requests a more accurate approximation via
GL_FRAGMENT_SHADER_DERIVATIVE_HINT or this optimization is disabled from the
new driconf option disable_derivative_optimization.

This results in a less accurate approximation.  However, it improves the
performance of Xonotic with Ultra settings by 24.3879% +/- 0.832202% (at 95.0%
confidence) on Haswell.  No noticeable image quality difference observed.

The improvement comes from faster sample_d.  It seems, on Haswell, some
optimizations are introduced to allow faster sample_d when all pixels in a
subspan have the same derivative.  I considered SAMPLE_STATE too, which allows
one to control the quality of sample_d on Haswell.  But it gave much worse
image quality without giving better performance comparing to this change.

No piglit quick.tests regression on Haswell (tested with v1).

v2: better guess for precompile program key

Signed-off-by: Chia-I Wu <olv@lunarg.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
2013-10-02 15:26:40 +08:00
Chris Forbes
72edba1659 i965/blorp: Use passed in framebuffer rather than ctx->DrawBuffer
We have the destination framebuffer object passed in; there's no need to
go digging around in the context.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
2013-10-02 18:31:24 +13:00
Francisco Jerez
ef8cc3e51f ralloc: Remove the rzalloc-based new/delete operator definition macro.
Using it encourages the (IMHO worrying) practice of leaving member
variables uninitialized in constructor definitions.  This macro
shouldn't be necessary anymore after the last patch series fixing all
its users to initialize all member variables from the class
constructor.  Remove it.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-01 17:39:45 -07:00
Francisco Jerez
fcbbecb9bc st/mesa: Switch glsl_to_tgsi_instruction to the non-zeroing allocator.
All member variables of glsl_to_tgsi_instruction are already being
initialized from its implicitly defined constructor, it's not
necessary to use rzalloc to allocate its memory.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-01 17:30:52 -07:00
Francisco Jerez
03d46344df mesa/program: Switch ir_to_mesa_instruction to the non-zeroing allocator.
All member variables of ir_to_mesa_instruction are already being
initialized from its implicitly defined constructor, it's not
necessary to use rzalloc to allocate its memory.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-01 17:30:52 -07:00
Francisco Jerez
23e8673afb i965: Switch vec4_live_variables to the non-zeroing allocator.
All member variables of vec4_live_variables are already being
initialized from its constructor, it's not necessary to use rzalloc to
allocate its memory, and doing so makes it more likely that we will
start relying on the allocator to zero out all memory if the class is
ever extended with new member variables.

That's bad because it ties objects to some specific allocation scheme,
and gives unpredictable results when an object is created with a
different allocator -- Stack allocation, array allocation, or
aggregation inside a different object are some of the useful
possibilities that come to my mind.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-01 17:30:52 -07:00
Francisco Jerez
c307d27c5e i965: Switch fs_live_variables to the non-zeroing allocator.
All member variables of fs_live_variables are already being
initialized from its constructor, it's not necessary to use rzalloc to
allocate its memory, and doing so makes it more likely that we will
start relying on the allocator to zero out all memory if the class is
ever extended with new member variables.

That's bad because it ties objects to some specific allocation scheme,
and gives unpredictable results when an object is created with a
different allocator -- Stack allocation, array allocation, or
aggregation inside a different object are some of the useful
possibilities that come to my mind.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-01 17:30:52 -07:00
Francisco Jerez
ced327ec64 i965: Switch fs_inst to the non-zeroing allocator.
All member variables of fs_inst are already being initialized from its
constructor, it's not necessary to use rzalloc to allocate its memory,
and doing so makes it more likely that we will start relying on the
allocator to zero out all memory if the class is ever extended with
new member variables.

That's bad because it ties objects to some specific allocation scheme,
and gives unpredictable results when an object is created with a
different allocator -- Stack allocation, array allocation, or
aggregation inside a different object are some of the useful
possibilities that come to my mind.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-10-01 17:30:51 -07:00