If you want to implement large dynamic filters you need to separate them in x- and y-direction and need to implement the dynamic coefficients using LUTs or Mult operators.
However, if you want to implement a mean or average filter you can follow a different approach. Instead of using a kernel and calculating the sum for each pixel you can implement a rolling average for the columns and rows. To do this you need to compare the image with a shifted copy. We simply use CreateImage and an insertion for these black edges.
Check the attached design: largeDynamicMeanFilter.va
There are many comments and explanations within. The design is kept simple. For special cases modifications and extensions might be required.