Mesa (master): meson: fix i965/anv/isl genX static lib names
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
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.
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
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
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
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.
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.
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.
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
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.
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
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
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
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.
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
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
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
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
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
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