mesa.git
7 years agoac/nir: assert printfs will fit
James Legg [Fri, 23 Jun 2017 10:18:57 +0000 (11:18 +0100)]
ac/nir: assert printfs will fit

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agoac/nir: Make intrinsic_name buffer long enough
James Legg [Fri, 23 Jun 2017 10:18:56 +0000 (11:18 +0100)]
ac/nir: Make intrinsic_name buffer long enough

When using cmpswap on an image, it was being trunctated to
lvm.amdgcn.image.atomic.cmpswa, with the coords type missing entirely.

v2: Add stable CC

CC: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
7 years agoi965/dri: Support R8G8B8A8 and R8G8B8X8 configs
Chad Versace [Sat, 27 May 2017 02:08:47 +0000 (19:08 -0700)]
i965/dri: Support R8G8B8A8 and R8G8B8X8 configs

The Android framework requires support for EGLConfigs with
HAL_PIXEL_FORMAT_RGBX_8888 and HAL_PIXEL_FORMAT_RGBA_8888.

Even though all RGBX formats are disabled on gen9 by
brw_surface_formats.c, the new configs work correctly on Broxton thanks
to _mesa_format_fallback_rgbx_to_rgba().

On GLX, this creates no new configs, and therefore breaks no existing
apps. See in-patch comments for explanation. I tested with glxinfo and
glxgears on Skylake.

On Wayland, this also creates no new configs, and therfore breaks no
existing apps. (I tested with mesa-demos' eglinfo and es2gears_wayland
on Skylake). The reason differs from GLX, though. In
dri2_wl_add_configs_for_visual(), the format table contains only
B8G8R8X8, B8G8R8A8, and B5G6B5; and dri2_add_config() correctly matches
EGLConfig to format by inspecting channel masks.

On Android, in Chrome OS, I tested this on a Broxton device. I confirmed
that the Google Play Store's EGLSurface used HAL_PIXEL_FORMAT_RGBA_8888,
and that an Asteroid game's EGLSurface used HAL_PIXEL_FORMAT_RGBX_8888.
Both apps worked well. (Disclaimer: I didn't test this patch on Android
with Mesa master. I backported this patch series to an older Android
branch).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agomesa: do not use format string as literal string
Juan A. Suarez Romero [Wed, 28 Jun 2017 11:40:48 +0000 (13:40 +0200)]
mesa: do not use format string as literal string

This fixes a couple of  errors when building in Android:

external/mesa3d/src/mesa/main/shaderapi.c:293:49: error: format string
is not a string literal (potentially insecure)
[-Werror,-Wformat-security]
         _mesa_error(ctx, GL_INVALID_OPERATION, caller);
                                                ^~~~~~
external/mesa3d/src/mesa/main/shaderapi.c:293:49: note: treat the string
as an argument to avoid this
         _mesa_error(ctx, GL_INVALID_OPERATION, caller);
                                                ^
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
7 years agoscons: add code to generate format_fallback.c file
Brian Paul [Wed, 28 Jun 2017 02:56:22 +0000 (20:56 -0600)]
scons: add code to generate format_fallback.c file

Fixes: a1983223d8839a0c9 "mesa: Add _mesa_format_fallback_rgbx_to_rgba() [v2]"
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agomesa: add KHR_no_error support for glClear()
Samuel Pitoiset [Mon, 26 Jun 2017 15:46:39 +0000 (17:46 +0200)]
mesa: add KHR_no_error support for glClear()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add clear() helper
Samuel Pitoiset [Mon, 26 Jun 2017 15:44:44 +0000 (17:44 +0200)]
mesa: add clear() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glBindAttribLocation()
Samuel Pitoiset [Mon, 26 Jun 2017 15:38:22 +0000 (17:38 +0200)]
mesa: add KHR_no_error support for glBindAttribLocation()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add bind_attrib_location() helper
Samuel Pitoiset [Mon, 26 Jun 2017 15:35:24 +0000 (17:35 +0200)]
mesa: add bind_attrib_location() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for gl*ReadBuffer()
Samuel Pitoiset [Mon, 26 Jun 2017 15:12:18 +0000 (17:12 +0200)]
mesa: add KHR_no_error support for gl*ReadBuffer()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: create read_buffer_err() and always inline read_buffer()
Samuel Pitoiset [Mon, 26 Jun 2017 15:06:14 +0000 (17:06 +0200)]
mesa: create read_buffer_err() and always inline read_buffer()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glVertex*AttribBinding()
Samuel Pitoiset [Mon, 26 Jun 2017 13:50:48 +0000 (15:50 +0200)]
mesa: add KHR_no_error support for glVertex*AttribBinding()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glShaderStorageBlockBinding()
Samuel Pitoiset [Mon, 26 Jun 2017 13:35:10 +0000 (15:35 +0200)]
mesa: add KHR_no_error support for glShaderStorageBlockBinding()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add shader_storage_block_binding() helper
Samuel Pitoiset [Mon, 26 Jun 2017 13:31:28 +0000 (15:31 +0200)]
mesa: add shader_storage_block_binding() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glUniformBlockBinding()
Samuel Pitoiset [Mon, 26 Jun 2017 13:09:04 +0000 (15:09 +0200)]
mesa: add KHR_no_error support for glUniformBlockBinding()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add uniform_block_binding() helper
Samuel Pitoiset [Mon, 26 Jun 2017 13:05:02 +0000 (15:05 +0200)]
mesa: add uniform_block_binding() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glFenceSync()
Samuel Pitoiset [Mon, 26 Jun 2017 12:49:51 +0000 (14:49 +0200)]
mesa: add KHR_no_error support for glFenceSync()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add fence_sync() helper
Samuel Pitoiset [Mon, 26 Jun 2017 12:48:24 +0000 (14:48 +0200)]
mesa: add fence_sync() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glClientWaitSync()
Samuel Pitoiset [Mon, 26 Jun 2017 12:44:43 +0000 (14:44 +0200)]
mesa: add KHR_no_error support for glClientWaitSync()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add client_wait_sync() helper
Samuel Pitoiset [Mon, 26 Jun 2017 12:42:54 +0000 (14:42 +0200)]
mesa: add client_wait_sync() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glCheckFramebufferStatus()
Samuel Pitoiset [Mon, 26 Jun 2017 12:16:41 +0000 (14:16 +0200)]
mesa: add KHR_no_error support for glCheckFramebufferStatus()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for gl*Renderbuffers()
Samuel Pitoiset [Mon, 26 Jun 2017 16:27:49 +0000 (18:27 +0200)]
mesa: add KHR_no_error support for gl*Renderbuffers()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: prepare create_render_buffers() for KHR_no_error support
Samuel Pitoiset [Mon, 26 Jun 2017 16:25:10 +0000 (18:25 +0200)]
mesa: prepare create_render_buffers() for KHR_no_error support

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for gl*ProgramPipelines()
Samuel Pitoiset [Mon, 26 Jun 2017 12:13:01 +0000 (14:13 +0200)]
mesa: add KHR_no_error support for gl*ProgramPipelines()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: prepare create_program_pipelines() for KHR_no_error support
Samuel Pitoiset [Mon, 26 Jun 2017 12:10:12 +0000 (14:10 +0200)]
mesa: prepare create_program_pipelines() for KHR_no_error support

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for gl*Samplers()
Samuel Pitoiset [Mon, 26 Jun 2017 12:05:46 +0000 (14:05 +0200)]
mesa: add KHR_no_error support for gl*Samplers()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: prepare create_samplers() helper for KHR_no_error support
Samuel Pitoiset [Mon, 26 Jun 2017 12:01:27 +0000 (14:01 +0200)]
mesa: prepare create_samplers() helper for KHR_no_error support

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for gl*Textures()
Samuel Pitoiset [Mon, 26 Jun 2017 11:53:02 +0000 (13:53 +0200)]
mesa: add KHR_no_error support for gl*Textures()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: prepare create_textures() helper for KHR_no_error support
Samuel Pitoiset [Mon, 26 Jun 2017 11:49:03 +0000 (13:49 +0200)]
mesa: prepare create_textures() helper for KHR_no_error support

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: fix an error message in create_textures()
Samuel Pitoiset [Mon, 26 Jun 2017 11:46:19 +0000 (13:46 +0200)]
mesa: fix an error message in create_textures()

Trivial.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for gl*Buffers()
Samuel Pitoiset [Mon, 26 Jun 2017 10:42:25 +0000 (12:42 +0200)]
mesa: add KHR_no_error support for gl*Buffers()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: prepare create_buffers() helper for KHR_no_error support
Samuel Pitoiset [Mon, 26 Jun 2017 10:39:42 +0000 (12:39 +0200)]
mesa: prepare create_buffers() helper for KHR_no_error support

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glBindTextureUnit()
Samuel Pitoiset [Mon, 26 Jun 2017 10:31:37 +0000 (12:31 +0200)]
mesa: add KHR_no_error support for glBindTextureUnit()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add bind_texture_unit() helper
Samuel Pitoiset [Mon, 26 Jun 2017 10:29:36 +0000 (12:29 +0200)]
mesa: add bind_texture_unit() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glDepthRangeIndexed()
Samuel Pitoiset [Fri, 23 Jun 2017 16:09:12 +0000 (18:09 +0200)]
mesa: add KHR_no_error support for glDepthRangeIndexed()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glDepthFunc()
Samuel Pitoiset [Fri, 23 Jun 2017 15:21:39 +0000 (17:21 +0200)]
mesa: add KHR_no_error support for glDepthFunc()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add depth_func() helper
Samuel Pitoiset [Fri, 23 Jun 2017 15:20:39 +0000 (17:20 +0200)]
mesa: add depth_func() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glFrontFace()
Samuel Pitoiset [Fri, 23 Jun 2017 15:35:51 +0000 (17:35 +0200)]
mesa: add KHR_no_error support for glFrontFace()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add front_face() helper
Samuel Pitoiset [Fri, 23 Jun 2017 15:33:29 +0000 (17:33 +0200)]
mesa: add front_face() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glCullFace()
Samuel Pitoiset [Fri, 23 Jun 2017 15:11:05 +0000 (17:11 +0200)]
mesa: add KHR_no_error support for glCullFace()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add cull_face() helper
Samuel Pitoiset [Fri, 23 Jun 2017 15:09:32 +0000 (17:09 +0200)]
mesa: add cull_face() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glCreateShader() and glCreateShaderObjectARB()
Samuel Pitoiset [Mon, 26 Jun 2017 10:21:05 +0000 (12:21 +0200)]
mesa: add KHR_no_error support for glCreateShader() and glCreateShaderObjectARB()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: rename create_shader() to create_shader_err()
Samuel Pitoiset [Mon, 26 Jun 2017 10:16:42 +0000 (12:16 +0200)]
mesa: rename create_shader() to create_shader_err()

And add a no_error variant.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: pass the 'caller' function to create_shader()
Samuel Pitoiset [Mon, 26 Jun 2017 10:15:18 +0000 (12:15 +0200)]
mesa: pass the 'caller' function to create_shader()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: add KHR_no_error support for glAttachShader() and glAttachObjectARB()
Samuel Pitoiset [Fri, 23 Jun 2017 15:01:22 +0000 (17:01 +0200)]
mesa: add KHR_no_error support for glAttachShader() and glAttachObjectARB()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: rename attach_shader() to attach_shader_err()
Samuel Pitoiset [Fri, 23 Jun 2017 14:54:40 +0000 (16:54 +0200)]
mesa: rename attach_shader() to attach_shader_err()

And add a no_error variant.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomesa: pass the 'caller' function to attach_shader()
Samuel Pitoiset [Fri, 23 Jun 2017 14:53:55 +0000 (16:53 +0200)]
mesa: pass the 'caller' function to attach_shader()

In order to fix GL error messages.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
7 years agomapi: Enable assembly language API acceleration for PPC64LE (V2)
Ben Crocker [Fri, 2 Jun 2017 23:37:55 +0000 (19:37 -0400)]
mapi: Enable assembly language API acceleration for PPC64LE (V2)

Implement assembly language API acceleration for PPC64LE,
analogous to long-standing implementations for X86 and X86-64.

See also similar implementation in libglvnd.

Tested with Piglit.

Signed-off-by: Ben Crocker <bcrocker@redhat.com>
Acked-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Bill Schmidt <wschmidt@linux.vnet.ibm.com>
7 years agoi965: Add a RGBX->RGBA fallback for glEGLImageTextureTarget2D()
Chad Versace [Tue, 30 May 2017 19:27:54 +0000 (12:27 -0700)]
i965: Add a RGBX->RGBA fallback for glEGLImageTextureTarget2D()

This enables support for importing RGBX8888 EGLImage textures on
Skylake.

Chrome OS needs support for RGBX8888 EGLImage textures because because
the Android framework produces HAL_PIXEL_FORMAT_RGBX8888 winsys
surfaces, which the Chrome OS compositor consumes as dma_bufs.  On
hardware for which RGBX is unsupported or disabled, normally core Mesa
provides the RGBX->RGBA fallback during glTexStorage.  But the DRIimage
code bypasses core Mesa, so we must do the fallback in i965.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agomesa: Add _mesa_format_fallback_rgbx_to_rgba() [v2]
Chad Versace [Tue, 20 Jun 2017 23:53:36 +0000 (16:53 -0700)]
mesa: Add _mesa_format_fallback_rgbx_to_rgba() [v2]

The new function takes a mesa_format and, if the format is an alpha
format with a non-alpha variant, returns the non-alpha format.
Otherwise, it returns the original format.

Example:
  input -> output

  // Fallback exists
  MESA_FORMAT_R8G8B8X8_UNORM -> MESA_FORMAT_R8G8B8A8_UNORM
  MESA_FORMAT_RGBX_UNORM16 -> MESA_FORMAT_RGBA_UNORM16

  // No fallback
  MESA_FORMAT_R8G8B8A8_UNORM -> MESA_FORMAT_R8G8B8A8_UNORM
  MESA_FORMAT_Z_FLOAT32 -> MESA_FORMAT_Z_FLOAT32

i965 will use this for EGLImages and DRIimages.

v2 (Jason Ekstrand):
 - Use mako
 - Rework to be easier to read
 - Write directly to the output file

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoradeonsi: move instance divisors into a constant buffer
Marek Olšák [Fri, 9 Jun 2017 16:46:07 +0000 (18:46 +0200)]
radeonsi: move instance divisors into a constant buffer

Shader key size: 107 -> 47

Divisors of 0 and 1 are encoded in the shader key. Greater instance divisors
are loaded from a constant buffer.

The shader code doing the division is huge. Is it something we need to
worry about? Does any app use instance divisors >= 2?

VS prolog disassembly:
    s_load_dwordx4 s[12:15], s[0:1], 0x80  ; C00A0300 00000080
    s_nop 0                                ; BF800000
    s_waitcnt lgkmcnt(0)                   ; BF8C007F
    s_buffer_load_dword s14, s[12:15], 0x4 ; C0220386 00000004
    s_waitcnt lgkmcnt(0)                   ; BF8C007F
    v_cvt_f32_u32_e32 v4, s14              ; 7E080C0E
    v_rcp_iflag_f32_e32 v4, v4             ; 7E084704
    v_mul_f32_e32 v4, 0x4f800000, v4       ; 0A0808FF 4F800000
    v_cvt_u32_f32_e32 v4, v4               ; 7E080F04
    v_mul_hi_u32 v5, v4, s14               ; D2860005 00001D04
    v_mul_lo_i32 v6, v4, s14               ; D2850006 00001D04
    v_cmp_eq_u32_e64 s[12:13], 0, v5       ; D0CA000C 00020A80
    v_sub_i32_e32 v5, vcc, 0, v6           ; 340A0C80
    v_cndmask_b32_e64 v5, v6, v5, s[12:13] ; D1000005 00320B06
    v_mul_hi_u32 v5, v5, v4                ; D2860005 00020905
    v_add_i32_e32 v6, vcc, v5, v4          ; 320C0905
    v_subrev_i32_e32 v4, vcc, v5, v4       ; 36080905
    v_cndmask_b32_e64 v4, v4, v6, s[12:13] ; D1000004 00320D04
    v_mul_hi_u32 v5, v4, v1                ; D2860005 00020304
    v_add_i32_e32 v4, vcc, s8, v0          ; 32080008
    v_mul_lo_i32 v6, v5, s14               ; D2850006 00001D05
    v_add_i32_e32 v7, vcc, 1, v5           ; 320E0A81
    v_cmp_ge_u32_e64 s[12:13], v1, v6      ; D0CE000C 00020D01
    v_sub_i32_e32 v6, vcc, v1, v6          ; 340C0D01
    v_cmp_le_u32_e32 vcc, s14, v6          ; 7D960C0E
    v_cndmask_b32_e64 v8, 0, -1, s[12:13]  ; D1000008 00318280
    v_cndmask_b32_e64 v6, 0, -1, vcc       ; D1000006 01A98280
    v_and_b32_e32 v6, v8, v6               ; 260C0D08
    v_cmp_eq_u32_e32 vcc, 0, v6            ; 7D940C80
    v_cndmask_b32_e32 v6, v7, v5, vcc      ; 000C0B07
    v_add_i32_e32 v5, vcc, -1, v5          ; 320A0AC1
    v_cmp_eq_u32_e32 vcc, 0, v8            ; 7D941080
    v_cndmask_b32_e32 v5, v6, v5, vcc      ; 000A0B06
    v_add_i32_e32 v5, vcc, s9, v5          ; 320A0A09

v2: set prefer_mono for fetched instance divisors

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi: check nr_cbufs in other places before flushing CB
Marek Olšák [Mon, 26 Jun 2017 22:32:47 +0000 (00:32 +0200)]
radeonsi: check nr_cbufs in other places before flushing CB

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi: use #pragma pack to pack si_shader_key
Marek Olšák [Mon, 19 Jun 2017 23:21:19 +0000 (01:21 +0200)]
radeonsi: use #pragma pack to pack si_shader_key

sizeof(struct si_shader_key):
  Before reverting the 2 commits: 120 bytes
  After reverting the 2 commits: 128 bytes
  With #pragma pack: 107 bytes

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoRevert "radeonsi: use uint32_t to declare si_shader_key.opt.kill_outputs"
Marek Olšák [Mon, 19 Jun 2017 23:12:47 +0000 (01:12 +0200)]
Revert "radeonsi: use uint32_t to declare si_shader_key.opt.kill_outputs"

This reverts commit 7b2240ac9ce3ba9bd86f4ae8aac53af8878c0b10.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoRevert "radeonsi: remove 8 bytes from si_shader_key with uint32_t ff_tcs_inputs_to_copy"
Marek Olšák [Mon, 19 Jun 2017 23:12:38 +0000 (01:12 +0200)]
Revert "radeonsi: remove 8 bytes from si_shader_key with uint32_t ff_tcs_inputs_to_copy"

This reverts commit 6b6fed3a3c81c2b0d319ef121df20a0dc914705f.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomesa: optimize GL_PRIMITIVE_RESTART_NV more
Marek Olšák [Thu, 22 Jun 2017 15:16:14 +0000 (17:16 +0200)]
mesa: optimize GL_PRIMITIVE_RESTART_NV more

And other client state changes don't have to call
update_derived_primitive_restart_state.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomesa: fix clip plane enable breakage
Marek Olšák [Sat, 24 Jun 2017 01:16:06 +0000 (03:16 +0200)]
mesa: fix clip plane enable breakage

Broken by:

commit 00173d91b70ae4dcea7c6324ee4858c498cae14b
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Sat Jun 10 12:09:43 2017 +0200

    mesa: don't flag _NEW_TRANSFORM for st/mesa if possible

It also optimizes the case slightly for GL core.

It doesn't try to fix that glEnable might be a bad place to do the
clip plane transformation.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
7 years agoradeon/vcn: enable h264 decode entension support
Leo Liu [Fri, 23 Jun 2017 17:21:09 +0000 (13:21 -0400)]
radeon/vcn: enable h264 decode entension support

It's enabled through message buffer for UVD

Signed-off-by: Leo Liu <leo.liu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
7 years agosvga: clean up format_cap_table
Charmaine Lee [Mon, 26 Jun 2017 20:18:33 +0000 (14:18 -0600)]
svga: clean up format_cap_table

Per Jose's suggestion, this patch cleans up format_cap_table to remove
the unnecessary default cap value for vgpu10 formats since those devcap values
can be retrieved from the device.

Tested with MTT conform, glretrace, piglit in HWv13 and HWv8.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
7 years agosvga: fix the default devcap for SVGA3D_Z_D24S8_INT
Charmaine Lee [Mon, 12 Jun 2017 22:56:17 +0000 (15:56 -0700)]
svga: fix the default devcap for SVGA3D_Z_D24S8_INT

The default devcap for format SVGA3D_Z_D24S8_INT in HWv8 when its devcap is
not explicitly advertised should be set to zero to match the default value
in the device.

Tested with MTT piglit in HW version 8.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
7 years agosvga: create buffer surfaces for incompatible bind flags
Charmaine Lee [Wed, 16 Nov 2016 23:31:00 +0000 (15:31 -0800)]
svga: create buffer surfaces for incompatible bind flags

In cases where certain bind flags cannot be enabled together,
such as CONSTANT_BUFFER cannot be combined with any other flags,
a separate host surface will be created.
For example, if a stream output buffer is reused as a constant buffer,
two host surfaces will be created, one for stream output,
and another one for constant buffer. Data will be copied from the
stream output surface to the constant buffer surface.

Fixes piglit test ext_transform_feedback-immediate-reuse-index-buffer,
                  ext_transform_feedback-immediate-reuse-uniform-buffer

Tested with MTT piglit, MTT glretrace, Nature, NobelClinician Viewer, Tropics.

v2: Fix bind flags compatibility check as suggested by Brian.
v3: Use the list utility to maintain the buffer surface list.
v4: Use the SAFE rev of LIST_FOR_EACH_ENTRY

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
7 years agosvga: do not unconditionally enable streamout bind flag
Charmaine Lee [Tue, 15 Nov 2016 18:15:46 +0000 (10:15 -0800)]
svga: do not unconditionally enable streamout bind flag

Currently we unconditionally enable streamout bind flag at
buffer resource creation time. This is not necessary if the buffer
is never used as a streamout buffer. With this patch, we enable
streamout bind flag as indicated by the state tracker. If the buffer
is later bound to streamout and does not already has streamout bind
flag enabled, we will recreate the buffer with
the new set of bind flags. Buffer content will be copied
from the old buffer to the new one.

Tested with MTT piglit, Nature, Tropics, Lightsmark.

v2: Fix bind flags check as suggested by Brian.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
7 years agosvga: pass tobind_flags to svga_buffer_handle
Charmaine Lee [Mon, 26 Jun 2017 23:24:15 +0000 (17:24 -0600)]
svga: pass tobind_flags to svga_buffer_handle

This is to prepare for more bind_flags optimization
in subsequent patches.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
7 years agosvga: pass bind_flags to surface create functions
Charmaine Lee [Fri, 11 Nov 2016 22:40:57 +0000 (14:40 -0800)]
svga: pass bind_flags to surface create functions

This is to prepare for other bind_flags optimization
in subsequent patches.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
7 years agopipe_loader_sw: fix compilation warning
Brian Paul [Mon, 26 Jun 2017 20:40:58 +0000 (14:40 -0600)]
pipe_loader_sw: fix compilation warning

Add the new 'flags' parameter to pipe_loader_sw_create_screen().

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agomesa: add missing include
Eric Engestrom [Tue, 27 Jun 2017 10:47:14 +0000 (11:47 +0100)]
mesa: add missing include

src/mesa/drivers/x11/xm_dd.c:688:7: warning: implicit declaration of function ‘_mesa_update_draw_buffer_bounds’; did you mean ‘_mesa_has_ARB_draw_buffers_blend’? [-Wimplicit-function-declaration]
       _mesa_update_draw_buffer_bounds(ctx, ctx->DrawBuffer);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Cc: Marek Olšák <marek.olsak@amd.com>
Fixes: 585c5cf8a514783d9ed3 ("mesa: don't update draw buffer bounds in
      _mesa_update_state")
Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
7 years agoi965: perf: add support for Geminilake
Lionel Landwerlin [Mon, 5 Jun 2017 10:24:25 +0000 (11:24 +0100)]
i965: perf: add support for Geminilake

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: perf: add support for Kabylake
Lionel Landwerlin [Mon, 24 Apr 2017 01:38:36 +0000 (18:38 -0700)]
i965: perf: add support for Kabylake

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: perf: use gen_device_info rather then brw_context
Lionel Landwerlin [Mon, 24 Apr 2017 02:12:00 +0000 (19:12 -0700)]
i965: perf: use gen_device_info rather then brw_context

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: perf: ensure isolated timer reports while idle don't confuse filtering
Robert Bragg [Thu, 13 Apr 2017 18:50:37 +0000 (19:50 +0100)]
i965: perf: ensure isolated timer reports while idle don't confuse filtering

From experimentation in IGT, we found that the OA unit might label
some report as "idle" (using an invalid context ID), right after a
report for a given context. Deltas generated by those reports actually
belong to the previous context, even though they're not labelled as
such.

This change makes ensure that while reading OA reports, we only
consider the GPU actually idle after 2 reports with an invalid context
ID.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: perf: keep on reading reports until delimiting timestamp
Lionel Landwerlin [Thu, 30 Mar 2017 14:46:40 +0000 (15:46 +0100)]
i965: perf: keep on reading reports until delimiting timestamp

Due to an underlying hardware race condition, we have no guarantee
that all the reports coming from the OA buffer related to the workload
we're trying to measure have landed to memory by the time all the work
submitted has completed. That means we need to keep on reading the OA
stream until we read a report with a timestamp more recent than the
timestamp recored by the MI_REPORT_PERF_COUNT at the end of the
performance query.

v2: fix uninitialized offset variable to 0 (Lionel)

v3: rework the reading to avoid blocking the user of the API unless
    requested (Rob)

v4: fix a bug that makes the i965 driver reading the perf stream when
    not necessary, leading to very long counter accumulation times
    (Lionel)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: Add Gen8+ INTEL_performance_query support
Robert Bragg [Wed, 25 Nov 2015 16:41:04 +0000 (16:41 +0000)]
i965: Add Gen8+ INTEL_performance_query support

Enables access to OA unit metrics on Gen8+ via INTEL_performance_query.

v2: make use of new parameters coming from gen_device_info (Lionel)

Signed-off-by: Robert Bragg <robert@sixbynine.org>
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: Add XML OA metric sets for Gen8+
Robert Bragg [Wed, 25 Nov 2015 16:41:04 +0000 (16:41 +0000)]
i965: Add XML OA metric sets for Gen8+

Also updates Makefile.am to generate corresponding normalization code.

Signed-off-by: Robert Bragg <robert@sixbynine.org>
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: Add Gen8+ sys_vars for generated OA code
Robert Bragg [Wed, 22 Feb 2017 22:50:35 +0000 (22:50 +0000)]
i965: Add Gen8+ sys_vars for generated OA code

In preparation for adding XML OA metric set descriptions for Gen 8 and 9
which will result in auto generated code that depends on a number of new
system variables ($EuSubslicesTotalCount, $EuThreadsCount and
$SliceMask) this adds corresponding members to brw->perf.sys_vars.

Signed-off-by: Robert Bragg <robert@sixbynine.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoanv/i965: drop libdrm_intel dependency completely
Lionel Landwerlin [Thu, 15 Jun 2017 11:28:32 +0000 (12:28 +0100)]
anv/i965: drop libdrm_intel dependency completely

With Ken's work to drop the library dependency on libdrm_intel, we now
only depend on libdrm for the kernel uapi headers it provides. It
seems like we're better off just embeddeding those headers ourselves,
making the lives of people developping news features tightly
integrated with the kernel a tiny bit easier.

This change also makes it a bit more obvious what cflags/libs are
required by the i915 drivers vs i965, by renaming INTEL_CFLAGS/LIBS
into I915_CFLAGS/LIBS.

Headers were generated from drm-tip on the following commit :

   commit 6d61e70ccc21606ffb8a0a03bd3aba24f659502b
   Merge: 338ffbf7cb5e c0bc126f97fb
   Author: Dave Airlie <airlied@redhat.com>
   Date:   Tue Jun 27 07:24:49 2017 +1000

       Backmerge tag 'v4.12-rc7' into drm-next

v2: Use installed files from the kernel (Daniel Vetter)

v3: Use headers from drm-next rather than drm-tip (Dave/Daniel)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi915: use different CFLAGS/LIBS variables than i965/anv
Lionel Landwerlin [Thu, 15 Jun 2017 11:28:07 +0000 (12:28 +0100)]
i915: use different CFLAGS/LIBS variables than i965/anv

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoaubinator: import intel_aub.h from libdrm
Lionel Landwerlin [Tue, 25 Apr 2017 21:41:52 +0000 (14:41 -0700)]
aubinator: import intel_aub.h from libdrm

This enables us to compile aubinator without the libdrm dependency.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agoi965: perf: minimize the chances to spread queries across batchbuffers
Lionel Landwerlin [Thu, 22 Jun 2017 01:15:50 +0000 (02:15 +0100)]
i965: perf: minimize the chances to spread queries across batchbuffers

Counter related to timings will be sensitive to any delay introduced
by the software. In particular if our begin & end of performance
queries end up in different batches, time related counters will
exhibit biffer values caused by the time it takes for the kernel
driver to load new requests into the hardware.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
7 years agonir: implement GLSL.std.450 NMax, NMIn and NClamp operations
Juan A. Suarez Romero [Thu, 8 Jun 2017 11:50:55 +0000 (11:50 +0000)]
nir: implement GLSL.std.450 NMax, NMIn and NClamp operations

v2: NIR fmax/fmin already handles NaN (Connor).

Reviewed by: Elie Tournier <elie.tournier@collabora.com>

7 years agonir: add support for 64-bit in SmoothStep function
Juan A. Suarez Romero [Thu, 8 Jun 2017 11:03:42 +0000 (11:03 +0000)]
nir: add support for 64-bit in SmoothStep function

According to GLSL.std.450 spec, SmoothStep expects input to be a
floating-point type, but it does not restrict the bitsize.

Current implementation relies on inputs to be 32-bit.

This commit extends the support to 64-bit size inputs.

Reviewed by: Elie Tournier <elie.tournier@collabora.com>

7 years agonir: sge operation is defined for floating-point types
Juan A. Suarez Romero [Thu, 8 Jun 2017 10:06:48 +0000 (10:06 +0000)]
nir: sge operation is defined for floating-point types

According to GLSL.std.450 spec, the operand for step() function must be
a floating-point. It does not restrict the value to 32-bit floats.

Reviewed by: Elie Tournier <elie.tournier@collabora.com>

7 years agoi965: Separate gen < 8 and gen >= 8 paths explicitly in wrap_mode()
Topi Pohjolainen [Mon, 26 Jun 2017 07:43:15 +0000 (10:43 +0300)]
i965: Separate gen < 8 and gen >= 8 paths explicitly in wrap_mode()

Makes coverity happier.

Fix indentation in gen >= 8 block while at it.

CID: 1413020
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
7 years agointel/anv: Add missing break in anv_CreateDevice()
Topi Pohjolainen [Mon, 26 Jun 2017 07:36:50 +0000 (10:36 +0300)]
intel/anv: Add missing break in anv_CreateDevice()

CID: 1413018
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
7 years agoac/nir: convert emit helpers to ac_llvm_context
Nicolai Hähnle [Thu, 18 May 2017 20:04:37 +0000 (22:04 +0200)]
ac/nir: convert emit helpers to ac_llvm_context

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac/nir: remove unused nir_to_llvm_context::has_ddxy
Nicolai Hähnle [Sat, 24 Jun 2017 19:06:34 +0000 (21:06 +0200)]
ac/nir: remove unused nir_to_llvm_context::has_ddxy

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac/nir: implement nir_op_f2b
Nicolai Hähnle [Sun, 25 Jun 2017 10:57:02 +0000 (12:57 +0200)]
ac/nir: implement nir_op_f2b

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac/nir: implement nir_op_{b2i,i2b}
Nicolai Hähnle [Sat, 24 Jun 2017 18:39:39 +0000 (20:39 +0200)]
ac/nir: implement nir_op_{b2i,i2b}

Booleans in NIR are ~0 for true, b2i returns 0/1.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac/nir: convert type helpers to ac_llvm_context
Nicolai Hähnle [Thu, 18 May 2017 16:01:50 +0000 (18:01 +0200)]
ac/nir: convert type helpers to ac_llvm_context

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac/llvm: fix type of second llvm.cttz.* parameter
Nicolai Hähnle [Sat, 24 Jun 2017 15:56:38 +0000 (17:56 +0200)]
ac/llvm: fix type of second llvm.cttz.* parameter

LLVM has required an i1 here for a long time. llvm.ctlz.* was fixed in
commit edd23e06067 ("ac/llvm: fix various findMSB bugs").

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac/shader_info: fix a comment
Nicolai Hähnle [Mon, 15 May 2017 22:04:10 +0000 (00:04 +0200)]
ac/shader_info: fix a comment

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac: add ac_llvm_context::v8i32
Nicolai Hähnle [Thu, 8 Jun 2017 18:04:28 +0000 (20:04 +0200)]
ac: add ac_llvm_context::v8i32

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac: add ac_llvm_context::{i,f}32_{0,1}
Nicolai Hähnle [Thu, 18 May 2017 20:02:48 +0000 (22:02 +0200)]
ac: add ac_llvm_context::{i,f}32_{0,1}

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoac: add ac_llvm_context::{i16, i64, f16, f64}
Nicolai Hähnle [Thu, 30 Mar 2017 12:10:26 +0000 (14:10 +0200)]
ac: add ac_llvm_context::{i16, i64, f16, f64}

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agonv50/ir: fix combineLd/St to update existing records as necessary
Ilia Mirkin [Sat, 24 Jun 2017 22:35:29 +0000 (18:35 -0400)]
nv50/ir: fix combineLd/St to update existing records as necessary

Previously the logic would decide that the record is kept, which
translates into keep = false in the caller, which meant that these
passes did not run.

While it's right that keep = false which means that a new record does
not need to be added, we do still have to perform the usual list
maintenance. It's easiest to do this pre-merge rather than post.

The lowering that clip/cull distance passes produce triggers this bug in
TCS (since reading outputs is done differently in other stages), but it
should be possible to achieve it with the right sequence of regular
reads/writes.

Fixes: KHR-GL45.cull_distance.functional
Fixes: generated_tests/spec/arb_tessellation_shader/execution/tes-input/tes-input-gl_ClipDistance.shader_test
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
7 years agonv50/ir: adjust overlapping logic to take fileIndex-relative offsets
Ilia Mirkin [Sat, 24 Jun 2017 21:09:20 +0000 (17:09 -0400)]
nv50/ir: adjust overlapping logic to take fileIndex-relative offsets

If the fileIndex is different, that means they are in logically
different spaces. However if there's also a relative offset, then they
could end up pointing at the same spot again.

Also add a note about potential for multiple buffers to overlap even if
they're at different file indexes. However that's potentially lowered
away by the point that this logic hits.

Not known to fix any specific application or test.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
7 years agonv50/ir: VFETCH is also considered a load for MemoryOpt
Ilia Mirkin [Sat, 24 Jun 2017 21:08:11 +0000 (17:08 -0400)]
nv50/ir: VFETCH is also considered a load for MemoryOpt

This has no effect since in practice this will only play for
memory-backed files, for which VFETCH will never happen.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
7 years agonv50,nvc0: remove IDX from bufctx immediately, to avoid conflicts with clear
Ilia Mirkin [Sat, 24 Jun 2017 17:17:08 +0000 (13:17 -0400)]
nv50,nvc0: remove IDX from bufctx immediately, to avoid conflicts with clear

The idxbuf could linger, and when a clear happened, which also uses the
3d bufctx, we could get an error trying to access it.

This fixes spurious crashes/errors in CTS tests.

Fixes: 61d8f3387d ("nv50,nvc0: clear index buffer bufctx bin unconditionally")
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
7 years agonv50/ir: fetch indirect sources BEFORE the op that uses them
Ilia Mirkin [Sat, 24 Jun 2017 16:08:52 +0000 (12:08 -0400)]
nv50/ir: fetch indirect sources BEFORE the op that uses them

All the BuildUtil helpers just insert the operation into the current BB.
So we have to take care that any fetchSrc() operations happen before the
operation whose setIndirect() it goes into.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
7 years agomesa: skip FLUSH_VERTICES() if no samplers were changed
Timothy Arceri [Thu, 22 Jun 2017 22:56:40 +0000 (08:56 +1000)]
mesa: skip FLUSH_VERTICES() if no samplers were changed

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agomesa: don't set _NEW_PROGRAM_CONSTANTS for non-bindless opaque uniforms
Timothy Arceri [Thu, 22 Jun 2017 22:44:25 +0000 (08:44 +1000)]
mesa: don't set _NEW_PROGRAM_CONSTANTS for non-bindless opaque uniforms

v2: rebase on new _mesa_flush_vertices_for_uniforms() helper

Reviewed-by: Marek Olšák <marek.olsak@amd.com>