An input/output filter unit for use in a graphics processing unit comprising memory and one or more arithmetic logic unit clusters configured to perform shading tasks, the input/output filter unit comprising: a first buffer configured to store data received from, and output to, the one or more arithmetic logic unit clusters ; a second buffer configured to store data received from, and output to, the memory; a weight buffer configured to store filter weights; a filter bank configurable to perform any of a plurality of types of filtering on a set of input data, the plurality of types of filtering comprising one or more types of texture filtering and one or more types of pixel filtering; and control logic configured to cause the filter bank to perform a filtering task of a plurality of filtering tasks, the plurality of filtering tasks comprising texture filtering tasks and pixel filtering tasks; wherein causing the filter bank to perform a pixel filtering task comprises causing the filter bank to perform one of the one or more types of pixel filtering on a set of data stored in the first buffer by the one or more arithmetic logic unit clusters using a set of weights stored in the weight buffer , and store the results of the pixel filtering in the second buffer to be output to the memory; wherein causing the filter bank to perform a texture filtering task comprises causing the filter bank to perform one of the one or more types of texture filtering on a set of data stored in the second buffer from the memory using a set of weights stored in the weight buffer , and store the results of the texture filtering in the first buffer to be output to the one or more arithmetic logic unit clusters . a first buffer configured to store data received from, and output to, the one or more arithmetic logic unit clusters ; a second buffer configured to store data received from, and output to, the memory; a weight buffer configured to store filter weights; a filter bank configurable to perform any of a plurality of types of filtering on a set of input data, the plurality of types of filtering comprising one or more types of texture filtering and one or more types of pixel filtering; and control logic configured to cause the filter bank to perform a filtering task of a plurality of filtering tasks, the plurality of filtering tasks comprising texture filtering tasks and pixel filtering tasks; wherein causing the filter bank to perform a pixel filtering task comprises causing the filter bank to perform one of the one or more types of pixel filtering on a set of data stored in the first buffer by the one or more arithmetic logic unit clusters using a set of weights stored in the weight buffer , and store the results of the pixel filtering in the second buffer to be output to the memory; wherein causing the filter bank to perform a texture filtering task comprises causing the filter bank to perform one of the one or more types of texture filtering on a set of data stored in the second buffer from the memory using a set of weights stored in the weight buffer , and store the results of the texture filtering in the first buffer to be output to the one or more arithmetic logic unit clusters . <EOS>