summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-07-29Delete unused functions in format parserHEADmasterAnuj Phogat1-7/+0
Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Neil Roberts <neil@linux.intel.com>
2015-07-29i965: Change the type of max_{vs, hs, ...}_threads variables to unsignedAnuj Phogat2-7/+7
Fixes following compiler warning: brw_cs.cpp:386:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-07-29Delete duplicate function is_power_of_two() and use _mesa_is_pow_two()Anuj Phogat8-26/+15
Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
2015-07-29gallium/auxiliary: Ensure c99_math.h is included.Jose Fonseca1-1/+2
As it is needed for exp2. Trivial.
2015-07-29c99_math: (trivial) implement exp2 for MSVC tooRoland Scheidegger1-0/+6
Unsurprisingly doesn't build otherwise with old msvc.
2015-07-29i965/bxt: Support 3src simd16 instructionsBen Widawsky1-3/+1
This is easily accomplished by moving simd16 3src to GEN9_FEATURES. v2: small cleanup to make it more similar to GEN8_FEATURES Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-07-29targets/dri: scons: add missing link against libdrmEmil Velikov1-0/+2
Otherwise the final dri module will have (additional) unresolved symbols. Cc: Brian Paul <brianp@vmware.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviwed-by: Jose Fonseca <jfonseca@vmware.com>
2015-07-29svga: scons: remove unused HAVE_SYS_TYPES_H defineEmil Velikov2-2/+0
There isn't a single instance in mesa that mentions HAVE_SYS_TYPES_H, other than this file. Cc: Jose Fonseca <jfonseca@vmware.com> Acked-by: Brian Paul <brianp@vmware.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-07-29glsl: Avoid double promotion.Matt Turner1-2/+2
2015-07-29mesa: Avoid double promotion.Matt Turner14-49/+49
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29mesa/math: Avoid double promotion.Matt Turner3-46/+46
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29program: Avoid double promotion.Matt Turner1-15/+15
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29swrast: Avoid double promotion.Matt Turner13-50/+50
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29tnl: Avoid double promotion.Matt Turner7-30/+28
There are a couple of unrelated changes in t_vb_lighttmp.h that I hope you'll excuse -- there's a block of code that's duplicated modulo a few trivial differences that I took the liberty of fixing.
2015-07-29vbo: Avoid double promotion.Matt Turner2-5/+5
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29util: Avoid double promotion.Matt Turner1-1/+1
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29gallium/auxiliary: Avoid double promotion.Matt Turner2-2/+2
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2015-07-29nir: Avoid double promotion.Matt Turner1-2/+2
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29i965: Use float calculations when double is unnecessary.Matt Turner14-34/+35
Literals without an f/F suffix are of type double, and implicit conversion rules specify that the float in (float op double) be converted to a double before the operation is performed. I believe float execution was intended (in nearly all cases) or is sufficient (in the case of gen7_urb.c). Removes a lot of float <-> double conversion instructions and replaces many double instructions with float instructions which are cheaper. text data bss dec hex filename 4928659 195160 26192 5150011 4e953b i965_dri.so before 4928315 195152 26192 5149659 4e93db i965_dri.so after Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
2015-07-29gallium/auxiliary: Use exp2(x) instead of pow(2.0, x).Matt Turner2-4/+4
2015-07-29program: Use exp2(x) instead of pow(2.0, x).Matt Turner1-2/+2
2015-07-29mesa: Use floats for viewport bounds.Matt Turner14-22/+22
ARB_viewport_array specifies that DEPTH_RANGE consists of double- precision parameters (corresponding commit d4dc35987), and a preparatory commit (6340e609a) added _mesa_get_viewport_xform() which returned double-precision scale[3] and translate[3] vectors, even though X, Y, Width, and Height were still floats. All users of _mesa_get_viewport_xform() immediately convert the double scale and translation vectors into floats (which were floats originally, but were converted to doubles in _mesa_get_viewport_xform(), sigh). i965 at least cannot consume doubles (see SF_CLIP_VIEWPORT). If we want to pass doubles to hardware, we should have a different function that does that. Acked-by: Mathias Froehlich <Mathias.Froehlich@web.de>
2015-07-29c99_math: Implement exp2f for MSVC.Matt Turner1-0/+6
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
2015-07-29glsl: Remove MSVC implementations of copysign and isnormal.Matt Turner2-26/+2
Non-Gallium parts of Mesa require MSVC 2013 which provides these.
2015-07-29i965/fs: Make the default builder 64-wide before entering the optimization loop.Francisco Jerez2-2/+7
Not a typo. Replace the default builder with one of bogus width to catch cases in which optimization passes assume that the default dispatch width is good enough. The execution controls of instructions emitted during optimization should in general match the original code that is being manipulated. Many of the problems fixed in this series were caught by the assertions introduced in this patch. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Don't set exec_all on instructions wider than the original in ↵Francisco Jerez1-9/+11
lower_simd_width. This could have led to somewhat increased bandwidth usage for lowered texturing instructions on Gen4 (which is the only case in which lower_width may be greater than inst->exec_size). After the previous patches the invariant mentioned in the comment should no longer be assumed by any of the other optimization and lowering passes, so the exec_all() call shouldn't be necessary anymore. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Initialize a builder explicitly in the gen4 send dependency ↵Francisco Jerez1-4/+7
work-arounds. Instead of relying on the default one. This shouldn't lead to any functional changes because DEP_RESOLVE_MOV overrides the execution size of the instruction anyway and other execution controls are irrelevant. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/cfg: Assert that cur_do/while/if pointers are non-NULL.Matt Turner1-0/+3
More.. like in commit 4d93a07c.
2015-07-29nvc0/ir: cache vertex out base so that we don't recompute againIlia Mirkin1-8/+15
The global CSE pass stinks and is unable to pull this out. Easy enough to handle it here and avoid generating unnecessary special register loads (which can allegedly be quite slow). Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-07-29nvc0/ir: output base for reading is based on laneidIlia Mirkin1-0/+25
PFETCH retrieves the address for incoming vertices, not output vertices in TCS. For output vertices, we must use the laneid as a base. Fixes barrier piglit test, which was failing for entirely non-barrier reasons, but rather that it was (a) trying to draw multiple patches and (b) the incoming patch size was not the same as the outgoing patch size. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
2015-07-29Revert "pipe-loader: simplify pipe_loader_drm_probe"Francisco Jerez1-4/+9
This reverts commit a27ec5dc460b91dc44675f48cddbbb2631ee824f. It breaks the intended behaviour of pipe_loader_probe() with ndev==0 as relied upon by clover to query the number of devices available to the pipe loader in the system. Acked-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-07-29i965/fs: Switch opt_cse() to the fs_builder constructor from instruction.Francisco Jerez1-8/+8
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Switch lower_logical_sends() to the fs_builder constructor from ↵Francisco Jerez1-3/+1
instruction. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Switch lower_load_payload() to the fs_builder constructor from ↵Francisco Jerez1-5/+2
instruction. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Don't rely on the default builder to create a null register in ↵Francisco Jerez1-1/+1
emit_spill. It's not guaranteed to have the same width as the instruction generating the spilled variable. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Set up the builder execution size explicitly in opt_sampler_eot().Francisco Jerez1-4/+7
opt_sampler_eot() was relying on the default builder to have the same width as the sampler and FB write opcodes it was eliminating, the channel selects didn't matter because the builder was only being used to allocate registers, no new instructions were being emitted with it. A future commit will change the width of the default builder what will break this assumption, so initialize it explicitly here. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Initialize a builder explicitly in opt_peephole_predicated_break().Francisco Jerez1-3/+5
This wasn't taking into account the execution controls of the original instruction, but it was most likely not a bug because control flow instructions are typically full width. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Set execution controls explicitly in opt_peephole_sel().Francisco Jerez1-3/+9
Emit the SELs and MOVs with the same execution controls as the original MOVs, and the CMP with the same execution controls as the IF. Also explicitly check that the execution controls of any pair of MOVs being folded into a SEL are compatible (which is almost always going to be the case), since otherwise it would seem wrong to initialize the builder object below from the then_mov instruction only. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Set execution controls correctly in lower_integer_multiplication().Francisco Jerez1-1/+1
lower_integer_multiplication() was ignoring the execution controls of the original MUL instruction. Fix it by using the new fs_builder constructor. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Set execution controls correctly for lowered pull constant loads.Francisco Jerez1-3/+3
demote_pull_constants() was ignoring the execution size and channel selects of the instruction that wanted the constant, which doesn't matter for uniform pull constant loads because all channels get the same scalar value, but it might for varying pull constant loads. Fix it by using the new fs_builder() constructor that takes care of setting execution controls compatible with the instruction passed as argument. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Set the execution size of the MOVs correctly in ↵Francisco Jerez1-1/+1
opt_combine_constants(). The execution size was being left equal to the default of 8/16, which AFAICT would have overwritten components other than the one we wanted to initialize and could potentially have corrupted other registers. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Define a new fs_builder constructor taking an instruction as argument.Francisco Jerez1-0/+16
We have a number of optimization passes that repeat the same pattern before inserting new instructions into the program based on some previous instruction: They point the default builder at the original instruction, then call exec_all() and group() to select the same execution controls the original instruction had, and then maybe call annotate() to clone the debug annotation from the original instruction. In fact an optimization pass missing any of these steps is likely to be broken if the intention was to emit new code based on a preexisting instruction, so let's make it easy for passes to do the right thing by having an fs_builder constructor that automates the task of setting up a builder to emit a given instruction provided as argument. The following patches fix all cases I've found in which we weren't explicitly initializing the execution controls of the emitted instructions, and clean-up optimization passes which were already doing the right thing to use the new constructor. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Translate memory barrier NIR intrinsics.Francisco Jerez1-0/+7
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Execute nir_setup_uniforms, _inputs and _outputs unconditionally.Francisco Jerez1-15/+7
Images take up zero uniform slots in the nir_shader::num_uniforms calculation, but nir_setup_uniforms needs to be executed even if the program has no non-image uniforms so the driver-specific image parameters are uploaded. nir_setup_uniforms is a no-op if there are really no uniforms, so checking the num_uniform count is useless in any case. The nir_setup_inputs and _outputs changes shouldn't lead to any functional change, they are just meant to preserve the symmetry between them and nir_setup_uniforms. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Don't overwrite fs_visitor::uniforms and ::param_size during the ↵Francisco Jerez1-3/+4
SIMD16 run. Image variables need to allocate additional uniform slots over nir_shader::num_uniforms. nir_setup_uniforms() overwrites the values imported from the SIMD8 visitor and then exits early before entering the nir_shader::uniforms loop, so image uniforms are never re-created. Instead leave the imported values alone, they *must* be the same for the uniform layout of both runs to be compatible. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Drop unused untyped surface read and atomic emit methods.Francisco Jerez3-127/+5
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Revisit NIR atomic counter intrinsic translation.Francisco Jerez1-17/+32
Rewrite the NIR atomic counter intrinsics translation code making use of the recently introduced surface builder. This will allow the removal of some of the functionality duplicated between the visitor and surface builder. v2: Drop VEC4 suport. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Import surface message builder helper functions.Francisco Jerez3-0/+234
Implement helper functions that can be used to construct and send untyped and typed surface read, write and atomic messages to the shared dataport unit easily. v2: Drop VEC4 suport. v3: Reimplement in terms of logical send opcodes. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Handle zero-size allocations in fs_builder::vgrf().Francisco Jerez1-4/+7
This will be handy to avoid some ugly ternary operators in the next patch, like: fs_reg reg = (size == 0 ? null_reg_ud() : vgrf(..., size)); Because a zero-size register allocation is guaranteed not to ever be read or written we can just return the null register. Another possibility would be to actually allocate a zero-size VGRF what would involve defining a zero-size register class in the register allocator and a considerable amount of churn. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
2015-07-29i965/fs: Implement lowering of logical surface instructions.Francisco Jerez1-8/+55
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>