957ec00243ec8ccc0a94f68106d079b54685fe5a |
|
07-Jan-2017 |
Kenneth Graunke <kenneth@whitecape.org> |
Revert recent GLSL slot counting fiasco. I apparently broke mark_whole_variable in ir_set_program_inouts. It was passing a type that wasn't var->type, so the wrapper didn't work out. It's all broken, revert it and start over. Fixes all kinds of things on other drivers. Revert "glsl: Make is_fixed_function_array actually check for varyings." This reverts commit 42699e12711668a142b7acf11c168cf4301c1295. Revert "glsl: Mark whole variable used for ClipDistance and TessLevel*." This reverts commit 5c580e64cc206ab160e1767c42e4d6c81f67da4d. Revert "glsl: Override the # of varying slots for ClipDistance and TessLevel*." This reverts commit 8b5749f65ac434961308ccb579fb8a816e4f29d5. Revert "glsl: Create and use a new ir_variable::count_attribute_slots() wrapper." This reverts commit 6aa5cb34d03765b7be8611aa516bc201bd337f73.
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
6aa5cb34d03765b7be8611aa516bc201bd337f73 |
|
15-Nov-2015 |
Kenneth Graunke <kenneth@whitecape.org> |
glsl: Create and use a new ir_variable::count_attribute_slots() wrapper. This wraps glsl_type::count_attribute_slots(), but will soon contain a couple of overrides for a couple of GLSL built-ins variables. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
700bc94dcebf4257740483d2ba467b138234fa1a |
|
03-Nov-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
mesa/glsl: move LinkedTransformFeedback from gl_shader_program to gl_program This will help allow us to store gl_program in the CurrentProgram array rather than gl_shader_program which will allow a bunch of simplifications. Note that we make LinkedTransformFeedback a pointer so we don't waste memory creating a struct for each stage. We also store a pointer to the gl_program that will contain the pointer in gl_shader_program so we can get easy access to the correct stage. Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
ab8c01386ac1c832f3143f57091ed5cf9725c151 |
|
09-Nov-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
st/mesa/glsl: move Version to gl_shader_program_data This is mostly just used during linking however the st uses it when updating textures. In order to store gl_program in the CurrentProgram array rather than gl_shader_program we need to move this field to the shared gl_shader_program_data struct. Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
cbba5e13acc2052349f7e2d304e6dddf31fb199a |
|
09-Nov-2016 |
Ian Romanick <ian.d.romanick@intel.com> |
linker: Remove unnecessary overload of program_resource_visitor::visit_field It looks like I added this version as a short-hand for users that didn't need the fuller version. I don't think there's any real utility in that. I'm not sure what my thinking was there. Maybe if those users overloaded the recursion function could just call the compact version to avoid passing some parameters? None of the users do that. Either way, having this extra overload is not useful. Delete it. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
73f53c097a6bbd07572d5e46af4893d17ff8af93 |
|
05-Nov-2016 |
Ilia Mirkin <imirkin@alum.mit.edu> |
glsl: record number of components used in each slot for varying packing Instead of packing varyings into vec4's, keep track of how many components each slot uses and create varyings with matching types. This ensures that we don't end up using more components than the orginal shader, which is especially important for geometry shader output limits. This comes up for NVIDIA hw, where the limit is 1024 output components for a GS, and the hardware complains *loudly* if you even think about going over. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
885c78801785701fdca0217a7b0f992f26115ee4 |
|
05-Nov-2016 |
Ilia Mirkin <imirkin@alum.mit.edu> |
glsl: fix slot_end calculations and simplify reserved_slots check The previous code was confused about whether slot_end was inclusive or exclusive. Make it so that it is inclusive consistently, and use it for setting the new location. This also avoids discrepancies in how num_components is calculated vs the more manual approach taken for the former reserved_slots check. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
29c174a3e57c9d6ea36fcfb75e0a04b76fc03ee6 |
|
24-Sep-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
Revert "glsl: move xfb BufferStride into gl_transform_feedback_info" This reverts commit f5a6aab4031bc4754756c1773411728ad9a73381. This broke some tests. It seems gl_transform_feedback_info gets memset to 0 so we were losing the values in BufferStride before we used them.
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
f5a6aab4031bc4754756c1773411728ad9a73381 |
|
23-Sep-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: move xfb BufferStride into gl_transform_feedback_info It makes more sense to have this here where we store the other values from xfb qualifiers. The struct it was previously part of is now only used to store values that come from the api. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
ae0a4a1299f649ff550a0dfd59d60fc8b91df54f |
|
09-Sep-2016 |
Marek Olšák <marek.olsak@amd.com> |
glsl: remove interpolateAt* instructions for demoted inputs This fixes 8 fs-interpolateat* piglit crashes on radeonsi, because it can't handle non-input operands in interpolateAt*. Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
f10cc9407b9144fec3e608767edf3bf02df647f2 |
|
16-Aug-2016 |
Thomas Helland <thomashelland90@gmail.com> |
glsl: Convert link_varyings to the util hash table Signed-off-by: Thomas Helland <thomashelland90@gmail.com> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
9c562956f97cbb0698c0dc232eb594e7018a6c08 |
|
31-Aug-2016 |
Kenneth Graunke <kenneth@whitecape.org> |
glsl: Only force varyings to be flat when varying packing. Varying packing would like to mark certain variables as flat. This works as long as both sides of the interfaces are changed accordingly. However, with SSO, we disable varying packing on the outermost stages. We also disable varying packing for certain tessellation stages. With SSO, we operate on the producer and consumer separately. Checks based on the consumer stage and variable are risky, and can easily lead to altering one half of the interface between stages, breaking SSO pipeline IO validation. Just stop monkeying around with interpolation modes unless required for varying packing. There's no point. This also disables it in unsafe SSO cases. Fixes CTS tests: *.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_MaxPatchVertices_Position_PointSize Also fixes Piglit's spec/oes_geometry_shader/sso_validation: - user-defined-gs-input-not-in-block.shader_test - user-defined-gs-input-in-block.shader_test Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
f9f462936ad903f93829404ce99a2580ea21b725 |
|
11-Aug-2016 |
Kenneth Graunke <kenneth@whitecape.org> |
glsl: Fix invariant matching in GLSL 4.30 and GLSL ES 1.00. Old languages (GLSL <= 4.20 and GLSL ES 1.00) require "invariant" to be specified on both inputs and outputs, and match when linking. New languages only allow outputs to be qualified as "invariant" and remove the "invariant must match" restriction when linking varyings (because no input can have that qualifier). Commit 426a50e2089b12d33f5c075aa5622f64076914a3 introduced the new behavior for ES 3.00. It also removed the "must match" restriction for ES 1.00 shaders, which I believe is incorrect. This patch adds that back, as well as making 4.30+ follow the new rules. Thanks to Qiankun Miao for noticing this discrepancy. Fixes a WebGL 2.0 conformance test when run in Chromium: https://www.khronos.org/registry/webgl/sdk/tests/deqp/data/gles3/shaders/qualification_order.html?webglVersion=2 Cc: mesa-stable@lists.freedesktop.org Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96971 Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
29d70cc964411e86bcd0bbc5591b3d82f849c9f8 |
|
27-Jul-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: free hash tables earlier These are only used by get_matching_input() which has been call at this point so free the hash tables. Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
91dde3ddcaf6ca5a7aa2d2e9815236ce2ddf698f |
|
26-May-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: re-enable varying packing in GL4.4+ We can still do packing we just need to get the packing type from the consumer rather than the producer. Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97033
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
ac1181ffbef5250cb3b651e047cce5116727c34c |
|
07-Jul-2016 |
Kenneth Graunke <kenneth@whitecape.org> |
compiler: Rename INTERP_QUALIFIER_* to INTERP_MODE_*. Likewise, rename the enum type to glsl_interp_mode. Beyond the GLSL front-end, talking about "interpolation modes" seems more natural than "interpolation qualifiers" - in the IR, we're removed from how exactly the source language specifies how to interpolate an input. Also, SPIR-V calls these "decorations" rather than "qualifiers". Generated by: $ find . -regextype egrep -regex '.*\.(c|cpp|h)' -type f -exec sed -i \ -e 's/INTERP_QUALIFIER_/INTERP_MODE_/g' \ -e 's/glsl_interp_qualifier/glsl_interp_mode/g' {} \; Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Acked-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
3119871bd9558e5881466b70a4c366d2f83bba82 |
|
14-Jun-2016 |
Ian Romanick <ian.d.romanick@intel.com> |
glsl: Pack integer and double varyings as flat even if interpolation mode is none v2: Also update varying_matches::compute_packing_class(). Suggested by Timothy Arceri. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96358 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Cc: "12.0" <mesa-stable@lists.freedesktop.org> Cc: Gregory Hainaut <gregory.hainaut@gmail.com> Cc: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
1591e668e162daf4057a0d44df4e70f19b94fc76 |
|
30-Jun-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl/mesa: move duplicate shader fields into new struct gl_shader_info Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
1fb8c6df884c2a17cf980c4ea32db4c214903b55 |
|
30-Jun-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl/mesa: split gl_shader in two There are two distinctly different uses of this struct. The first is to store GL shader objects. The second is to store information about a shader stage thats been linked. The two uses actually share few fields and there is clearly confusion about their use. For example the linked shaders map one to one with a program so can simply be destroyed along with the program. However previously we were calling reference counting on the linked shaders. We were also creating linked shaders with a name even though it is always 0 and called the driver version of the _mesa_new_shader() function unnecessarily for GL shader objects. Acked-by: Iago Toral Quiroga <itoral@igalia.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
31dee99e052902bc08ddbb1009748dc982ac3211 |
|
05-Jun-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
mesa/glsl: stop using GL shader type internally Instead use the internal gl_shader_stage enum everywhere. This makes things more consistent and gets rid of unnecessary conversions. Ideally it would be nice to remove the Type field from gl_shader altogether but currently it is used to differentiate between gl_shader and gl_shader_program in the ShaderObjects hash table. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
30df78236c14ca9470fd591a0978625490c010b2 |
|
10-Jun-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: fix component overlap validation for doubles This change makes sure to remove arrays when checking if type is a double. The check for the end of the first slot of a multi-slot double is also fixed by bumping the check to 4 rather than 3. Previously we were we not reserving the last component. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
ad3def919e8bdb4f01db0f06d54961175a1910c4 |
|
09-Jun-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: fix max varyings count for ARB_enhanced_layouts Since this extension allows more than one varying to share a single location we can't just count the number of slots a varying takes and add it to the total. Instead we now reuse the reserved varyings bitfield to determine how many slots are reserved for explicit locations instead. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
2df46519e4aeb330df30890c2702d96891c18964 |
|
08-Jun-2016 |
Dave Airlie <airlied@redhat.com> |
glsl/link_varyings: switch to 64bit check instead of double. This is prep work for int64 support. Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
35616a9e0ef0511ebb77e7076c00f2eeb248933a |
|
08-Jun-2016 |
Dave Airlie <airlied@redhat.com> |
glsl: use new interfaces for 64-bit checks. This is just prep work for int64 support, changing places where 64-bit matters no doubles. Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
1f66a4b68955b9d6cae629cec90e5e0f301c6a7a |
|
06-Jun-2016 |
Dave Airlie <airlied@redhat.com> |
glsl: for anonymous struct matching use without_array() (v3) With tessellation shaders we can have cases where we have arrays of anon structs, so make sure we match using without_array(). Fixes: GL45-CTS.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_in v2: test lengths match as well (Ilia) v3: descend array lengths to check for matches as well (Ilia) Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "12.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
1fe7bbb911ac708999685c942e971693b688a334 |
|
30-May-2016 |
Dave Airlie <airlied@redhat.com> |
glsl/linker: fix multiple streams transform feedback. e2791b38b42f83add5b07298c39741bf0a6d7d4b mesa/program_interface_query: fix transform feedback varyings. caused a regression in GL45-CTS.gtf40.GL3Tests.transform_feedback3.transform_feedback3_multiple_streams on radeonsi. The problem was it was using the skip components varying to set the stream id, when it should wait until a varying was written, this just adds the varying checks in the right place. Cc: "12.0" <mesa-stable@lists.freedesktop.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
98d40b4d1195ebfaa2fd9ed43755ca6896422c1a |
|
01-Jun-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
Revert "glsl: fix xfb_offset unsized array validation" This reverts commit aac90ba2920cf5ceb4df6dba776dd3952780e456. The commit caused a regression in: piglit.spec.glsl-1_50.compiler.gs-input-nonarray-named-block.geom Also the CTS test it was meant to fix seems like it may be bogus. Cc: "12.0" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
aac90ba2920cf5ceb4df6dba776dd3952780e456 |
|
27-May-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: fix xfb_offset unsized array validation This partially fixes CTS test: GL44-CTS.enhanced_layouts.xfb_get_program_resource_api The test now fails at a tes evaluation shader with unsized output arrays. The ARB_enhanced_layouts spec says: "It is a compile-time error to apply xfb_offset to the declaration of an unsized array." So this seems like a bug in the CTS. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
e2791b38b42f83add5b07298c39741bf0a6d7d4b |
|
23-May-2016 |
Dave Airlie <airlied@redhat.com> |
mesa/program_interface_query: fix transform feedback varyings. The spec says gl_NextBuffer and gl_SkipComponents need to be returned to userspace in the program interface queries. We currently throw those away, this requires a complete piglit run to make sure no drivers fallover due to the extra varyings. This fixes: GL45-CTS.program_interface_query.transform-feedback-built-in Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
2d9308012c5da0891b099b5082c17d28bc51bb09 |
|
23-May-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: fix explicit location validation for doubles Previously we would fail to find a match for the second half of a dvec4 as 'i' would get incremented to 1 before we added the var to the array at component 0. Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
61b67892522c89800541ed4f266ab88e5f1db620 |
|
17-May-2016 |
Dave Airlie <airlied@redhat.com> |
glsl/linker: attempt to match anonymous structures at link This is my attempt at fixing at least one of the UE4 bugs with GL4.3. If we are doing intrastage matching and hit anonymous structs, then we should do a record comparison instead of using the names. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95005 Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
cf9220b11f599ca77134528f5b4ad505f1345e1c |
|
18-May-2016 |
Ian Romanick <ian.d.romanick@intel.com> |
glsl/linker: Fix trivial typos in comments Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
d2579728c96e1386cc2c1894c958a219edc27639 |
|
17-May-2016 |
Ian Romanick <ian.d.romanick@intel.com> |
glsl/linker: Fix some formatting to match current coding conventions Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
02e4753777deb15f3313b3f23a7a73dededd0a61 |
|
16-May-2016 |
Ian Romanick <ian.d.romanick@intel.com> |
glsl/linker: Silence unused parameter warning The use of the parameter was removed in d6b92028. glsl/link_varyings.cpp:1390:39: warning: unused parameter ‘separate_shader’ [-Wunused-parameter] bool separate_shader) ^ Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
4fb4fd0b6b1fe8387dc4c9154359f890d379e9cd |
|
17-May-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: make reserved_varying_slot() static Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
1d752823afd53f3c8de8175aa9f40f130d15335f |
|
26-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: include per-patch varyings when generating reserved slot bitfield Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
3f477f0ea53b92be4a7b026fdffb3664f154218b |
|
17-May-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: remove remainings tabs in link_varyings.cpp Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
6d5f7557fb45d56e38f7e19060e05de4c77a9ee5 |
|
17-May-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: fix location and component packing validation on patches These varyings have a separate location domain from per-vertex varyings and need to be handled separately. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
d656736bbf926c219b6bcbc0ad59132fc82a7382 |
|
08-May-2016 |
Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> |
glsl: Add arb_cull_distance support (v3) v2: make too large array a compile error v3: squash mesa/prog patch to avoid static compiler errors in bisect Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
eb18fea707fd7859e712ee7279e9acc68e177ceb |
|
08-May-2016 |
Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> |
mesa/main: Add support for GL_ARB_cull_distance (v2) airlied: v2: rename LowerClipDistance to LowerCombinedClipCullDistnace. I don't think we want any other behaviour with any current hw. Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
0d88b15f073d09afed1747d9cdde98f15c7aa28d |
|
17-Dec-2015 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: cross validate varyings with a component qualifier This change checks for component overlap, including handling overlap of locations and components by doubles. Previously there was no validation for assigning explicit locations to a location used by the second half of a double. V3: simplify handling of doubles and fix double component aliasing detection V2: fix component matching for matricies Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
72b5d00c9cdffea1452341657f07461725b6962f |
|
24-Dec-2015 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: fix cross validation for explicit locations on structs and arrays Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
26c56e24e700d0ab4c6499fea28328045b5e4b32 |
|
03-Apr-2016 |
Kenneth Graunke <kenneth@whitecape.org> |
glsl: Don't remove XFB-only varyings. Consider the case of linking a program with both a vertex and fragment shader. The VS may compute output varyings that are intended for transform feedback, and not read by the fragment shader. In this case, var->data.is_unmatched_generic_inout will be true, but we still cannot eliminate the varyings. We need to also check !var->data.is_xfb_only. Fixes failures in ES31-CTS.gpu_shader5.fma_precision_*, which happen to use transform feedback in a way we apparently hadn't seen before. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
ef1b397b0770ddc24240462a1426f6c3fd4952bb |
|
12-Mar-2016 |
Jordan Justen <jordan.l.justen@intel.com> |
glsl: Don't require matching centroid qualifiers Note: This patch appears to violate older OpenGL and OpenGLES specs. The OpenGLES GLSL 3.1 and OpenGL GLSL 4.3 specifications both remove the requirement for the output and input centroid qualifiers to match. The deqp dEQP-GLES3.functional.shaders.linkage.varying.rules.differing_interpolation_2 test wants the newer OpenGLES 3.1 specification behavior, even for OpenGLES 3.0. This patch simply removes the checking in all cases. The OpenGLES 3.0 conformance test suite doesn't appear to require the older ("must match") spec behavior. For reference, here are the relavent spec citations: The OpenGL 4.2 spec says: "the last active shader stage output variables and fragment shader input variables of the same name must match in type and qualification (other than out matching to in)" The OpenGL 4.3 spec says: "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ." The OpenGLES GLSL 3.00.4 specification says: "The output of the vertex shader and the input of the fragment shader form an interface. For this interface, vertex shader output variables and fragment shader input variables of the same name must match in type and qualification (other than precision and out matching to in)." The OpenGLES GLSL 3.10 Specification says: "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ" Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92743 Bugzilla: https://cvs.khronos.org/bugzilla/show_bug.cgi?id=7819 Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Cc: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
c5704bb350425162011367e47be8c69d424a8797 |
|
10-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
mesa: add query support for GL_TRANSFORM_FEEDBACK_BUFFER interface Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
9e317271d7694d912da99e524294156b6c2de96e |
|
10-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
mesa: add support to query GL_TRANSFORM_FEEDBACK_BUFFER_INDEX Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
51142e7705a5e0c28de9fc097fa7c8446ba0cffe |
|
10-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
mesa: add support to query GL_OFFSET for GL_TRANSFORM_FEEDBACK_VARYING Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
b77c9098782a36cb811891b2bcb572eb61e608ac |
|
14-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: always enable transform feedback mode when xfb_stride defined This enables in shader defined transform feedback mode even if the only place xfb_stride is defined is on the global out. We don't worry about xfb_buffer since Issue 22 c) in the spec says: "If the shader has an "xfb_buffer" qualifier identifying a buffer, but doesn't declare "xfb_offset" on anything associated with it, what happens? ... variables not qualified with "xfb_offset" are not captured, which makes the associated "xfb_buffer" qualifier irrelevant." Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
c95e92b14d69c114b79d941c7e8902a0ea62c287 |
|
14-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: handle varyings that are not written to but have an xfb_offset Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
a2fbc5ed44ec8ebf0e8936ff5b21425159511413 |
|
13-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: reset current stream tracker When we move to the next buffer we need to reset the stream so that we don't generate an error message about streams not matching. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
f2a3c87a00bb38aa63dfb3a5818b2d53ca46c663 |
|
11-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: generate link error when implicit stride is to large This moves the check until after we have done the stride calculation and applies it to the xfb_* qualifiers. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
2fab85aaea59cb2d31d34ea6de94180ca83fe2dd |
|
03-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: add xfb_stride link time validation From the ARB_enhanced_layous spec: "It is a compile-time or link-time error to have any *xfb_offset* that overflows *xfb_stride*, whether stated on declarations before or after the *xfb_stride*, or in different compilation units. ... When no *xfb_stride* is specified for a buffer, the stride of a buffer will be the smallest needed to hold the variable placed at the highest offset, including any required padding." Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
8120e869b1cde7fd1a3679291782f2f50296cb45 |
|
11-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: validate global out xfb_stride qualifiers and set stride on empty buffers Here we use the built-in validation in ast_layout_expression::process_qualifier_constant() to check for mismatching global out strides on buffers in a single shader. From the ARB_enhanced_layouts spec: "While *xfb_stride* can be declared multiple times for the same buffer, it is a compile-time or link-time error to have different values specified for the stride for the same buffer." For intrastage validation a new helper link_xfb_stride_layout_qualifiers() is created. We also take this opportunity to make sure stride is at least a multiple of 4, we will validate doubles at a later stage. From the ARB_enhanced_layouts spec: "If the buffer is capturing any double-typed outputs, the stride must be a multiple of 8, otherwise it must be a multiple of 4, or a compile-time or link-time error results." Finally we update store_tfeedback_info() to apply the strides to LinkedTransformFeedback and update the buffers bitmask to mark any global buffers with a stride as active. For example a shader with: layout (xfb_buffer = 0, xfb_offset = 0) out vec4 gs_fs; layout (xfb_buffer = 1, xfb_stride = 64) out; Is expected to have a buffer bound to both 0 and 1. From the ARB_enhanced_layouts spec: "A binding point requires a bound buffer object if and only if its associated stride in the program object used for transform feedback primitive capture is non-zero." Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
cf039a309a36ba537b45f3bfe7e5a154c87d51ad |
|
10-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
mesa: split transform feedback buffer into its own struct This will be used in a following patch to implement interface query support for TRANSFORM_FEEDBACK_BUFFER. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
258299d87ad932246ae8b1aa979b4a1a398db155 |
|
03-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: use bitmask of active xfb buffer indices This allows us to print the correct binding point when not all buffers declared in the shader are bound. For example if we use a single buffer: layout(xfb_buffer=2, offset=0) out vec4 v; We now print '2' when the buffer is not bound rather than '0'. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
99cb5151ed2203842922027fe80512248abad914 |
|
11-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: sort xfb varyings in offset/buffer order The existing transform feedback code expects to receive the list of varyings in increasing buffer order. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
0c66460fc65e1c45ec2268c978ea11b259441212 |
|
24-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: basic linking support for xfb qualifiers This adds the initial infrastructure for enabling transform feedback mode via in shader qualifiers and adds initial buffer support. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
4305a60173432635cde2f0f1dea8a715ed327bbc |
|
24-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: add xfb helpers and fields to the tfeedback_decl class We also apply any array/struct offsets. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
0822517936d473f4889b07606e131e1dc3199644 |
|
24-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: add helper to process xfb qualifiers during linking This function checks for any xfb_* qualifiers which will enable transform feedback mode and cause any API defined xfb varyings to be ignored. It also counts the number of varyings that have a xfb_offset qualifier and finally it calls the create_xfb_varying_names() helper to generate the names of varyings to be caputured. Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
707fd3972f3c2e16c710cd7ce819d0c5439c28fd |
|
24-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: add helper to generate xfb varying names Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
8765a9e0fe2987caa6af7473cbc4c55754621806 |
|
11-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: generate named interface block names correctly Firstly this updates the named interface lowering pass to store the interface without the arrays removed. Note we need to remove the arrays in the interface/varying matching code to not regress things but in future this should be fixed futher as it would seem we currently successfully match interface blocks with differnt array sizes. Since we now know if the interface was an array we can reduce the IR flags from_named_ifc_block_array and from_named_ifc_block_nonarray to just from_named_ifc_block. Next rather than having a different code path for named interface blocks in program_resource_visitor we just make use of the one used by UBOs this allows us to now handle arrays of arrays correctly. Finally we add a new param to the recursion function named_ifc_member this is because we only want to process a single member at a time. Note that this is also the glsl_struct_field from the original ifc type before lowering rather than the type from the lowered variable. This fixes a bug in Mesa where we would generate the names like WithInstArray[0].g[0][0] when it should be WithInstArray[0].g[0] for the following interface. out WithInstArray { float g[3]; } instArray[2]; Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
d6b9202873f015174592e32f3325d00c57153d2d |
|
29-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: disable varying packing when its not safe In GL 4.4+ there is no guarantee that interpolation qualifiers will match between stages so we cannot safely pack varyings using the current packing pass in Mesa. We also disable packing on outerward facing interfaces for SSO because in ES we need to retain the unpacked varying information for draw time validation. For desktop GL we could allow packing for SSO in versions < 4.4 but its just safer not to do so. We do however enable packing on individual arrays, structs, and matrices as these are required by the transform feedback code and it is still safe to do so. Finally we also enable packing when a varying is only used for transform feedback and its not a SSO. This fixes all remaining rendering issues with the dEQP SSO tests, the only issues remaining with thoses tests are to do with validation. Note: There is still one remaining SSO bug that this patch doesn't fix. Their is a chance that VS -> TCS will have mismatching interfaces because we pack VS output in case its used by transform feedback but don't pack TCS input for performance reasons. This patch will make the situation better but doesn't fix it. V4: fix out of order function params after rebase, make sure packing still disabled in tess stages. Update comments as to why we disable packing on SSO. V3: ES 3.1 *does* require interpolation to match so don't disable packing there. Rebased on master rather than on enhanced layouts component packing series. V2: Make is_varying_packing_safe() a function in the varying_matches class, fix spelling (Matt) and make sure to remove the outer array when dealing with Geom and Tess shaders where appropriate. Lastly fix piglit regression in new piglit test and document the undefined behaviour it depends on: arb_separate_shader_objects/execution/vs-gs-linking.shader_test Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
c0ae6eeb3b0ea42344cc91cd0caa7bd0296172d4 |
|
23-Nov-2015 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: pass disable_varying_packing bool to the lowering pass This will allow us to choose to ignore the disable which will be useful for more fine grained control over when to enable or disable packing. Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
ebc419fcbddb80648c526efc2b15e15e474724e3 |
|
08-Mar-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: don't validate ifc blocks using validation meant for variables Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
31943e6ba5f6bf14797fb4d7699faa69d6899d12 |
|
24-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: replace remaining tabs in link_varyings.cpp Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
00a1bd13b5c6b565b5d15409a6f814b0df2fbe29 |
|
15-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: warn in GL as well as ES when varying not written Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93339
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
ea7f64f74d0910f72730849d3081ae8a62cc28d4 |
|
02-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: don't generate transform feedback candidate when not required If we are not even looking for one don't bother generating a candidate list. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
c1bbaff1e83f901d67d78f9e1ddfe8291dd09bfa |
|
02-Feb-2016 |
Timothy Arceri <timothy.arceri@collabora.com> |
glsl: replace unreachable code with an assert() All interface blocks will have been lowered by this point so just use an assert. Returning false would have caused all sorts of problems if they were not lowered yet and there is an assert to catch this later anyway. We also update the tests to reflect this change. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
f9c43dd22f92cd631f7feffb362a4cd3dad06c87 |
|
26-Jan-2016 |
Samuel Iglesias Gonsálvez <siglesias@igalia.com> |
glsl: double-precision values don't support interpolation ARB_gpu_shader_fp64 spec says: "This extension does not support interpolation of double-precision values; doubles used as fragment shader inputs must be qualified as "flat"." Fixes the regressions added by commit 781d278: arb_gpu_shader_fp64-double-gettransformfeedbackvarying arb_gpu_shader_fp64-tf-interleaved arb_gpu_shader_fp64-tf-interleaved-aligned arb_gpu_shader_fp64-tf-separate Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93878 Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|
eb63640c1d38a200a7b1540405051d3ff79d0d8a |
|
17-Jan-2016 |
Emil Velikov <emil.velikov@collabora.com> |
glsl: move to compiler/ Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Acked-by: Matt Turner <mattst88@gmail.com> Acked-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/compiler/glsl/link_varyings.cpp
|