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.