Mesa (master): meson: fix i965/anv/isl genX static lib names

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: e8eb84826e30ffcb54f69a7aec9181f969418eb2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e8eb84826e30ffcb54f69a7aec9181f969418eb2

Author: Eric Engestrom 
Date:   Fri Jun 15 11:31:52 2018 +0100

meson: fix i965/anv/isl genX static lib names

Shouldn't make any functional difference, just that `liblibanv_gen90.a`
will now be called `libanv_gen90.a`.

Fixes: 3218056e0eb375eeda470 "meson: Build i965 and dri stack"
Fixes: d1992255bb29054fa5176 "meson: Add build Intel "anv" vulkan driver"
Signed-off-by: Eric Engestrom 
Reviewed-by: Tapani Pälli 
Reviewed-by: Dylan Baker 

---

 src/intel/isl/meson.build | 2 +-
 src/intel/vulkan/meson.build  | 2 +-
 src/mesa/drivers/dri/i965/meson.build | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/intel/isl/meson.build b/src/intel/isl/meson.build
index c70c5c05fc..5b57188d30 100644
--- a/src/intel/isl/meson.build
+++ b/src/intel/isl/meson.build
@@ -54,7 +54,7 @@ foreach g : [['40', isl_gen4_files], ['50', []], ['60', 
isl_gen6_files],
  ['90', isl_gen9_files], ['100', []], ['110', []]]
   _gen = g[0]
   isl_gen_libs += static_library(
-'libisl_gen@0@'.format(_gen),
+'isl_gen@0@'.format(_gen),
 [g[1], isl_gen_files, gen_xml_pack],
 include_directories : [inc_common, inc_intel],
 c_args : [c_vis_args, no_override_init_args,
diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build
index f20a8a54c9..159ad09231 100644
--- a/src/intel/vulkan/meson.build
+++ b/src/intel/vulkan/meson.build
@@ -95,7 +95,7 @@ foreach g : [['70', ['gen7_cmd_buffer.c']], ['75', 
['gen7_cmd_buffer.c']],
  ['100', ['gen8_cmd_buffer.c']], ['110', ['gen8_cmd_buffer.c']]]
   _gen = g[0]
   libanv_gen_libs += static_library(
-'libanv_gen@0@'.format(_gen),
+'anv_gen@0@'.format(_gen),
 [anv_gen_files, g[1], anv_entrypoints[0], anv_extensions_h],
 include_directories : [
   inc_common, inc_compiler, inc_drm_uapi, inc_intel, inc_vulkan_util,
diff --git a/src/mesa/drivers/dri/i965/meson.build 
b/src/mesa/drivers/dri/i965/meson.build
index 20404d5b05..761bb51d6f 100644
--- a/src/mesa/drivers/dri/i965/meson.build
+++ b/src/mesa/drivers/dri/i965/meson.build
@@ -138,7 +138,7 @@ files_i965 = files(
 i965_gen_libs = []
 foreach v : ['40', '45', '50', '60', '70', '75', '80', '90', '100', '110']
   i965_gen_libs += static_library(
-'libi965_gen@0@'.format(v),
+'i965_gen@0@'.format(v),
 ['genX_blorp_exec.c', 'genX_state_upload.c', gen_xml_pack],
 include_directories : [inc_common, inc_intel, inc_dri_common],
 c_args : [

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radv: fix bitwise check

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 4d08c1e7d15f7d2c0a406cf1c79314511778b38f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4d08c1e7d15f7d2c0a406cf1c79314511778b38f

Author: Eric Engestrom 
Date:   Fri Jun 15 17:58:17 2018 +0100

radv: fix bitwise check

Fixes: 922cd38172b8a2bc286bd "radv: implement out-of-order rasterization when 
it's safe on VI+"
Signed-off-by: Eric Engestrom 
Reviewed-by: Samuel Pitoiset 

---

 src/amd/vulkan/radv_pipeline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index ccbcbbadd5..113622bb0c 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -622,7 +622,7 @@ radv_blend_check_commutativity(struct radv_blend_state 
*blend,
(1u << VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA);
 
if (dst == VK_BLEND_FACTOR_ONE &&
-   (src_allowed && (1u << src))) {
+   (src_allowed & (1u << src))) {
/* Addition is commutative, but floating point addition isn't
 * associative: subtle changes can be introduced via different
 * rounding. Be conservative, only enable for min and max.

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radv: Use less conservative approximation for context rolls.

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: a3d93eec7cbd3fb733c1ef3b16903265e8e61b23
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3d93eec7cbd3fb733c1ef3b16903265e8e61b23

Author: Bas Nieuwenhuizen 
Date:   Sun Jun 17 03:37:49 2018 +0200

radv: Use less conservative approximation for context rolls.

Drops the number of time we set the scissor by 4x for F1 2017,
which results in a consistent performance improvement of about 4%.

Reviewed-by: Samuel Pitoiset 

---

 src/amd/vulkan/radv_cmd_buffer.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index a07717c719..ccaab63b84 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -3299,10 +3299,13 @@ static bool radv_need_late_scissor_emission(struct 
radv_cmd_buffer *cmd_buffer,
if (!cmd_buffer->device->physical_device->has_scissor_bug)
return false;
 
+   uint32_t used_states = 
cmd_buffer->state.pipeline->graphics.needed_dynamic_state | 
~RADV_CMD_DIRTY_DYNAMIC_ALL;
+
+   /* Index & Vertex buffer don't change context regs, and pipeline is 
handled later. */
+   used_states &= ~(RADV_CMD_DIRTY_INDEX_BUFFER | 
RADV_CMD_DIRTY_VERTEX_BUFFER | RADV_CMD_DIRTY_PIPELINE);
+
/* Assume all state changes except  these two can imply context rolls. 
*/
-   if (cmd_buffer->state.dirty & ~(RADV_CMD_DIRTY_INDEX_BUFFER |
-   RADV_CMD_DIRTY_VERTEX_BUFFER |
-   RADV_CMD_DIRTY_PIPELINE))
+   if (cmd_buffer->state.dirty & used_states)
return true;
 
if (cmd_buffer->state.emitted_pipeline != cmd_buffer->state.pipeline)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: add missing return in error path

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 9a4bd6b45f909dbf65cf66086be2492214c5ac93
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a4bd6b45f909dbf65cf66086be2492214c5ac93

Author: Eric Engestrom 
Date:   Mon Jun 18 11:39:05 2018 +0100

mesa: add missing return in error path

Fixes: 67f40dadaadacd90 "mesa: add support for ARB_sample_locations"
Cc: Rhys Perry 
Cc: Brian Paul 
Signed-off-by: Eric Engestrom 
Reviewed-by: Iago Toral Quiroga 

---

 src/mesa/main/fbobject.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 5d7e5d2984..fa7a9361df 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -4695,9 +4695,11 @@ sample_locations(struct gl_context *ctx, struct 
gl_framebuffer *fb,
if (!fb->SampleLocationTable) {
   size_t size = MAX_SAMPLE_LOCATION_TABLE_SIZE * 2 * sizeof(GLfloat);
   fb->SampleLocationTable = malloc(size);
-  if (!fb->SampleLocationTable)
+  if (!fb->SampleLocationTable) {
  _mesa_error(ctx, GL_OUT_OF_MEMORY,
  "Cannot allocate sample location table");
+ return;
+  }
   for (i = 0; i < MAX_SAMPLE_LOCATION_TABLE_SIZE * 2; i++)
  fb->SampleLocationTable[i] = 0.5f;
}

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radv: fix reported number of available VGPRs

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: d85fef1e34657fc082b9a763de9499d324fbeebf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d85fef1e34657fc082b9a763de9499d324fbeebf

Author: Eric Engestrom 
Date:   Fri Jun 15 17:49:08 2018 +0100

radv: fix reported number of available VGPRs

It's a bit late to round up after an integer division.

Fixes: de889794134e6245e08a2 "radv: Implement VK_AMD_shader_info"
Signed-off-by: Eric Engestrom 
Reviewed-by: Alex Smith 

---

 src/amd/vulkan/radv_shader.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index a68e1d0254..7a5ade9ec7 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -809,7 +809,7 @@ radv_GetShaderInfoAMD(VkDevice _device,
unsigned workgroup_size = local_size[0] * 
local_size[1] * local_size[2];
 
statistics.numAvailableVgprs = 
statistics.numPhysicalVgprs /
-  
ceil(workgroup_size / statistics.numPhysicalVgprs);
+  
ceil((double)workgroup_size / statistics.numPhysicalVgprs);
 
statistics.computeWorkGroupSize[0] = 
local_size[0];
statistics.computeWorkGroupSize[1] = 
local_size[1];

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr/rast: Clang-Format most rasterizer source code

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: a678f40e467bbf72719c60928de26a91f21ac699
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a678f40e467bbf72719c60928de26a91f21ac699

Author: Alok Hota 
Date:   Tue Jun  5 13:59:53 2018 -0500

swr/rast: Clang-Format most rasterizer source code

Reviewed-by: Bruce Cherniak 

---

 .../drivers/swr/rasterizer/archrast/archrast.cpp   |   415 +-
 .../drivers/swr/rasterizer/archrast/archrast.h |59 +-
 .../drivers/swr/rasterizer/archrast/eventmanager.h |57 +-
 .../rasterizer/codegen/templates/gen_ar_event.cpp  |65 +-
 .../rasterizer/codegen/templates/gen_ar_event.hpp  |70 +-
 .../codegen/templates/gen_ar_eventhandler.hpp  |66 +-
 .../codegen/templates/gen_ar_eventhandlerfile.hpp  |91 +-
 .../rasterizer/codegen/templates/gen_backend.cpp   | 6 +-
 .../rasterizer/codegen/templates/gen_builder.hpp   | 8 +-
 .../codegen/templates/gen_header_init.hpp  | 9 +-
 .../swr/rasterizer/codegen/templates/gen_knobs.cpp |82 +-
 .../swr/rasterizer/codegen/templates/gen_knobs.h   |74 +-
 .../swr/rasterizer/codegen/templates/gen_llvm.hpp  |69 +-
 .../codegen/templates/gen_rasterizer.cpp   | 8 +-
 .../drivers/swr/rasterizer/common/formats.cpp  | 13725 +++
 .../drivers/swr/rasterizer/common/formats.h|   403 +-
 src/gallium/drivers/swr/rasterizer/common/intrin.h |   100 +-
 src/gallium/drivers/swr/rasterizer/common/isa.hpp  |94 +-
 src/gallium/drivers/swr/rasterizer/common/os.cpp   |   161 +-
 src/gallium/drivers/swr/rasterizer/common/os.h |   153 +-
 .../swr/rasterizer/common/rdtsc_buckets.cpp|95 +-
 .../drivers/swr/rasterizer/common/rdtsc_buckets.h  |87 +-
 .../swr/rasterizer/common/rdtsc_buckets_shared.h   |88 +-
 .../drivers/swr/rasterizer/common/simd16intrin.h   |   308 +-
 .../drivers/swr/rasterizer/common/simdintrin.h |   446 +-
 .../drivers/swr/rasterizer/common/simdlib.hpp  |   532 +-
 .../swr/rasterizer/common/simdlib_128_avx.inl  |   409 +-
 .../swr/rasterizer/common/simdlib_128_avx2.inl |64 +-
 .../swr/rasterizer/common/simdlib_128_avx512.inl   |   322 +-
 .../rasterizer/common/simdlib_128_avx512_core.inl  |   219 +-
 .../common/simdlib_128_avx512_knights.inl  |43 +-
 .../swr/rasterizer/common/simdlib_256_avx.inl  |   625 +-
 .../swr/rasterizer/common/simdlib_256_avx2.inl |   215 +-
 .../swr/rasterizer/common/simdlib_256_avx512.inl   |   318 +-
 .../rasterizer/common/simdlib_256_avx512_core.inl  |   142 +-
 .../common/simdlib_256_avx512_knights.inl  |43 +-
 .../swr/rasterizer/common/simdlib_512_avx512.inl   |   511 +-
 .../rasterizer/common/simdlib_512_avx512_core.inl  |   235 +-
 .../common/simdlib_512_avx512_knights.inl  |   181 +-
 .../rasterizer/common/simdlib_512_avx512_masks.inl |42 +-
 .../common/simdlib_512_avx512_masks_core.inl   |42 +-
 .../common/simdlib_512_avx512_masks_knights.inl|42 +-
 .../swr/rasterizer/common/simdlib_512_emu.inl  |   755 +-
 .../rasterizer/common/simdlib_512_emu_masks.inl|43 +-
 .../swr/rasterizer/common/simdlib_interface.hpp|42 +-
 .../swr/rasterizer/common/simdlib_types.hpp|   338 +-
 .../drivers/swr/rasterizer/common/swr_assert.cpp   |   192 +-
 .../drivers/swr/rasterizer/common/swr_assert.h |   197 +-
 src/gallium/drivers/swr/rasterizer/core/api.cpp|  1083 +-
 src/gallium/drivers/swr/rasterizer/core/api.h  |   649 +-
 src/gallium/drivers/swr/rasterizer/core/arena.h|   190 +-
 .../drivers/swr/rasterizer/core/backend.cpp|   281 +-
 src/gallium/drivers/swr/rasterizer/core/backend.h  |   106 +-
 .../drivers/swr/rasterizer/core/backend_clear.cpp  |   218 +-
 .../drivers/swr/rasterizer/core/backend_impl.h |  1030 +-
 .../drivers/swr/rasterizer/core/backend_sample.cpp |   276 +-
 .../swr/rasterizer/core/backend_singlesample.cpp   |   295 +-
 src/gallium/drivers/swr/rasterizer/core/binner.cpp |  1069 +-
 src/gallium/drivers/swr/rasterizer/core/binner.h   |   294 +-
 src/gallium/drivers/swr/rasterizer/core/blend.h|   174 +-
 src/gallium/drivers/swr/rasterizer/core/clip.cpp   |   272 +-
 src/gallium/drivers/swr/rasterizer/core/clip.h |   740 +-
 .../drivers/swr/rasterizer/core/conservativeRast.h |   161 +-
 src/gallium/drivers/swr/rasterizer/core/context.h  |   386 +-
 .../drivers/swr/rasterizer/core/depthstencil.h |   238 +-
 src/gallium/drivers/swr/rasterizer/core/fifo.hpp   |   117 +-
 .../swr/rasterizer/core/format_conversion.h|   175 +-
 .../drivers/swr/rasterizer/core/format_traits.h|  5102 +++
 .../drivers/swr/rasterizer/core/format_types.h |   870 +-
 .../drivers/swr/rasterizer/core/format_utils.h |   513 +-
 .../drivers/swr/rasterizer/core/frontend.cpp   |  1033 +-
 src/gallium/drivers/swr/rasterizer/core/frontend.h |   250 +-
 src/gallium/drivers/swr/rasterizer/core/knobs.h|   125 +-
 .../drivers/swr/rasterizer/core/knobs_init.h   |  

Mesa (master): intel/genxml: Add bitmasks for CS_DEBUG_MODE2/INSTPM.

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 056214ebfcfb39f24f3c1be49e0d59f4db93bcab
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=056214ebfcfb39f24f3c1be49e0d59f4db93bcab

Author: Rafael Antognolli 
Date:   Fri Jun 15 11:43:45 2018 -0700

intel/genxml: Add bitmasks for CS_DEBUG_MODE2/INSTPM.

Reviewed-by: Jason Ekstrand 
Reviewed-by: Lionel Landwerlin 

---

 src/intel/genxml/gen10.xml | 4 
 src/intel/genxml/gen11.xml | 4 
 src/intel/genxml/gen6.xml  | 5 +
 src/intel/genxml/gen7.xml  | 5 +
 src/intel/genxml/gen75.xml | 5 +
 src/intel/genxml/gen8.xml  | 5 +
 src/intel/genxml/gen9.xml  | 4 
 7 files changed, 32 insertions(+)

diff --git a/src/intel/genxml/gen10.xml b/src/intel/genxml/gen10.xml
index 67fda86819..541e440571 100644
--- a/src/intel/genxml/gen10.xml
+++ b/src/intel/genxml/gen10.xml
@@ -3631,6 +3631,10 @@
 
 
 
+
+
+
+
   
 
 
diff --git a/src/intel/genxml/gen11.xml b/src/intel/genxml/gen11.xml
index dea1cd83ae..bd3800e4b7 100644
--- a/src/intel/genxml/gen11.xml
+++ b/src/intel/genxml/gen11.xml
@@ -3629,6 +3629,10 @@
 
 
 
+
+
+
+
   
 
 
diff --git a/src/intel/genxml/gen6.xml b/src/intel/genxml/gen6.xml
index f258065eba..c2967cd423 100644
--- a/src/intel/genxml/gen6.xml
+++ b/src/intel/genxml/gen6.xml
@@ -1972,6 +1972,11 @@
 
 
 
+
+
+
+
+
   
 
 
diff --git a/src/intel/genxml/gen7.xml b/src/intel/genxml/gen7.xml
index 895f5d232b..6dde7973e6 100644
--- a/src/intel/genxml/gen7.xml
+++ b/src/intel/genxml/gen7.xml
@@ -2621,6 +2621,11 @@
 
 
 
+
+
+
+
+
   
 
 
diff --git a/src/intel/genxml/gen75.xml b/src/intel/genxml/gen75.xml
index 54362bbb93..5b01fd4540 100644
--- a/src/intel/genxml/gen75.xml
+++ b/src/intel/genxml/gen75.xml
@@ -3135,6 +3135,11 @@
 
 
 
+
+
+
+
+
   
 
 
diff --git a/src/intel/genxml/gen8.xml b/src/intel/genxml/gen8.xml
index 24c91e2e57..4ed41d1561 100644
--- a/src/intel/genxml/gen8.xml
+++ b/src/intel/genxml/gen8.xml
@@ -3374,6 +3374,11 @@
 
 
 
+
+
+
+
+
   
 
 
diff --git a/src/intel/genxml/gen9.xml b/src/intel/genxml/gen9.xml
index dbef0726f1..318ae89d5e 100644
--- a/src/intel/genxml/gen9.xml
+++ b/src/intel/genxml/gen9.xml
@@ -3703,6 +3703,10 @@
 
 
 
+
+
+
+
   
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): anv/device: Check for kernel support of context isolation.

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: be18d5a0ce8bf6c3578deb693e34faf366c4a0db
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=be18d5a0ce8bf6c3578deb693e34faf366c4a0db

Author: Rafael Antognolli 
Date:   Fri Jun 15 09:31:25 2018 -0700

anv/device: Check for kernel support of context isolation.

Reviewed-by: Jason Ekstrand 
Reviewed-by: Lionel Landwerlin 

---

 src/intel/vulkan/anv_device.c  | 3 +++
 src/intel/vulkan/anv_private.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 63d5876edb..d1637f097e 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -377,6 +377,9 @@ anv_physical_device_init(struct anv_physical_device *device,
device->use_softpin = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN)
   && device->supports_48bit_addresses;
 
+   device->has_context_isolation =
+  anv_gem_get_param(fd, I915_PARAM_HAS_CONTEXT_ISOLATION);
+
bool swizzled = anv_gem_get_bit6_swizzle(fd, I915_TILING_X);
 
/* Starting with Gen10, the timestamp frequency of the command streamer may
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index b035bf1c94..6af2a0bd3f 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -856,6 +856,7 @@ struct anv_physical_device {
 boolhas_syncobj_wait;
 boolhas_context_priority;
 booluse_softpin;
+boolhas_context_isolation;
 
 struct anv_device_extension_table   supported_extensions;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): anv: Disable constant buffer 0 being relative.

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: ba2c18763b2fa7fa04e391850f842b4236e844da
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba2c18763b2fa7fa04e391850f842b4236e844da

Author: Rafael Antognolli 
Date:   Fri Jun 15 11:44:28 2018 -0700

anv: Disable constant buffer 0 being relative.

If we are on gen8+ and have context isolation support, just make that
constant buffer address be absolute, so we can use it for push UBOs too.

v2: Do not duplicate constant_buffer_0_is_relative flag (Jason)

Reviewed-by: Jason Ekstrand 

---

 src/intel/vulkan/anv_device.c |  3 ++-
 src/intel/vulkan/genX_state.c | 27 +++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index d1637f097e..4e63f0c46f 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -430,7 +430,8 @@ anv_physical_device_init(struct anv_physical_device *device,
device->compiler->shader_debug_log = compiler_debug_log;
device->compiler->shader_perf_log = compiler_perf_log;
device->compiler->supports_pull_constants = false;
-   device->compiler->constant_buffer_0_is_relative = true;
+   device->compiler->constant_buffer_0_is_relative =
+  device->info.gen < 8 || !device->has_context_isolation;
 
isl_device_init(&device->isl_dev, &device->info, swizzled);
 
diff --git a/src/intel/vulkan/genX_state.c b/src/intel/vulkan/genX_state.c
index c6e5404691..213b606127 100644
--- a/src/intel/vulkan/genX_state.c
+++ b/src/intel/vulkan/genX_state.c
@@ -169,6 +169,33 @@ genX(init_device_state)(struct anv_device *device)
gen10_emit_wa_lri_to_cache_mode_zero(&batch);
 #endif
 
+   /* Set the "CONSTANT_BUFFER Address Offset Disable" bit, so
+* 3DSTATE_CONSTANT_XS buffer 0 is an absolute address.
+*
+* This is only safe on kernels with context isolation support.
+*/
+   if (GEN_GEN >= 8 &&
+   device->instance->physicalDevice.has_context_isolation) {
+  UNUSED uint32_t tmp_reg;
+#if GEN_GEN >= 9
+  anv_pack_struct(&tmp_reg, GENX(CS_DEBUG_MODE2),
+  .CONSTANT_BUFFERAddressOffsetDisable = true,
+  .CONSTANT_BUFFERAddressOffsetDisableMask = true);
+  anv_batch_emit(&batch, GENX(MI_LOAD_REGISTER_IMM), lri) {
+ lri.RegisterOffset = GENX(CS_DEBUG_MODE2_num);
+ lri.DataDWord  = tmp_reg;
+  }
+#elif GEN_GEN == 8
+  anv_pack_struct(&tmp_reg, GENX(INSTPM),
+  .CONSTANT_BUFFERAddressOffsetDisable = true,
+  .CONSTANT_BUFFERAddressOffsetDisableMask = true);
+  anv_batch_emit(&batch, GENX(MI_LOAD_REGISTER_IMM), lri) {
+ lri.RegisterOffset = GENX(INSTPM_num);
+ lri.DataDWord  = tmp_reg;
+  }
+#endif
+   }
+
anv_batch_emit(&batch, GENX(MI_BATCH_BUFFER_END), bbe);
 
assert(batch.next <= batch.end);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium/hud: = should rename the last added data source

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 94178044d5d34e5bf65601d0b5da70d91284ec56
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=94178044d5d34e5bf65601d0b5da70d91284ec56

Author: Marek Olšák 
Date:   Fri Jun  8 19:49:22 2018 -0400

gallium/hud: = should rename the last added data source

Tested-by: Dieter Nützel 

---

 src/gallium/auxiliary/hud/hud_context.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/hud/hud_context.c 
b/src/gallium/auxiliary/hud/hud_context.c
index 61db98b4b0..233202453e 100644
--- a/src/gallium/auxiliary/hud/hud_context.c
+++ b/src/gallium/auxiliary/hud/hud_context.c
@@ -1214,6 +1214,8 @@ hud_parse_env_var(struct hud_context *hud, struct 
pipe_screen *screen,
}
 
while ((num = parse_string(env, name_a)) != 0) {
+  bool added = true;
+
   env += num;
 
   /* check for explicit location, size and etc. settings */
@@ -1386,6 +1388,7 @@ hud_parse_env_var(struct hud_context *hud, struct 
pipe_screen *screen,
   screen, name)) {
fprintf(stderr, "gallium_hud: unknown driver query '%s'\n", 
name);
fflush(stderr);
+   added = false;
 }
  }
   }
@@ -1428,7 +1431,7 @@ hud_parse_env_var(struct hud_context *hud, struct 
pipe_screen *screen,
  env += num;
 
  strip_hyphens(s);
- if (!LIST_IS_EMPTY(&pane->graph_list)) {
+ if (added && !LIST_IS_EMPTY(&pane->graph_list)) {
 struct hud_graph *graph;
 graph = LIST_ENTRY(struct hud_graph, pane->graph_list.prev, head);
 strncpy(graph->name, s, sizeof(graph->name)-1);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): v3d: Set the SO offsets correctly if we have to re-emit.

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: e636199c1c7dc9bc0525f5ae2a4eef05a8092180
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e636199c1c7dc9bc0525f5ae2a4eef05a8092180

Author: Eric Anholt 
Date:   Fri Jun 15 17:08:29 2018 -0700

v3d: Set the SO offsets correctly if we have to re-emit.

This should fix TF across a glFlush() or TF pause/restart.  Fixes
dEQP-GLES3.functional.transform_feedback.array.interleaved.lines.highp_float
and many, many others.

---

 src/gallium/drivers/v3d/v3d_context.h |  2 ++
 src/gallium/drivers/v3d/v3d_program.c |  2 ++
 src/gallium/drivers/v3d/v3dx_draw.c   |  6 ++
 src/gallium/drivers/v3d/v3dx_emit.c   | 12 +---
 src/gallium/drivers/v3d/v3dx_state.c  |  6 +-
 5 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/v3d/v3d_context.h 
b/src/gallium/drivers/v3d/v3d_context.h
index c0de05d363..7c920dbc3d 100644
--- a/src/gallium/drivers/v3d/v3d_context.h
+++ b/src/gallium/drivers/v3d/v3d_context.h
@@ -189,6 +189,8 @@ struct v3d_vertex_stateobj {
 
 struct v3d_streamout_stateobj {
 struct pipe_stream_output_target *targets[PIPE_MAX_SO_BUFFERS];
+/* Number of vertices we've written into the buffer so far. */
+uint32_t offsets[PIPE_MAX_SO_BUFFERS];
 unsigned num_targets;
 };
 
diff --git a/src/gallium/drivers/v3d/v3d_program.c 
b/src/gallium/drivers/v3d/v3d_program.c
index 036f7c6e67..ef7dd375bf 100644
--- a/src/gallium/drivers/v3d/v3d_program.c
+++ b/src/gallium/drivers/v3d/v3d_program.c
@@ -152,6 +152,8 @@ v3d_set_transform_feedback_outputs(struct 
v3d_uncompiled_shader *so,
 vpm_start_offset += write_size;
 vpm_size -= write_size;
 }
+so->base.stream_output.stride[buffer] =
+stream_output->stride[buffer];
 }
 
 so->num_tf_outputs = slot_count;
diff --git a/src/gallium/drivers/v3d/v3dx_draw.c 
b/src/gallium/drivers/v3d/v3dx_draw.c
index 1771973805..eb3afaa026 100644
--- a/src/gallium/drivers/v3d/v3dx_draw.c
+++ b/src/gallium/drivers/v3d/v3dx_draw.c
@@ -557,6 +557,12 @@ v3d_draw_vbo(struct pipe_context *pctx, const struct 
pipe_draw_info *info)
 }
 job->draw_calls_queued++;
 
+/* Increment the TF offsets by how many verts we wrote.  XXX: This
+ * needs some clamping to the buffer size.
+ */
+for (int i = 0; i < v3d->streamout.num_targets; i++)
+v3d->streamout.offsets[i] += info->count;
+
 if (v3d->zsa && job->zsbuf &&
 (v3d->zsa->base.depth.enabled ||
  v3d->zsa->base.stencil[0].enabled)) {
diff --git a/src/gallium/drivers/v3d/v3dx_emit.c 
b/src/gallium/drivers/v3d/v3dx_emit.c
index 344f9e464f..e0bb95efb2 100644
--- a/src/gallium/drivers/v3d/v3dx_emit.c
+++ b/src/gallium/drivers/v3d/v3dx_emit.c
@@ -694,6 +694,10 @@ v3dX(emit_state)(struct pipe_context *pctx)
 so->targets[i];
 struct v3d_resource *rsc = target ?
 v3d_resource(target->buffer) : NULL;
+struct pipe_shader_state *vs = 
&v3d->prog.bind_vs->base;
+struct pipe_stream_output_info *info = 
&vs->stream_output;
+uint32_t offset = (v3d->streamout.offsets[i] *
+   info->stride[i] * 4);
 
 #if V3D_VERSION >= 40
 if (!target)
@@ -702,9 +706,10 @@ v3dX(emit_state)(struct pipe_context *pctx)
 cl_emit(&job->bcl, TRANSFORM_FEEDBACK_BUFFER, output) {
 output.buffer_address =
 cl_address(rsc->bo,
-   target->buffer_offset);
+   target->buffer_offset +
+   offset);
 output.buffer_size_in_32_bit_words =
-target->buffer_size >> 2;
+(target->buffer_size - offset) >> 2;
 output.buffer_number = i;
 }
 #else /* V3D_VERSION < 40 */
@@ -712,7 +717,8 @@ v3dX(emit_state)(struct pipe_context *pctx)
 if (target) {
 output.address =
 cl_address(rsc->bo,
-   
target->buffer_offset);
+   
target->buffer_offset +
+   offset);
 }
 };
 #endif /* V3D_VERSION < 40 */
diff --git a/src/gallium/drivers/v3d/v3dx_state.c 
b/src/gallium/drivers/v3d/v3dx_state.c
index ec6e8ebfef..70c596855f 100644
--- a/src/galliu

Mesa (master): radeonsi: enable OpenGL 3.3 compat profile

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 68bf94a8b0b6060660b1937c7e21188af7f777f3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=68bf94a8b0b6060660b1937c7e21188af7f777f3

Author: Timothy Arceri 
Date:   Mon Jun 18 15:23:20 2018 +1000

radeonsi: enable OpenGL 3.3 compat profile

Reviewed-by: Marek Olšák 

---

 src/gallium/drivers/radeonsi/si_get.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_get.c 
b/src/gallium/drivers/radeonsi/si_get.c
index de05e8e7e6..f33da90f38 100644
--- a/src/gallium/drivers/radeonsi/si_get.c
+++ b/src/gallium/drivers/radeonsi/si_get.c
@@ -215,7 +215,7 @@ static int si_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
return 420;
 
case PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY:
-   return 140;
+   return 330;
 
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
return MIN2(sscreen->info.max_alloc_size, INT_MAX);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: add ff fragment shader support for geom and tess shaders

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 89a5d6f71517511e809a0d4d163d5f2a3d6201a5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=89a5d6f71517511e809a0d4d163d5f2a3d6201a5

Author: Timothy Arceri 
Date:   Mon Jun 18 12:36:54 2018 +1000

mesa: add ff fragment shader support for geom and tess shaders

This is required for compatibility profile support.

Reviewed-by: Marek Olšák 
Reviewed-by: Iago Toral Quiroga 

---

 src/mesa/main/ff_fragment_shader.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/ff_fragment_shader.cpp 
b/src/mesa/main/ff_fragment_shader.cpp
index a698931d99..935a21624a 100644
--- a/src/mesa/main/ff_fragment_shader.cpp
+++ b/src/mesa/main/ff_fragment_shader.cpp
@@ -229,7 +229,11 @@ static GLbitfield filter_fp_input_mask( GLbitfield 
fp_inputs,
 * since vertex shader state validation comes after fragment state
 * validation (see additional comments in state.c).
 */
-   if (vertexShader)
+   if (ctx->_Shader->CurrentProgram[MESA_SHADER_GEOMETRY] != NULL)
+  vprog = ctx->_Shader->CurrentProgram[MESA_SHADER_GEOMETRY];
+   else if (ctx->_Shader->CurrentProgram[MESA_SHADER_TESS_EVAL] != NULL)
+  vprog = ctx->_Shader->CurrentProgram[MESA_SHADER_TESS_EVAL];
+   else if (vertexShader)
   vprog = ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX];
else
   vprog = ctx->VertexProgram.Current;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): anv: Use a single global API patch version

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 0146d7963651ca3226a8bf25eb683624ce3b0143
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0146d7963651ca3226a8bf25eb683624ce3b0143

Author: Jason Ekstrand 
Date:   Sun Jun 17 16:28:02 2018 -0700

anv: Use a single global API patch version

The Vulkan API has only one patch version shared among all of the
major.minor versions.  We should also advertise the same patch version
regardless of major.minor.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106941
Reviewed-by: Lionel Landwerlin 

---

 src/intel/vulkan/anv_extensions.py | 17 ++---
 src/intel/vulkan/anv_extensions_gen.py |  2 +-
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/intel/vulkan/anv_extensions.py 
b/src/intel/vulkan/anv_extensions.py
index 8160864685..18851c0ff9 100644
--- a/src/intel/vulkan/anv_extensions.py
+++ b/src/intel/vulkan/anv_extensions.py
@@ -44,20 +44,22 @@ class Extension:
 self.enable = _bool_to_c_expr(enable)
 
 class ApiVersion:
-def __init__(self, max_patch_version, enable):
-self.max_patch_version = max_patch_version
+def __init__(self, version, enable):
+self.version = version
 self.enable = _bool_to_c_expr(enable)
 
+API_PATCH_VERSION = 76
+
 # Supported API versions.  Each one is the maximum patch version for the given
 # version.  Version come in increasing order and each version is available if
 # it's provided "enable" condition is true and all previous versions are
 # available.
 API_VERSIONS = [
-ApiVersion('1.0.57',True),
+ApiVersion('1.0',   True),
 
 # DRM_IOCTL_SYNCOBJ_WAIT is required for VK_KHR_external_fence which is a
 # required core feature in Vulkan 1.1
-ApiVersion('1.1.0', 'device->has_syncobj_wait'),
+ApiVersion('1.1',   'device->has_syncobj_wait'),
 ]
 
 MAX_API_VERSION = None # Computed later
@@ -160,6 +162,7 @@ class VkVersion:
 
 MAX_API_VERSION = VkVersion('0.0.0')
 for version in API_VERSIONS:
-version.max_patch_version = VkVersion(version.max_patch_version)
-assert version.max_patch_version > MAX_API_VERSION
-MAX_API_VERSION = version.max_patch_version
+version.version = VkVersion(version.version)
+version.version.patch = API_PATCH_VERSION
+assert version.version > MAX_API_VERSION
+MAX_API_VERSION = version.version
diff --git a/src/intel/vulkan/anv_extensions_gen.py 
b/src/intel/vulkan/anv_extensions_gen.py
index 5ea82204ee..b75cb3e6fb 100644
--- a/src/intel/vulkan/anv_extensions_gen.py
+++ b/src/intel/vulkan/anv_extensions_gen.py
@@ -157,7 +157,7 @@ anv_physical_device_api_version(struct anv_physical_device 
*device)
 %for version in API_VERSIONS:
 if (!(${version.enable}))
 return version;
-version = ${version.max_patch_version.c_vk_version()};
+version = ${version.version.c_vk_version()};
 
 %endfor
 return version;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): ac/surface: Set compressZ for stencil-only surfaces.

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 1a8501a9ddfff6c3eab47046e0e8a9dc17492bf0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a8501a9ddfff6c3eab47046e0e8a9dc17492bf0

Author: Bas Nieuwenhuizen 
Date:   Mon Jun 18 16:29:16 2018 +0200

ac/surface: Set compressZ for stencil-only surfaces.

We HTILE compress stencil-only surfaces too.

CC: 18.1 
Reviewed-by: Marek Olšák 

---

 src/amd/common/ac_surface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c
index 6600ff6b7e..618b755afc 100644
--- a/src/amd/common/ac_surface.c
+++ b/src/amd/common/ac_surface.c
@@ -670,7 +670,7 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib,
 config->info.levels == 1);
 
AddrSurfInfoIn.flags.noStencil = (surf->flags & RADEON_SURF_SBUFFER) == 
0;
-   AddrSurfInfoIn.flags.compressZ = AddrSurfInfoIn.flags.depth;
+   AddrSurfInfoIn.flags.compressZ = !!(surf->flags & 
RADEON_SURF_Z_OR_SBUFFER);
 
/* On CI/VI, the DB uses the same pitch and tile mode (except tilesplit)
 * for Z and stencil. This can cause a number of problems which we work

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): util: manually extract the program name from program_invocation_name

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: de93f546a7f9f3407f88ea8dd2d4b3f7158e94ed
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=de93f546a7f9f3407f88ea8dd2d4b3f7158e94ed

Author: Timothy Arceri 
Date:   Thu Jun 14 11:00:21 2018 +1000

util: manually extract the program name from program_invocation_name

Glibc has the same code to get program_invocation_short_name. However
for some reason the short name gets mangled for some wine apps.

For example with Google Earth VR I get:

program_invocation_name:
"/home/tarceri/.local/share/Steam/steamapps/common/EarthVR/Earth.exe"

program_invocation_short_name:
"e"

Acked-by: Eric Engestrom 

---

 src/util/xmlconfig.c | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/util/xmlconfig.c b/src/util/xmlconfig.c
index 60a6331c86..ad943e2ce4 100644
--- a/src/util/xmlconfig.c
+++ b/src/util/xmlconfig.c
@@ -45,7 +45,16 @@
 /* These aren't declared in any libc5 header */
 extern char *program_invocation_name, *program_invocation_short_name;
 #endif
-#define GET_PROGRAM_NAME() program_invocation_short_name
+static const char *
+__getProgramName()
+{
+char * arg = strrchr(program_invocation_name, '/');
+if (arg)
+return arg+1;
+else
+return program_invocation_name;
+}
+#define GET_PROGRAM_NAME() __getProgramName()
 #elif defined(__CYGWIN__)
 #define GET_PROGRAM_NAME() program_invocation_short_name
 #elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): util: add allow_glsl_relaxed_es to drirc for Google Earth VR

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: a9114b5e3e0c08b189837d452b8f09df7e86b974
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9114b5e3e0c08b189837d452b8f09df7e86b974

Author: Timothy Arceri 
Date:   Thu Jun 14 11:00:25 2018 +1000

util: add allow_glsl_relaxed_es to drirc for Google Earth VR

Reviewed-by: Dave Airlie 

---

 src/util/drirc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/util/drirc b/src/util/drirc
index ff706d1600..7f91035ae8 100644
--- a/src/util/drirc
+++ b/src/util/drirc
@@ -178,6 +178,7 @@ TODO: document the other workarounds.
 
 
 
+
 
 
 

Mesa (master): util: add allow_glsl_builtin_const_expression to drirc for Google Earth VR

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 781c23ece62cc9bf0f28035572be7a4eadf23d42
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=781c23ece62cc9bf0f28035572be7a4eadf23d42

Author: Timothy Arceri 
Date:   Thu Jun 14 11:00:23 2018 +1000

util: add allow_glsl_builtin_const_expression to drirc for Google Earth VR

Reviewed-by: Dave Airlie 

---

 src/util/drirc | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/util/drirc b/src/util/drirc
index c76f1ca438..ff706d1600 100644
--- a/src/util/drirc
+++ b/src/util/drirc
@@ -176,6 +176,10 @@ TODO: document the other workarounds.
 
 
 
+
+
+
+
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/util: add allow_glsl_builtin_const_expression driconf override

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 90dbab0f9a2e35595b7510595b464e654b870e3a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=90dbab0f9a2e35595b7510595b464e654b870e3a

Author: Timothy Arceri 
Date:   Thu Jun 14 11:00:22 2018 +1000

mesa/util: add allow_glsl_builtin_const_expression driconf override

Google Earth VR shaders uses builtins in constant expressions with
GLSL 1.10. That feature wasn't allowed until GLSL 1.20.

Reviewed-by: Dave Airlie 

---

 src/compiler/glsl/ast_function.cpp  | 3 ++-
 src/gallium/auxiliary/pipe-loader/driinfo_gallium.h | 1 +
 src/gallium/include/state_tracker/st_api.h  | 1 +
 src/gallium/state_trackers/dri/dri_screen.c | 2 ++
 src/mesa/main/mtypes.h  | 6 ++
 src/mesa/state_tracker/st_extensions.c  | 3 +++
 src/util/xmlpool/t_options.h| 5 +
 7 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/compiler/glsl/ast_function.cpp 
b/src/compiler/glsl/ast_function.cpp
index 22d58e48c6..127aa1f91c 100644
--- a/src/compiler/glsl/ast_function.cpp
+++ b/src/compiler/glsl/ast_function.cpp
@@ -529,7 +529,8 @@ generate_call(exec_list *instructions, 
ir_function_signature *sig,
 * If the function call is a constant expression, don't generate any
 * instructions; just generate an ir_constant.
 */
-   if (state->is_version(120, 100)) {
+   if (state->is_version(120, 100) ||
+   state->ctx->Const.AllowGLSLBuiltinConstantExpression) {
   ir_constant *value = sig->constant_expression_value(ctx,
   actual_parameters,
   NULL);
diff --git a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h 
b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
index 21dc599dc2..f25f208008 100644
--- a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
+++ b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h
@@ -23,6 +23,7 @@ DRI_CONF_SECTION_DEBUG
DRI_CONF_DISABLE_SHADER_BIT_ENCODING("false")
DRI_CONF_FORCE_GLSL_VERSION(0)
DRI_CONF_ALLOW_GLSL_EXTENSION_DIRECTIVE_MIDSHADER("false")
+   DRI_CONF_ALLOW_GLSL_BUILTIN_CONST_EXPRESSION("false")
DRI_CONF_ALLOW_GLSL_BUILTIN_VARIABLE_REDECLARATION("false")
DRI_CONF_ALLOW_GLSL_CROSS_STAGE_INTERPOLATION_MISMATCH("false")
DRI_CONF_ALLOW_HIGHER_COMPAT_VERSION("false")
diff --git a/src/gallium/include/state_tracker/st_api.h 
b/src/gallium/include/state_tracker/st_api.h
index ec6e7844b8..1efc7f081d 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -222,6 +222,7 @@ struct st_config_options
boolean force_glsl_extensions_warn;
unsigned force_glsl_version;
boolean allow_glsl_extension_directive_midshader;
+   boolean allow_glsl_builtin_const_expression;
boolean allow_glsl_builtin_variable_redeclaration;
boolean allow_higher_compat_version;
boolean glsl_zero_init;
diff --git a/src/gallium/state_trackers/dri/dri_screen.c 
b/src/gallium/state_trackers/dri/dri_screen.c
index aaee987077..a86b751936 100644
--- a/src/gallium/state_trackers/dri/dri_screen.c
+++ b/src/gallium/state_trackers/dri/dri_screen.c
@@ -74,6 +74,8 @@ dri_fill_st_options(struct dri_screen *screen)
   driQueryOptioni(optionCache, "force_glsl_version");
options->allow_glsl_extension_directive_midshader =
   driQueryOptionb(optionCache, "allow_glsl_extension_directive_midshader");
+   options->allow_glsl_builtin_const_expression =
+  driQueryOptionb(optionCache, "allow_glsl_builtin_const_expression");
options->allow_glsl_builtin_variable_redeclaration =
   driQueryOptionb(optionCache, 
"allow_glsl_builtin_variable_redeclaration");
options->allow_higher_compat_version =
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index ef9fce24d9..e7d9c03cfd 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3722,6 +3722,12 @@ struct gl_constants
GLboolean AllowGLSLExtensionDirectiveMidShader;
 
/**
+* Allow builtins as part of constant expressions. This was not allowed
+* until GLSL 1.20 this allows it everywhere.
+*/
+   GLboolean AllowGLSLBuiltinConstantExpression;
+
+   /**
 * Allow GLSL built-in variables to be redeclared verbatim
 */
GLboolean AllowGLSLBuiltinVariableRedeclaration;
diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index c540cee397..6586240cb0 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -1134,6 +1134,9 @@ void st_init_extensions(struct pipe_screen *screen,
if (options->allow_glsl_extension_directive_midshader)
   consts->AllowGLSLExtensionDirectiveMidShader = GL_TRUE;
 
+   if (options->allow_glsl_builtin_const_expression)
+  consts->AllowGLSLBuiltinConstantExpression = GL_TRUE;
+
consts->MinMapBufferAlignment =
   screen->get_param(screen, PIPE_C

Mesa (master): mesa/util: add allow_glsl_relaxed_es driconfig override

2018-06-18 Thread GitLab Mirror
Module: Mesa
Branch: master
Commit: 725b1a406dbe98d7cd187b0dcdfdd0933977de89
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=725b1a406dbe98d7cd187b0dcdfdd0933977de89

Author: Timothy Arceri 
Date:   Thu Jun 14 11:00:24 2018 +1000

mesa/util: add allow_glsl_relaxed_es driconfig override

This relaxes a number of ES shader restrictions allowing shaders
to follow more desktop GLSL like rules.

This initial implementation relaxes the following:

 - allows linking ES shaders with desktop shaders
 - allows mismatching precision qualifiers
 - always enables standard derivative builtins

These relaxations allow Google Earth VR shaders to compile.

Reviewed-by: Dave Airlie 

---

 src/compiler/glsl/builtin_functions.cpp|  3 ++-
 src/compiler/glsl/linker.cpp   | 22 +-
 .../auxiliary/pipe-loader/driinfo_gallium.h|  1 +
 src/gallium/include/state_tracker/st_api.h |  1 +
 src/gallium/state_trackers/dri/dri_screen.c|  2 ++
 src/mesa/main/mtypes.h |  6 ++
 src/mesa/state_tracker/st_extensions.c |  3 +++
 src/util/xmlpool/t_options.h   |  5 +
 8 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/src/compiler/glsl/builtin_functions.cpp 
b/src/compiler/glsl/builtin_functions.cpp
index efe90346d0..7119903795 100644
--- a/src/compiler/glsl/builtin_functions.cpp
+++ b/src/compiler/glsl/builtin_functions.cpp
@@ -446,7 +446,8 @@ fs_oes_derivatives(const _mesa_glsl_parse_state *state)
 {
return state->stage == MESA_SHADER_FRAGMENT &&
   (state->is_version(110, 300) ||
-   state->OES_standard_derivatives_enable);
+   state->OES_standard_derivatives_enable ||
+   state->ctx->Const.AllowGLSLRelaxedES);
 }
 
 static bool
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index e4bf634abe..487a1ffcb0 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -894,7 +894,7 @@ validate_intrastage_arrays(struct gl_shader_program *prog,
  * Perform validation of global variables used across multiple shaders
  */
 static void
-cross_validate_globals(struct gl_shader_program *prog,
+cross_validate_globals(struct gl_context *ctx, struct gl_shader_program *prog,
struct exec_list *ir, glsl_symbol_table *variables,
bool uniforms_only)
 {
@@ -1115,7 +1115,8 @@ cross_validate_globals(struct gl_shader_program *prog,
  /* Check the precision qualifier matches for uniform variables on
   * GLSL ES.
   */
- if (prog->IsES && !var->get_interface_type() &&
+ if (!ctx->Const.AllowGLSLRelaxedES &&
+ prog->IsES && !var->get_interface_type() &&
  existing->data.precision != var->data.precision) {
 if ((existing->data.used && var->data.used) || prog->data->Version 
>= 300) {
linker_error(prog, "declarations for %s `%s` have "
@@ -1168,15 +1169,16 @@ cross_validate_globals(struct gl_shader_program *prog,
  * Perform validation of uniforms used across multiple shader stages
  */
 static void
-cross_validate_uniforms(struct gl_shader_program *prog)
+cross_validate_uniforms(struct gl_context *ctx,
+struct gl_shader_program *prog)
 {
glsl_symbol_table variables;
for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
   if (prog->_LinkedShaders[i] == NULL)
  continue;
 
-  cross_validate_globals(prog, prog->_LinkedShaders[i]->ir, &variables,
- true);
+  cross_validate_globals(ctx, prog, prog->_LinkedShaders[i]->ir,
+ &variables, true);
}
 }
 
@@ -2210,7 +2212,8 @@ link_intrastage_shaders(void *mem_ctx,
for (unsigned i = 0; i < num_shaders; i++) {
   if (shader_list[i] == NULL)
  continue;
-  cross_validate_globals(prog, shader_list[i]->ir, &variables, false);
+  cross_validate_globals(ctx, prog, shader_list[i]->ir, &variables,
+ false);
}
 
if (!prog->data->LinkStatus)
@@ -4807,7 +4810,8 @@ link_shaders(struct gl_context *ctx, struct 
gl_shader_program *prog)
   min_version = MIN2(min_version, prog->Shaders[i]->Version);
   max_version = MAX2(max_version, prog->Shaders[i]->Version);
 
-  if (prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) {
+  if (!ctx->Const.AllowGLSLRelaxedES &&
+  prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) {
  linker_error(prog, "all shaders must use same shading "
   "language version\n");
  goto done;
@@ -4825,7 +4829,7 @@ link_shaders(struct gl_context *ctx, struct 
gl_shader_program *prog)
/* In desktop GLSL, different shader versions may be linked together.  In
 * GLSL ES, all shader versions must be the same.
 */
-   if (prog->Shaders[0]->IsES && min_version != max_version) {
+   if (!ctx->Const.AllowGLSLRelaxedES