summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* i965: Trivial formatting changes in brw_draw_upload.cIan Romanick2015-08-031-3/+6
| | | | | | Signed-off-by: Ian Romanick <[email protected]> Acked-by: Jason Ekstrand <[email protected]> Reviewed-by: Juha-Pekka Heikkila <[email protected]>
* i965: Trivial formatting changes in brw_draw.cIan Romanick2015-08-031-51/+51
| | | | | | Signed-off-by: Ian Romanick <[email protected]> Acked-by: Jason Ekstrand <[email protected]> Reviewed-by: Juha-Pekka Heikkila <[email protected]>
* i965: Trivial formatting changes in brw_wm.cIan Romanick2015-08-031-43/+41
| | | | | | Signed-off-by: Ian Romanick <[email protected]> Acked-by: Jason Ekstrand <[email protected]> Reviewed-by: Juha-Pekka Heikkila <[email protected]>
* i965/nir: Do not scalarize phis in non-scalar setupsIago Toral Quiroga2015-08-031-2/+6
| | | | | | Significantly reduces register pressure in some piglit tests. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Handle uniform and GRF array access on vertex programs (NIR)Antia Puentes2015-08-031-1/+1
| | | | | | | | | | | | | | | | When the NIR-vec4 pass is enabled, handles uniform and GRF array access on ARB_vertex_program like it is done on vertex shaders. When the old IR-vec4 pass is used, emit_program_code() emits pull constant loads directly instead of using relative addressing, hence to call to move_uniform_array_access_to_pull_constants() is not needed and it is enough to call to split_uniform_registers(). The patch also calls to move_grf_array_access_to_scratch() like it is done for shaders, however I suspect this is a no-op for vertex programs and we could remove it. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Handle uniforms on vertex programsAntia Puentes2015-08-031-2/+32
| | | | | | | The implementation takes into account that on ARB_vertex_program only a single nir variable is generated to support all the uniform data. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Enable NIR-vec4 pass on ARB_vertex_programsAntia Puentes2015-08-031-23/+24
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/gs: Implement support for gl_InvocationID system valueIago Toral Quiroga2015-08-032-0/+29
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* i965/gs/gen6: Refactor ir_emit_vertex and ir_end_primitive for gen6Samuel Iglesias Gonsalvez2015-08-032-1/+14
| | | | | | | | | So the implementation is independent of GLSL IR and the visit methods of the gen6 GS visitor. This way we will be able to reuse that implementation directly from the NIR vec4 backend. Signed-off-by: Samuel Iglesias Gonsalvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/gs: Implement EmitVertex and EndPrimitiveIago Toral Quiroga2015-08-032-0/+23
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/gs: Handle geometry shaders inputsIago Toral Quiroga2015-08-033-0/+71
| | | | | | | Outputs from the vertex shader become array inputs in the geomtry shader, but the arrays are interleaved, so we need to map our inputs accordingly. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/gs: Refactor ir_emit_vertex and ir_end_primitiveIago Toral Quiroga2015-08-034-4/+33
| | | | | | | | So the implementation is independent of GLSL IR and the visit methods of the vec4 visitor. This way we will be able to reuse that implementation directly from the NIR vec4 backend. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir: Enable NIR-vec4 pass on geometry shadersIago Toral Quiroga2015-08-032-1/+5
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* nir: Fix output swizzle in get_mul_for_srcSamuel Iglesias Gonsalvez2015-08-031-1/+12
| | | | | | | | | | | | | | | Avoid copying an overwritten swizzle, use the original values. Example: Former swizzle[] = xyzw src->swizzle[] = zyxx The expected output swizzle = zyxx but if we reuse swizzle in the loop, then output swizzle would be zyzz. Signed-off-by: Samuel Iglesias Gonsalvez <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Add implementation of nir_emit_texture()Alejandro Piñeiro2015-08-031-1/+194
| | | | | | | | Uses the nir structure to get all the info needed (sources, dest reg, etc), and then it uses the common vec4_visitor::emit_texture to emit the final code. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/ir/vec4: Refactor visit(ir_texture *ir)Alejandro Piñeiro2015-08-032-173/+209
| | | | | | | | Splitted in two. The emission is moved to a new vec4_visitor method, vec4_visitor::emit_texture, ir order to be reused on the nir path. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Add a new dst_reg constructor accepting a brw_reg_typeAlejandro Piñeiro2015-08-032-0/+13
| | | | | | | | | | | | | | | This is useful for the upcoming texture support in NIR->vec4 pass, as we found several cases where the brw_type is available, but not the glsl_type. Without this new constructor, the alternative would be: dst_reg reg(MRF, <reg>) reg.type = <brw_type> reg.writemask = <mask> Adding a new constructor makes code easier to read. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Change vec4_visitor::swizzle_result() method to allow reuseAlejandro Piñeiro2015-08-032-8/+15
| | | | | | | | This patch changes the signature of swizzle_result() to accept lower level arguments. The purpose is to reuse it in the upcoming NIR->vec4 pass. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Change vec4_visitor::gather_channel() method to allow reuseEduardo Lima Mitev2015-08-032-5/+6
| | | | | | | | This patch changes the signature of gather_channel() to accept the gather component directly instead of fetching it internally from ir_texture. This will allow reuse in the upcoming NIR->vec4 pass. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Change vec4_visitor::emit_mcs_fetch() method to allow reuseEduardo Lima Mitev2015-08-032-6/+8
| | | | | | | This patch changes the signature of emit_mcs_fetch() to accept lower level arguments. The purpose is to reuse it in the upcoming NIR->vec4 pass. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Move is_high_sample() method to vec4_visitor classEduardo Lima Mitev2015-08-032-3/+4
| | | | | | | | The is_high_sample() method is currently accessible only in the implementation of vec4_visitor. Since we need to reuse it in the upcoming NIR->vec4 pass, lets make it a method of the class instead. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir: Add new utility method brw_glsl_base_type_for_nir_type()Eduardo Lima Mitev2015-08-033-14/+25
| | | | | | | | This method returns the glsl_base_type corresponding to a nir_alu_type. It will factorize code currently present in fs_nir, that can be reused in vec4_nir on its upcoming emit_texture support. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement nir_emit_jumpEduardo Lima Mitev2015-08-031-1/+14
| | | | | | This implementation is taken as-is from fs_nir. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Mark as unreachable ops that should be already loweredAntia Puentes2015-08-031-0/+17
| | | | | | | | | | | | | | | | | | | | | | NIR ALU operations: * nir_op_fabs * nir_op_iabs * nir_op_fneg * nir_op_ineg * nir_op_fsat should be lowered by lower_source mods * nir_op_fdiv should be lowered in the compiler by DIV_TO_MUL_RCP. * nir_op_fmod should be lowered in the compiler by MOD_TO_FLOOR. * nir_op_fsub * nir_op_isub should be handled by ir_sub_to_add_neg. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement vector "any" operationAntia Puentes2015-08-031-0/+14
| | | | | | | | | Adds NIR ALU operations: * nir_op_bany2 * nir_op_bany3 * nir_op_bany4 Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement the dot product operationAntia Puentes2015-08-031-0/+15
| | | | | | | | | Adds NIR ALU operations: * nir_op_fdot2 * nir_op_fdot3 * nir_op_fdot4 Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement conditional selectAntia Puentes2015-08-031-0/+6
| | | | | | | Adds NIR ALU operations: * nir_op_bcsel Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement linear interpolationAntia Puentes2015-08-031-0/+5
| | | | | | | Adds NIR ALU operation: * nir_op_flrp Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Return the emitted instruction in emit_lrp()Antia Puentes2015-08-032-6/+6
| | | | | | | Needed in the NIR backend to set the "saturate" value of the instruction. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement floating-point fused multiply-addAntia Puentes2015-08-031-0/+9
| | | | | | | Adds NIR ALU operation: * nir_op_ffma Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement "shift" operationsAntia Puentes2015-08-031-0/+12
| | | | | | | | | Adds NIR ALU operations: * nir_op_ishl * nir_op_ishr * nir_op_ushr Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement the "sign" operationAntia Puentes2015-08-031-0/+33
| | | | | | | | | | | Follows the vec4_visitor IR implementation but sets the saturate value in addition. Adds NIR ALU operations: * nir_op_fsign * nir_op_isign Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement bit operationsAntia Puentes2015-08-031-0/+62
| | | | | | | | | | | | | | | | | | Same implementation than the IR case. Adds NIR ALU operations: * nir_op_bitfield_reverse * nir_op_bit_count * nir_op_ufind_msb * nir_op_ifind_msb * nir_op_find_lsb * nir_op_ubitfield_extract * nir_op_ibitfield_extract * nir_op_bfm * nir_op_bfi * nir_op_bitfield_insert Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement pack/unpack operationsAntia Puentes2015-08-031-0/+44
| | | | | | | | | | | | | | | | * Lowered floating-point pack and unpack operations are not valid in VS. * Pack and unpack 2x16 operations should be handled by lower_packing_builtins. * Adds NIR ALU operations: * nir_op_pack_half_2x16 * nir_op_unpack_half_2x16 * nir_op_unpack_unorm_4x8 * nir_op_unpack_snorm_4x8 * nir_op_pack_unorm_4x8 * nir_op_pack_snorm_4x8 Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: "noise" ops should already be loweredAntia Puentes2015-08-031-0/+18
| | | | | | Marked them as unreachable. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement "bool<->int,float" format conversionAntia Puentes2015-08-031-0/+19
| | | | | | | | | | | | Used the same implementation than the vec4_visitor NIR. Adds NIR ALU operations: * nir_op_b2i * nir_op_b2f * nir_op_f2b * nir_op_i2b Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement logical operatorsAntia Puentes2015-08-031-0/+16
| | | | | | | | | | Adds NIR ALU operations: * nir_op_inot * nir_op_ixor * nir_op_ior * nir_op_iand Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement non-equality ops on vectorsAntia Puentes2015-08-031-0/+34
| | | | | | | | | | | | Adds NIR ALU operations: * nir_op_bany_fnequal2 * nir_op_bany_inequal2 * nir_op_bany_fnequal3 * nir_op_bany_inequal3 * nir_op_bany_fnequal4 * nir_op_bany_inequal4 Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement equality ops on vectorsAntia Puentes2015-08-031-0/+33
| | | | | | | | | | | | Adds NIR ALU operations: * nir_op_ball_fequal2 * nir_op_ball_iequal2 * nir_op_ball_fequal3 * nir_op_ball_iequal3 * nir_op_ball_fequal4 * nir_op_ball_iequal4 Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement non-vector comparison opsAntia Puentes2015-08-031-0/+14
| | | | | | | | | | | | | | | | Adds NIR ALU operations: * nir_op_flt * nir_op_ilt * nir_op_ult * nir_op_fge * nir_op_ige * nir_op_uge * nir_op_feq * nir_op_ieq * nir_op_fne * nir_op_ine Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir: Add utility method for comparisonsAntia Puentes2015-08-031-0/+39
| | | | | | | | | This method returns the brw_conditional_mod value used when emitting comparative ALU operations. It could be moved to brw_nir in the future to reuse it in fs_nir backend. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Derivatives are not allowed in VSAntia Puentes2015-08-031-0/+8
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement min/max operationsAntia Puentes2015-08-031-0/+14
| | | | | | | | | | | | Adds NIR ALU operations: * nir_op_fmin * nir_op_imin * nir_op_umin * nir_op_fmax * nir_op_imax * nir_op_umax Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Return the emitted instruction in emit_minmax()Antia Puentes2015-08-032-3/+5
| | | | | | | Needed in the NIR backend to set the "saturate" value of the instruction. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement various rounding functionsAntia Puentes2015-08-031-0/+35
| | | | | | | | | | | Adds NIR ALU operations: * nir_op_ftrunc * nir_op_fceil * nir_op_ffloor * nir_op_ffrac * nir_op_fround_even Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement carry/borrow for addition/subtractionAntia Puentes2015-08-031-0/+16
| | | | | | | | Adds NIR ALU operations: * nir_op_uadd_carry * nir_op_usub_borrow Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement more math operationsAntia Puentes2015-08-031-0/+52
| | | | | | | | | | | | | | | | | | | | Adds NIR ALU operations: * nir_op_frcp * nir_op_fexp2 * nir_op_flog2 * nir_op_fexp * nir_op_flog * nir_op_fsin * nir_op_fcos * nir_op_idiv * nir_op_udiv * nir_op_umod * nir_op_ldexp * nir_op_fsqrt * nir_op_frsq * nir_op_fpow Reviewed-by: Jason Ekstrand <[email protected]>
* i965/vec4: Return the last emitted instruction in emit_math()Antia Puentes2015-08-032-4/+7
| | | | | | | Needed in the NIR backend to set the "saturate" value of the instruction. Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement multiplicationAntia Puentes2015-08-031-0/+44
| | | | | | | | | | | | | Implementation based on the vec4_visitor IR implementation for the operations ir_binop_mul and ir_binop_imul_high. Adds NIR ALU operations: * nir_op_fmul * nir_op_imul * nir_op_imul_high * nir_op_umul_high Reviewed-by: Jason Ekstrand <[email protected]>
* i965/nir/vec4: Implement the addition operationAntia Puentes2015-08-031-0/+7
| | | | | | | | Adds NIR ALU operations: * nir_op_fadd * nir_op_iadd Reviewed-by: Jason Ekstrand <[email protected]>