mesa.git
10 years agometa: fix meta clear of layered framebuffers
Paul Berry [Tue, 19 Nov 2013 21:31:20 +0000 (13:31 -0800)]
meta: fix meta clear of layered framebuffers

From section 4.4.7 (Layered Framebuffers) of the GLSL 3.2 spec:

    When the Clear or ClearBuffer* commands are used to clear a
    layered framebuffer attachment, all layers of the attachment are
    cleared.

This patch fixes meta clears to properly clear all layers of a layered
framebuffer attachment.  We accomplish this by adding a geometry
shader to the meta clear program which sets gl_Layer to a uniform
value.  When clearing a layered framebuffer, we execute in a loop,
setting the uniform to point to each layer in turn.

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
10 years agomesa: Track number of layers in layered framebuffers.
Paul Berry [Tue, 19 Nov 2013 23:55:51 +0000 (15:55 -0800)]
mesa: Track number of layers in layered framebuffers.

In order to properly clear layered framebuffers, we need to know how
many layers they have.  The easiest way to do this is to record it in
the gl_framebuffer struct when we check framebuffer completeness.

This patch replaces the gl_framebuffer::Layered boolean with a
gl_framebuffer::NumLayers integer, which is 0 if the framebuffer is
not layered, and equal to the number of layers otherwise.

v2: Remove gl_framebuffer::Layered and make gl_framebuffer::NumLayers
always have a defined value.  Fix factor of 6 error in the number of
layers in a cube map array.

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agonvc0: inform kernel about buffers that screen_create touches
Ben Skeggs [Fri, 22 Nov 2013 01:34:13 +0000 (11:34 +1000)]
nvc0: inform kernel about buffers that screen_create touches

Prevents a GPU page fault if somehow the uniform bo gets evicted
before the screen_create pushbuf has been submitted.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
10 years agoradeonsi/compute: Fix LDS size calculation
Tom Stellard [Thu, 22 Aug 2013 15:22:58 +0000 (11:22 -0400)]
radeonsi/compute: Fix LDS size calculation

We need to include the number of LDS bytes allocated by the state tracker.

CC: "10.0" <mesa-stable@lists.freedesktop.org>
10 years agor600g/compute: Add a work-around for flushing issues on Cayman
Tom Stellard [Wed, 20 Nov 2013 03:05:52 +0000 (22:05 -0500)]
r600g/compute: Add a work-around for flushing issues on Cayman

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
https://bugs.freedesktop.org/show_bug.cgi?id=69321

CC: "10.0" <mesa-stable@lists.freedesktop.org>
10 years agoglsl: Fix interstage uniform interface block link error detection.
Paul Berry [Fri, 15 Nov 2013 22:23:45 +0000 (14:23 -0800)]
glsl: Fix interstage uniform interface block link error detection.

Previously, we checked for interstage uniform interface block link
errors in validate_interstage_interface_blocks(), which is only called
on pairs of adjacent shader stages.  Therefore, we failed to detect
uniform interface block mismatches between non-adjacent shader stages.

Before the introduction of geometry shaders, this wasn't a problem,
because the only supported shader stages were vertex and fragment
shaders, therefore they were always adjacent.  However, now that we
allow a program to contain vertex, geometry, and fragment shaders,
that is no longer the case.

Fixes piglit test "skip-stage-uniform-block-array-size-mismatch".

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
v2: Rename validate_interstage_interface_blocks() to
validate_interstage_inout_blocks() to reflect the fact that it no
longer validates uniform blocks.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
v3: Make validate_interstage_inout_blocks() skip uniform blocks.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agoglsl: Fix cross-version linking between VS and GS.
Paul Berry [Wed, 20 Nov 2013 01:48:02 +0000 (17:48 -0800)]
glsl: Fix cross-version linking between VS and GS.

Previously, when attempting to link a vertex shader and a geometry
shader that use different GLSL versions, we would sometimes generate a
link error due to the implicit declaration of gl_PerVertex being
different between the two GLSL versions.

This patch fixes that problem by only requiring interface block
definitions to match when they are explicitly declared.

Fixes piglit test "shaders/version-mixing vs-gs".

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
v2: In the interface_block_definition constructor, move the assignment
to explicitly_declared after the existing if block.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agoglsl: Prohibit illegal mixing of redeclarations inside/outside gl_PerVertex.
Paul Berry [Thu, 14 Nov 2013 00:53:18 +0000 (16:53 -0800)]
glsl: Prohibit illegal mixing of redeclarations inside/outside gl_PerVertex.

From section 7.1 (Built-In Language Variables) of the GLSL 4.10
spec:

    Also, if a built-in interface block is redeclared, no member of
    the built-in declaration can be redeclared outside the block
    redeclaration.

We have been regarding this text as a clarification to the behaviour
established for gl_PerVertex by GLSL 1.50, so we apply it regardless
of GLSL version.

This patch enforces the rule by adding an enum to ir_variable to track
how the variable was declared: implicitly, normally, or in an
interface block.

Fixes piglit tests:
- gs-redeclares-pervertex-out-after-global-redeclaration.geom
- vs-redeclares-pervertex-out-after-global-redeclaration.vert
- gs-redeclares-pervertex-out-after-other-global-redeclaration.geom
- vs-redeclares-pervertex-out-after-other-global-redeclaration.vert
- gs-redeclares-pervertex-out-before-global-redeclaration
- vs-redeclares-pervertex-out-before-global-redeclaration

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
v2: Don't set "how_declared" redundantly in builtin_variables.cpp.
Properly clone "how_declared".

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agoi965: Enable the AMD_performance_monitor extension on Gen5+.
Kenneth Graunke [Wed, 13 Nov 2013 23:42:57 +0000 (15:42 -0800)]
i965: Enable the AMD_performance_monitor extension on Gen5+.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Take "bookend" OA snapshots at the start/end of each batch.
Kenneth Graunke [Wed, 13 Nov 2013 23:36:29 +0000 (15:36 -0800)]
i965: Take "bookend" OA snapshots at the start/end of each batch.

Unfortunately, our hardware only has one set of aggregating performance
counters shared between all 3D programs, and their values are not saved
or restored by hardware contexts.  Also, at least on Sandybridge and
Ivybridge, the counters lose their values if the GPU goes to sleep.

To work around both of these problems, we have to snapshot the
performance counters at the beginning and end of each batch, similar to
how we handle query objects on platforms that don't support hardware
contexts.  I call these "bookend" snapshots.

Since there can be multiple performance monitors active at a time, we
store the bookend snapshots in a global BO, shared by all monitors.

For monitors that span multiple batches, acquiring results involves
adding up three segments:

   BeginPerfMonitor   --> End of Batch 1    ("head")
   Start of Batch 2   --> End of Batch 2
                      ...                   ("middle")
   Start of Batch N-1 --> End of Batch N-1
   Start of Batch N   --> EndPerfMonitor    ("tail")

Monitors that refer to bookend BO snapshots are considered "unresolved".
We delay resolving them (and adding up deltas to obtain the results) as
long as possible to avoid blocking on mapping monitor->oa_bo.

We can also run out of space in the bookend BO, at which point we have
to resolve all unresolved monitors.  Then we can throw away the
snapshots and begin writing at the beginning of the buffer.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Reserve batchbuffer space for a closing MI_REPORT_PERF_COUNT.
Kenneth Graunke [Tue, 22 Oct 2013 18:21:43 +0000 (11:21 -0700)]
i965: Reserve batchbuffer space for a closing MI_REPORT_PERF_COUNT.

In order to use the Observability Architecture effectively, we'll need
to take snapshots of the OA counters via MI_REPORT_PERF_COUNT at the
start and end of each batch.

Experimentation reveals that we need to flush before and after each
MI_REPORT_PERF_COUNT to get working values.  For simplicitly, I chose to
use intel_batchbuffer_emit_mi_flush(), which unfortunately expands to
triple pipe controls on Sandybridge.

We may want to start computing per-generation reserved batch space to
avoid the insanity of Sandybridge's PIPE_CONTROL cost.  That said, much
of this cost existed before I rewrote the query object support to use
hardware contexts, so it's at least not entirely new.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add some plumbing for gathering OA results.
Kenneth Graunke [Wed, 13 Nov 2013 23:13:59 +0000 (15:13 -0800)]
i965: Add some plumbing for gathering OA results.

Currently, this only considers the monitor start and end snapshots.
This is woefully insufficient, but allows me to add a bunch of the
infrastructure now and flesh it out later.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Start and stop OA counters as necessary.
Kenneth Graunke [Sun, 3 Nov 2013 03:58:10 +0000 (20:58 -0700)]
i965: Start and stop OA counters as necessary.

We need to start OA at the beginning of each batch where monitors are
active.  OACONTROL isn't part of the hardware context, so to avoid
leaving counters enabled for other applications, we turn them off at the
end of the batch too.

We also need to start them at BeginPerfMonitor time (unless they've
already been started).  We stop them when the monitor last ends as well.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add functions to start and stop the OA counters.
Kenneth Graunke [Wed, 13 Nov 2013 21:14:46 +0000 (13:14 -0800)]
i965: Add functions to start and stop the OA counters.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add #defines for the OACONTROL register and fields.
Kenneth Graunke [Wed, 27 Mar 2013 21:46:05 +0000 (14:46 -0700)]
i965: Add #defines for the OACONTROL register and fields.

We'll need to write this register to start/stop performance counters.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Take OA counter snapshots at Begin/EndPerfMonitor time.
Kenneth Graunke [Sun, 3 Nov 2013 03:16:58 +0000 (20:16 -0700)]
i965: Take OA counter snapshots at Begin/EndPerfMonitor time.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add a function to emit the MI_REPORT_PERF_COUNT packet.
Kenneth Graunke [Sun, 3 Nov 2013 01:48:18 +0000 (18:48 -0700)]
i965: Add a function to emit the MI_REPORT_PERF_COUNT packet.

MI_REPORT_PERF_COUNT writes a snapshot of the Observability Architecture
counters to a buffer.  Exactly how it works varies between generations:
Ironlake requires two packets, Sandybridge has to use GGTT, and Ivybridge
and later use PPGTT.

v2: Assert that we didn't use more space than we reserved (suggested
    by Eric Anholt).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Track the number of monitors that need OA counters.
Kenneth Graunke [Sun, 3 Nov 2013 02:44:49 +0000 (19:44 -0700)]
i965: Track the number of monitors that need OA counters.

Using the OA counters requires some per-batch work.  When starting and
ending a batch, it's useful to know whether any monitors are actually
interested in OA data.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Enumerate Observability Architecture counters on Gen5+.
Kenneth Graunke [Sun, 3 Nov 2013 02:10:19 +0000 (19:10 -0700)]
i965: Enumerate Observability Architecture counters on Gen5+.

In addition to listing the counter names, we include several "remap"
tables.  Confusingly, counters are documented with names like "A23",
are written to some buffer offset other than 23, and exposed by core
Mesa under a counter ID that is different still.

The first is inevitable; MI_REPORT_PERF_COUNT writes certain counters to
fixed locations in the buffer.  The latter could be avoided, but core
Mesa uses the "Counters" array index as the ID for a counter.  We could
do remapping there, but it would just complicate the core Mesa code.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Expose pipeline statistics registers via performance monitors.
Kenneth Graunke [Thu, 31 Oct 2013 23:27:01 +0000 (16:27 -0700)]
i965: Expose pipeline statistics registers via performance monitors.

This is fairly simple:
- At BeginPerfMonitor time, take an opening snapshot.
- At EndPerfMonitor time, take a closing snapshot.
- The first time the application asks for results, subtract the two and
  store that value.  Then free the BO containing the snapshots.
- On subsequent requests for the results, just return the saved value.
- On reset, throw away the results.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Enumerate the pipeline statistics register counters on Gen6+.
Kenneth Graunke [Thu, 31 Oct 2013 23:02:35 +0000 (16:02 -0700)]
i965: Enumerate the pipeline statistics register counters on Gen6+.

For now, we only support these on Gen6+, since that's what currently
uses hardware contexts.  When we add Ironlake hardware context support,
we can add pipeline statistics register support for that as well.

In theory, we could support pipeline statistics counters even without
hardware contexts, but it would be annoyingly painful.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Initialize performance monitor Groups/NumGroups.
Kenneth Graunke [Thu, 31 Oct 2013 23:00:23 +0000 (16:00 -0700)]
i965: Initialize performance monitor Groups/NumGroups.

Since we don't support any counters, there are zero groups.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add macros for creating performance monitor counters and groups.
Kenneth Graunke [Thu, 31 Oct 2013 22:50:19 +0000 (15:50 -0700)]
i965: Add macros for creating performance monitor counters and groups.

The Observability Architecture counters are 32-bit unsigned values, and
the Pipeline Statistics Register counters are 64-bit unsigned values.

These convenience macros make it easy to create those types of counters.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Periodically dump the list of monitors if INTEL_DEBUG=perfmon.
Kenneth Graunke [Sun, 3 Nov 2013 02:42:54 +0000 (19:42 -0700)]
i965: Periodically dump the list of monitors if INTEL_DEBUG=perfmon.

It's useful to see the state of all outstanding monitors; the start
of a new batch seems like a reasonable time to print them out.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add basic driver hooks and plumbing for AMD_performance_monitor.
Kenneth Graunke [Thu, 31 Oct 2013 22:42:09 +0000 (15:42 -0700)]
i965: Add basic driver hooks and plumbing for AMD_performance_monitor.

These stub functions will be filled out in later patches.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add INTEL_DEBUG=perfmon support.
Kenneth Graunke [Thu, 31 Oct 2013 06:17:23 +0000 (23:17 -0700)]
i965: Add INTEL_DEBUG=perfmon support.

This will enable debugging printfs for the AMD_performance_monitor code.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Move brw_emit_query_begin() to the render ring prelude.
Kenneth Graunke [Wed, 16 Oct 2013 02:32:53 +0000 (19:32 -0700)]
i965: Move brw_emit_query_begin() to the render ring prelude.

Without hardware contexts, the pipeline statistics registers are
free-running and include data from every 3D application running.

In order to find out the contributions of one particular context, we
need to take a snapshot at the start and end of each batch.

Previously, we emitted the PIPE_CONTROL necessary to capture
PS_DEPTH_COUNT when drawing primitives.  Special tracking ensured it
happened only on the first draw of the batch, rather than on every draw.

Moving this to brw_new_batch increases symmetry, since the final
snapshot has always been in brw_finish_batch, which is just a few lines
below.  It should be basically equivalent.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Introduce a "render ring prelude" hook.
Kenneth Graunke [Tue, 29 Oct 2013 03:10:40 +0000 (20:10 -0700)]
i965: Introduce a "render ring prelude" hook.

The new intel_batchbuffer_emit_render_ring_prelude() hook will be called
when switching from BLT or UNKNOWN_RING to RENDER_RING.  This provides a
place to emit state that should go at the start of each render ring
batch, with minimal overhead.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Introduce an UNKNOWN_RING state.
Kenneth Graunke [Thu, 21 Nov 2013 22:07:12 +0000 (14:07 -0800)]
i965: Introduce an UNKNOWN_RING state.

When we first create a batch buffer, it's empty.  We don't actually
know what ring it will be targeted at until the first BEGIN_BATCH or
BEGIN_BATCH_BLT macro.

Previously, one could determine the state of the batch by checking
brw->batch.ring (blit vs. render) and brw->batch.used != 0 (known vs.
unknown).

This should be functionally equivalent, but the tri-state enum is a bit
clearer.

v2: Catch three explicit require_space callers (thanks to Carl and Eric).
v3: Split the boolean -> enum change from the UNKNOWN_RING change.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Convert brw->batch.is_blit to a BLT_RING/RENDER_RING enum.
Kenneth Graunke [Mon, 28 Oct 2013 23:06:10 +0000 (16:06 -0700)]
i965: Convert brw->batch.is_blit to a BLT_RING/RENDER_RING enum.

Passing BLT_RING or RENDER_RING to batchbuffer functions is a lot more
obvious than passing true or false.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agollvmpipe: calculate more accurate interpolation value at origin
Roland Scheidegger [Wed, 20 Nov 2013 05:17:56 +0000 (05:17 +0000)]
llvmpipe: calculate more accurate interpolation value at origin

Some rounding errors could crop up when calculating a0. Use a more accurate
method (barycentric interpolation essentially) to fix this, though to fix
the REAL problem (which is that our interpolation will give very bad results
with small triangles far away from the origin when they have steep gradients)
this does absolutely nothing (actually makes it worse). (To fix the real
problem, either would need to use a vertex corner (or some other point inside
the tri) as starting point value instead of fb origin and pass that down to
interpolation, or mimic what hw does, use barycentric interpolation (using
the coordinates extracted from the rasterizer edge functions) - maybe another
time.)
Some (silly) tests though really want a high accuracy at fb origin and don't
care much about anything else (Just. Don't. Ask.).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
10 years agosvga: remove special-case code for texkil w component
Brian Paul [Thu, 21 Nov 2013 00:07:31 +0000 (16:07 -0800)]
svga: remove special-case code for texkil w component

Not actually needed.  Fixes piglit ARB_fragment_program/kil-swizzle test.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
10 years agogallium: Make TGSI_SEMANTIC_FOG register four-component wide.
José Fonseca [Wed, 20 Nov 2013 15:22:31 +0000 (15:22 +0000)]
gallium: Make TGSI_SEMANTIC_FOG register four-component wide.

D3D9 Shader Model 2 restricted the fog register to one component,
http://msdn.microsoft.com/en-us/library/windows/desktop/bb172945.aspx ,
but that restriction no longer exists in Shader Model 3, and several
WHCK tests enforce that.

So this change:
- lifts the single-component restriction TGSI_SEMANTIC_FOG
  from Gallium interface
- updates the Mesa state tracker to enforce output fog has (f, 0, 0, 1)
- draw module was updated to leave TGSI_SEMANTIC_FOG output registers
  alone

Several gallium drivers that are going out of their way to clear
TGSI_SEMANTIC_FOG components could be simplified in the future.

Thanks to Si Chen and Michal Krol for identifying the problem.

Testing done: piglit fogcoord-*.vpfp tests

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
10 years agotgsi_exec: Fix mask calculation for emit_kill_if.
José Fonseca [Wed, 20 Nov 2013 17:31:43 +0000 (17:31 +0000)]
tgsi_exec: Fix mask calculation for emit_kill_if.

Same as Si Chen's commit e7a5905d8a3960b0981750f8131e3af9acbfcdb8 for
tgsi_exec module.

Not actually tested, because softpipe is failing the test that caught
this bug due to unrelated issues.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
10 years agomesa: Use IROUND instead of roundf.
José Fonseca [Thu, 21 Nov 2013 13:56:00 +0000 (13:56 +0000)]
mesa: Use IROUND instead of roundf.

roundf is not available on MSVC.

10 years agomesa: enable GL_TEXTURE_LOD_BIAS set/get
Tapani Pälli [Wed, 20 Nov 2013 11:27:10 +0000 (13:27 +0200)]
mesa: enable GL_TEXTURE_LOD_BIAS set/get

Earlier comments suggest this was removed from GL core spec but it is
still there. Enabling makes 'texture_lod_bias_getter' Khronos
conformance tests pass, also removes some errors from Metro Last Light
game which is using this API.

v2: leave NOTE comment (Ian)

Cc: "9.0 9.1 9.2 10.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
10 years agowinsys/radeon: cleanup virtual memory nonsense
Christian König [Tue, 19 Nov 2013 09:47:36 +0000 (10:47 +0100)]
winsys/radeon: cleanup virtual memory nonsense

The alignment of a virtual memory area must always be at least 4096 bytes.

It only worked because size was aligned to 4096 outside of the function.

Signed-off-by: Christian König <christian.koenig@amd.com>
10 years agomesa: Update MESA_INFO to eliminate error
Courtney Goeltzenleuchter [Thu, 24 Oct 2013 19:13:57 +0000 (13:13 -0600)]
mesa: Update MESA_INFO to eliminate error

If a user set MESA_INFO and the OpenGL application uses a
3.0 or later context then the MESA_INFO debug output will have
an error when it queries for extensions using the deprecated
enum GL_EXTENSIONS. Passing context argument allows code
to return extension list directly regardless of profile.
Commit title updated as recommended by Kenneth Graunke.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965: Disable BLORP on Broadwell for now.
Kenneth Graunke [Thu, 29 Nov 2012 21:35:15 +0000 (13:35 -0800)]
i965: Disable BLORP on Broadwell for now.

BLORP is essential.  However, porting it to Gen8 is a huge amount of
work.  Disabling it for now allows us to proceed with basic hardware
enablement.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Disable HiZ on Broadwell for now.
Kenneth Graunke [Sat, 15 Dec 2012 01:56:40 +0000 (17:56 -0800)]
i965: Disable HiZ on Broadwell for now.

HiZ is difficult to implement, and while it's essential for performance,
we don't need it right away for purposes of hardware enabling.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Claim OpenGL 3.3 support on Broadwell.
Kenneth Graunke [Fri, 1 Nov 2013 18:45:47 +0000 (11:45 -0700)]
i965: Claim OpenGL 3.3 support on Broadwell.

Bugs aside, basically everything ought to work.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add device info structs for Broadwell.
Kenneth Graunke [Fri, 1 Nov 2013 18:44:09 +0000 (11:44 -0700)]
i965: Add device info structs for Broadwell.

As always, the chipset limits here are placeholders, rather than the
actual values.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoglsl: Use more portable bash invocation construct.
Vinson Lee [Sat, 12 Oct 2013 01:33:08 +0000 (18:33 -0700)]
glsl: Use more portable bash invocation construct.

Fixes 'make check' on distros where bash is not at /bin/bash.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agogallivm: Ignore unknown file type in non-debug builds.
Vinson Lee [Wed, 20 Nov 2013 07:16:34 +0000 (23:16 -0800)]
gallivm: Ignore unknown file type in non-debug builds.

Fixes "Uninitialized pointer read" defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
10 years agoglx: don't fail out when no configs if we have visuals
Dave Airlie [Mon, 18 Nov 2013 07:34:52 +0000 (17:34 +1000)]
glx: don't fail out when no configs if we have visuals

GLX 1.2 servers with no SGIX_fbconfigs exist (some citrix thing),
and we fail glxinfo completely in those cases.

CC: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
10 years agomesa/swrast: fix inverted front buffer rendering with old-school swrast
Dave Airlie [Wed, 13 Nov 2013 02:53:52 +0000 (12:53 +1000)]
mesa/swrast: fix inverted front buffer rendering with old-school swrast

I've no idea when this broke, but we have some people who wanted it fixed,
so here's my attempt.

reproducer, run readpix with swrast hit f, or run trival tri -sb things are
upside down, after this patch they aren't.

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

Cc: <mesa-stable@lists.freedesktop.org>"
Signed-off-by: Dave Airlie <airlied@redhat.com>
10 years agomesa: Fix setup of LocalParams array.
Eric Anholt [Mon, 18 Nov 2013 17:55:00 +0000 (09:55 -0800)]
mesa: Fix setup of LocalParams array.

i965 passed piglit, but swrast and gallium both segfaulted without this.
i965 happened to work because it never ran _mesa_load_state_parameters()
on the new program before the test called glProgramLocalParameter(), which
was allocating a LocalParams array for the fallback path.

v2: Since v1 threw away old localparams data, leaked old LocalParams
    memory, only fixed fragment programs, and I was dubious of my previous
    invariants already (nothing but program_parse.y will generate
    LocalParams, and only that one path of program_parse.y will), just
    late-allocate localparams at the other point of dereferencing them.
    This adds overhead to _mesa_load_state_parameter, which is
    uncomfortable, but I'm pretty sure that giant switch statement is
    super slow already.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71734
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
10 years agoi965/test: Use unreachable() to silence warning.
Matt Turner [Mon, 18 Nov 2013 23:20:01 +0000 (15:20 -0800)]
i965/test: Use unreachable() to silence warning.

10 years agoi965: Link -ldl after libmesa.la
Matt Turner [Mon, 18 Nov 2013 23:19:15 +0000 (15:19 -0800)]
i965: Link -ldl after libmesa.la

DLOPEN_LIBS is part of DRI_LIB_DEPS.

Cc: "10.0" <mesa-stable@lists.freedesktop.org>"
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71512
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965: Add a pass to remove dead control flow.
Matt Turner [Wed, 30 Oct 2013 17:32:12 +0000 (10:32 -0700)]
i965: Add a pass to remove dead control flow.

Removes IF/ENDIF and IF/ELSE/ENDIF with no intervening instructions.

total instructions in shared programs: 1360393 -> 1360387 (-0.00%)
instructions in affected programs:     157 -> 151 (-3.82%)

(no change in vertex shaders)

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965: Make invalidate_live_intervals() a virtual method of backend_visitor.
Matt Turner [Mon, 11 Nov 2013 18:36:36 +0000 (10:36 -0800)]
i965: Make invalidate_live_intervals() a virtual method of backend_visitor.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965/vec4: Add invalidate_live_intervals method.
Matt Turner [Mon, 11 Nov 2013 18:33:46 +0000 (10:33 -0800)]
i965/vec4: Add invalidate_live_intervals method.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965/fs: Don't emit SIMD16 BFI instructions.
Matt Turner [Sat, 16 Nov 2013 21:16:50 +0000 (13:16 -0800)]
i965/fs: Don't emit SIMD16 BFI instructions.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965/fs: Emit compressed 3-source instructions on Haswell.
Matt Turner [Sat, 16 Nov 2013 20:31:26 +0000 (12:31 -0800)]
i965/fs: Emit compressed 3-source instructions on Haswell.

For commit 4df56177 Paul discovered that the hardware restriction that
Align16 instructions cannot be compressed was lifted on Haswell. This
has prevented us from emitting compressed three-source instructions.

For added confirmation, the bspec lists a work around called
WaBreakSimd16TernaryInstructionsIntoSimd8 that hasn't been applicable
since very early Haswell silicon.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965: Fix disassembled names of BFI1 and BFI2 instructions.
Matt Turner [Sat, 16 Nov 2013 21:03:55 +0000 (13:03 -0800)]
i965: Fix disassembled names of BFI1 and BFI2 instructions.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965/fs: Use source's original type in register_coalesce().
Matt Turner [Fri, 15 Nov 2013 19:09:47 +0000 (11:09 -0800)]
i965/fs: Use source's original type in register_coalesce().

Previously, register_coalesce() would modify

   mov   vgrf1:f  vgrf2:f
   cmp   null     vgrf3:d  vgrf1:d

to be

   cmp   null     vgrf3:d  vgrf2:f

and incorrectly use vgrf2's type in the instruction that the mov was
coalesced into.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agou_gen_mipmap: Use untampered cubemap texture coords when generating mipmaps.
José Fonseca [Tue, 19 Nov 2013 18:54:53 +0000 (18:54 +0000)]
u_gen_mipmap: Use untampered cubemap texture coords when generating mipmaps.

It's not necessary to scale down cubemap texture coords when generating
mipmaps: we are doing a 2x minification therefore it's guaranteed that
the texture coords will always be at least 1 texel away of the edges.

Scaling down can actually be harmful, as it may cause artefacts when
generating mipmaps with nearest filtering.  Sample points will lie
exactly in the middle each 2x2 texels, so the scaling factor was causing
different texels to be take on each quadrant of the cube face.  This is
apparent with a 1x1 checkerboard pattern in the base mipmap level:
instead of next mipmap level receiving a constant color throughout the
face, it will have different colors for each quadrant of the face.

The behaviour for blits is left untouched for now, but the cubemap
texture coord scaling hack should be reconsidered eventually.

Reviewed-by: Brian Paul <brianp@vmware.com>
10 years agost/mesa: fix GL_FEEDBACK mode inverted Y coordinate bug
Brian Paul [Tue, 19 Nov 2013 20:09:57 +0000 (13:09 -0700)]
st/mesa: fix GL_FEEDBACK mode inverted Y coordinate bug

We need to check the drawbuffer's orientation before inverting Y
coordinates.  Fixes piglit feedback tests when running with the
-fbo option.

Cc: "9.2" "10.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
10 years agogallivm: Fix mask calculation for emit_kill_if.
Si Chen [Thu, 14 Nov 2013 17:17:13 +0000 (09:17 -0800)]
gallivm: Fix mask calculation for emit_kill_if.

The exec_mask must be taken in consideration, just like emit_kill above.

The tgsi_exec module has the same bug and should be fixed in a future
change.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
10 years agoi965/gen7: Disallow Y tiling of renderable surfaces with valign of 2.
Paul Berry [Wed, 13 Nov 2013 01:51:15 +0000 (17:51 -0800)]
i965/gen7: Disallow Y tiling of renderable surfaces with valign of 2.

Gen7 does not allow render targets to have a vertical alignment of 2.
So, when creating a surface, if its format is renderable, and its
vertical alignment is 2, force it to use X tiling.

Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoi965/gen7: Prefer vertical alignment of 4 when possible.
Paul Berry [Wed, 13 Nov 2013 01:16:25 +0000 (17:16 -0800)]
i965/gen7: Prefer vertical alignment of 4 when possible.

Gen6+ allows for color buffers to use a vertical alignment of either 4
or 2.  Previously we defaulted to 2.  This may have caused problems on
Gen7 because Y-tiled render targets are not allowed to use a vertical
alignment of 2.

This patch changes the vertical alignment to 4 on Gen7, except for the
few formats where a vertical alignment of 2 is required.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965/vec4: Fix broken IR annotation in debug output.
Paul Berry [Wed, 6 Nov 2013 05:44:13 +0000 (21:44 -0800)]
i965/vec4: Fix broken IR annotation in debug output.

Commit 70953b5 (i965: Initialize all member variables of
vec4_instruction on construction) inadvertently added a line to the
vec4_instruction constructor setting this->ir to NULL, wiping out the
previously set value.  As a result, ever since then, the output of
INTEL_DEBUG=vs and INTEL_DEBUG=gs has been missing IR annotations.

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agosvga: improve check for 3D compressed textures
Brian Paul [Tue, 19 Nov 2013 15:54:17 +0000 (07:54 -0800)]
svga: improve check for 3D compressed textures

This is basically a a respin of f1dfcf4bce35e6796f873d9a00103b280da81e4c
per Jose's suggestion.

Just set the SVGA3dSurfaceFormatCaps flags for 3D and cube textures
when checking the texture format capabilities.  This will filter out
unsupported combinations like 3D+DXT.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
10 years agoglx/tests: Provide __glXGetCurrentContext() stub when needed
Jon TURNEY [Tue, 12 Nov 2013 22:54:35 +0000 (22:54 +0000)]
glx/tests: Provide __glXGetCurrentContext() stub when needed

Refine 8c533022.  Provide a stub __glXGetCurrentContext() function when
$(DEFINES) are such that it is not a macro.

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
10 years agosvga: we don't supported 3D compressed textures
Brian Paul [Mon, 18 Nov 2013 22:50:33 +0000 (14:50 -0800)]
svga: we don't supported 3D compressed textures

Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
10 years agost/mesa: pass correct pipe_texture_target to st_choose_format()
Brian Paul [Mon, 18 Nov 2013 22:51:43 +0000 (14:51 -0800)]
st/mesa: pass correct pipe_texture_target to st_choose_format()

We were always passing PIPE_TEXTURE_2D, but not all formats are
supported for all types of textures.  In particular, the driver may
not supported texture compression for all types of textures.

Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
10 years agor600g/compute: Fix handling of global buffers in r600_resource_copy_region()
Tom Stellard [Thu, 14 Nov 2013 15:28:09 +0000 (07:28 -0800)]
r600g/compute: Fix handling of global buffers in r600_resource_copy_region()

Global buffers do not have an associate cs_buf handle, so
we can't copy them using r600_copy_buffer()

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

Reviewed-by: Marek Ol????k <marek.olsak@amd.com>
CC: "10.0" <mesa-stable@lists.freedesktop.org>
10 years agogallium: Pass version scripts to linker using --version-script=
Tom Stellard [Tue, 12 Nov 2013 19:29:21 +0000 (11:29 -0800)]
gallium: Pass version scripts to linker using --version-script=

This fixes build failures with the gold linker.

CC: "10.0" <mesa-stable@lists.freedesktop.org>
10 years agoclover: Optionally return context's devices from clGetProgramInfo()
Tom Stellard [Fri, 15 Nov 2013 23:50:34 +0000 (15:50 -0800)]
clover: Optionally return context's devices from clGetProgramInfo()

The spec allows clGetProgramInfo() to return information about either
the devices associated with the program or the devices associated
with the context.  If there are no devices associated with the program,
then we return devices associated with the context.

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

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
CC: "10.0" <mesa-stable@lists.freedesktop.org>
10 years agoi965/gen7: Emit workaround flush when changing GS enable state.
Paul Berry [Tue, 5 Nov 2013 04:06:48 +0000 (20:06 -0800)]
i965/gen7: Emit workaround flush when changing GS enable state.

v2: Don't go to extra work to avoid extraneous flushes.  (Previous
experiments in the kernel have suggested that flushing the pipeline
when it is already empty is extremely cheap).

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
10 years agoosmesa: add missing comma
Brian Paul [Mon, 18 Nov 2013 16:14:48 +0000 (09:14 -0700)]
osmesa: add missing comma

10 years agoosmesa: add support for postprocess filters
Brian Paul [Sat, 16 Nov 2013 20:55:50 +0000 (13:55 -0700)]
osmesa: add support for postprocess filters

Add new OSMesaPostprocess() function to allow using the gallium
postprocessing filters.  This only works for OSMesa with gallium
drivers, not the legacy swrast OSMesa.

Bump OSMESA_MAJOR/MINOR_VERSION numbers to 10.0

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
10 years agopostprocess: document the pp_init() function.
Brian Paul [Sat, 16 Nov 2013 20:55:50 +0000 (13:55 -0700)]
postprocess: document the pp_init() function.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
10 years agopostprocess: move #defines to filters.h
Brian Paul [Sat, 16 Nov 2013 20:55:50 +0000 (13:55 -0700)]
postprocess: move #defines to filters.h

They're not needed in postprocess.h

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
10 years agopostprocess: refactor header files, etc
Brian Paul [Sat, 16 Nov 2013 20:55:50 +0000 (13:55 -0700)]
postprocess: refactor header files, etc

Move private data structures and function prototypes out of the
public postprocess.h header file.
Create a pp_private.h for the shared, private data structures, functions.
Remove pp_program.h header.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
10 years agopostprocess: rename program to pp_program
Brian Paul [Sat, 16 Nov 2013 20:55:44 +0000 (13:55 -0700)]
postprocess: rename program to pp_program

To match the pp_ namespace convention.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
10 years agopostprocess: simplify pp_free() code
Brian Paul [Sat, 16 Nov 2013 20:55:40 +0000 (13:55 -0700)]
postprocess: simplify pp_free() code

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
10 years agodocs: indicate GLX_MESA_query_renderer's completion
Emil Velikov [Sat, 16 Nov 2013 22:59:29 +0000 (22:59 +0000)]
docs: indicate GLX_MESA_query_renderer's completion

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Acked-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
10 years agodocs: update nv50, nvc0 current status
Emil Velikov [Sat, 16 Nov 2013 22:26:09 +0000 (22:26 +0000)]
docs: update nv50, nvc0 current status

Acked-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
10 years agodocs: restructure GL3.txt
Joerg Mayer [Sat, 16 Nov 2013 22:13:03 +0000 (22:13 +0000)]
docs: restructure GL3.txt

- Indent items under a GL version to allow context diffs to do their work.
- Move complete drivers into the GL version line - this should make the
  stuff a little bit easier to read.

v2: keep the fd.o link (Emil Velikov)

Acked-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Joerg Mayer <jmayer@loplof.de>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
10 years agodocs: add a note about removed state tracker/targets
Emil Velikov [Sat, 16 Nov 2013 21:53:04 +0000 (21:53 +0000)]
docs: add a note about removed state tracker/targets

The X.Org state tracker is gone, as well as the xvmc/vdpau
r300 and softpipe targets.

Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Acked-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
10 years agotargets/xvmc: export only necessary symbols
Emil Velikov [Sat, 16 Nov 2013 21:29:07 +0000 (21:29 +0000)]
targets/xvmc: export only necessary symbols

Export only XvMC* symbols for the xvmc targets.

Tested-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
10 years agodrivers/radeon: remove unused CXXFLAGS, LLVM_CPP_FILES
Emil Velikov [Sat, 16 Nov 2013 18:37:52 +0000 (18:37 +0000)]
drivers/radeon: remove unused CXXFLAGS, LLVM_CPP_FILES

The above two variables are unused as of commit

  commit 024fe6852a76f33d7e2afc5621340e387c381bb0
  Author: Tom Stellard <thomas.stellard@amd.com>
  Date:   Tue Apr 2 10:42:50 2013 -0700

      radeon/llvm: Use LLVM C API for compiling LLVM IR to ISA v2

which removed the only cpp file from drivers/radeon, but missed to
remove the CXXFLAGS. The sequential commit reintroduced and empty
LLVM_CPP_FILES.

Lets cleanup and remove both.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
10 years agomesa/main: Move declaration to beginning of scope.
José Fonseca [Mon, 18 Nov 2013 14:43:31 +0000 (14:43 +0000)]
mesa/main: Move declaration to beginning of scope.

Should fix MSVC build.

Trivial.

10 years agomesa: Add API debug logging to TexStorage
Courtney Goeltzenleuchter [Tue, 5 Nov 2013 21:25:06 +0000 (14:25 -0700)]
mesa: Add API debug logging to TexStorage

Give glTexStorage* equivalent debug logging to glTexImage*.

Signed-off-by: Courtney Goeltzenleuchter <courtney@LunarG.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoglsl: cleanup, remove duplicate assignment
Tapani Pälli [Fri, 1 Nov 2013 10:22:01 +0000 (12:22 +0200)]
glsl: cleanup, remove duplicate assignment

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agomesa: Handle !m->Ended for performance monitor result availability.
Kenneth Graunke [Thu, 14 Nov 2013 01:15:23 +0000 (17:15 -0800)]
mesa: Handle !m->Ended for performance monitor result availability.

If a performance monitor has never ended, then no result can be
available.  Core Mesa can easily handle this, saving drivers a tiny bit
of complexity.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agomesa: Track whether a performance monitor has ever ended.
Kenneth Graunke [Thu, 14 Nov 2013 01:12:37 +0000 (17:12 -0800)]
mesa: Track whether a performance monitor has ever ended.

If a monitor has ended, it means a result should eventually become
available, pending some flushing.

This is distinct from !m->Active; if a monitor has not been started,
then m->Active == false and m->Ended == false.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agomesa: Also initialize gl_performance_monitor::Active.
Kenneth Graunke [Thu, 14 Nov 2013 01:08:32 +0000 (17:08 -0800)]
mesa: Also initialize gl_performance_monitor::Active.

The i965 implementation uses calloc, so I missed this.  It's best to
simply initialize it to avoid requiring a zeroing allocator, though.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agomesa: Store the performance monitor object's name.
Kenneth Graunke [Thu, 31 Oct 2013 06:12:36 +0000 (23:12 -0700)]
mesa: Store the performance monitor object's name.

Being able to print monitor->Name is really useful for debugging.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agomesa: bump version to 10.1 (devel)
Chris Forbes [Sun, 17 Nov 2013 06:38:07 +0000 (19:38 +1300)]
mesa: bump version to 10.1 (devel)

Now that branch 10.0 is created, bump the minor version in
master.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agoi965: Fix broken asserts
Chris Forbes [Sun, 17 Nov 2013 01:57:51 +0000 (14:57 +1300)]
i965: Fix broken asserts

These would never fire.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agost/vega: Fix broken assert
Chris Forbes [Sun, 17 Nov 2013 01:57:51 +0000 (14:57 +1300)]
st/vega: Fix broken assert

This would never fire.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agor600/sb: Fix broken assert
Chris Forbes [Sun, 17 Nov 2013 01:57:51 +0000 (14:57 +1300)]
r600/sb: Fix broken assert

This would never fire.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
10 years agor600g/sb: work around hw issues with stack on eg/cm
Vadim Girlin [Fri, 15 Nov 2013 17:24:53 +0000 (18:24 +0100)]
r600g/sb: work around hw issues with stack on eg/cm

v2: make it actually work, improve condition

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68503
Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
10 years agoi965: Make swizzle_to_scs non-static.
Kenneth Graunke [Tue, 15 Jan 2013 05:26:28 +0000 (21:26 -0800)]
i965: Make swizzle_to_scs non-static.

We'll need this for Broadwell code as well.

Normally, when we make things public, we add the "brw" prefix.  I'm not
crazy about that in this case, since it deals with prog_instruction.h's
SWIZZLE_XYZW values, rather than the BRW_SWIZZLE_XYZW enums.  However,
I can't think of a better name, and at least the comments and code make
it clear.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Acked-by: Anuj Phogat <anuj.phogat@gmail.com>
10 years agoi965: Move enum brw_urb_write_flags from brw_eu.h to brw_defines.h.
Kenneth Graunke [Fri, 1 Nov 2013 19:50:16 +0000 (12:50 -0700)]
i965: Move enum brw_urb_write_flags from brw_eu.h to brw_defines.h.

Broadwell code should not include brw_eu.h (since it is for Gen4-7
assembly encoding), but needs the URB write flags enum.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Acked-by: Anuj Phogat <anuj.phogat@gmail.com>
10 years agoi965/fs: Remove force_sechalf stack
Kenneth Graunke [Tue, 1 Jan 2013 23:09:26 +0000 (15:09 -0800)]
i965/fs: Remove force_sechalf stack

Only Gen4 color write setup uses the force_sechalf flag, and it only
sets it on a single instruction.  It also already has to get a pointer
to the instruction and manually set the saturate flag, so we may as well
just set force_sechalf the same way and avoid the complexity of a stack.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Acked-by: Anuj Phogat <anuj.phogat@gmail.com>
10 years agotargets/dri: move linker flags out of configure into Automake.inc
Emil Velikov [Sat, 9 Nov 2013 23:00:14 +0000 (23:00 +0000)]
targets/dri: move linker flags out of configure into Automake.inc

Previous assumption was that the same set of flags can be reused
for both classic and gallium drivers. With megadriver work done
the classic drivers ended up using their own (single) instance of
the flags.

Move these into Automake.inc and rename to indicate that those
are gallium specific. Additionally silence an automake/autoconf
warning "XXX is not a standard libtool library name", due to
the parsing issues of the module tag.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
10 years agotargets/dri: compact compiler flags into Automake.inc
Emil Velikov [Sat, 2 Nov 2013 15:33:07 +0000 (15:33 +0000)]
targets/dri: compact compiler flags into Automake.inc

Greatly reduce duplication and provide a sane minimum of
CFLAGS for all DRI targets.

Note: This commit adds VISIBILITY_CFLAGS to the following:
* freedreno
* i915
* ilo
* nouveau
* vmwgfx

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>