Faits: A. Charles Poncet, avocat genevois, a assisté l'Etat libyen dans la crise diplomatique qui l'avait opposé à la Suisse après l'arrestation à Genève, le 15 juillet 2008, de Hannibal Kadhafi; il a aussi formé avec succès, au nom de ce dernier, une action en responsabilité et en protection de la personnalité, notamment contre l'Etat de Genève, en raison de la publication d'une photo d'identification d'Hannibal Kadhafi. Le 20 mars 2011, lors d'une émission télévisée, le Conseiller d'Etat François Longchamp a en substance déclaré que Me Poncet, avocat, officier et ancien Conseiller national, avait trahi son pays, son canton et sa ville. L'autorité indépendante d'examen des plaintes en matière de radio et de télévision (AIEP) a été saisie et a donné raison au plaignant, celui-ci n'ayant pas eu le temps de répondre à l'antenne. Interrogé à propos de cette décision par Sylvain Besson, journaliste au quotidien Le Temps, le Conseiller d'Etat avait confirmé ses déclarations dans l'édition du 18 octobre 2011 en ces termes: "Ces propos étaient parfaitement réfléchis. Et je pense que sept mois après cette émission, la population est plus que jamais persuadée que Charles Poncet est effectivement un traître qui, pour quelques billets de mille, a lancé des procédures contre son pays au moment où des négociations extrêmement délicates étaient en cours pour libérer les otages suisses retenus en Libye". Charles Poncet a répondu dans le quotidien Le Matin du 26 octobre 2011. Il a ensuite vainement demandé à François Longchamp de retirer ses propos. Le 12 janvier 2012, il a déposé plainte pénale pour diffamation contre François Longchamp et Sylvain Besson en raison de l'article du 18 octobre 2011. B. Par ordonnance du 29 mars 2012, après avoir demandé à François Longchamp et à Sylvain Besson des observations écrites, le Procureur général a refusé d'entrer en matière sur la plainte. L'activité de Me Poncet en tant qu'avocat de l'Etat libyen n'était pas critiquable. Toutefois, les propos de François Longchamp s'inscrivaient dans le cadre de joutes verbales avec une personnalité publique dont la plume aiguisée avait fait la réputation, comme en témoignaient les lignes parues le 26 octobre 2011. Les propos incriminés reprenaient ceux qui avaient été tenus le 20 mars 2011 et que le plaignant n'avait pas dénoncés. Le terme de traître n'avait plus la même intensité que quelques décennies auparavant, le plaignant ayant lui-même déclaré qu'il ne s'en offusquait "pas outre mesure". Par arrêt du 16 mai 2012, la Chambre pénale de recours de la Cour de justice genevoise a confirmé cette décision. Le fait de recueillir les observations écrites des personnes mises en cause n'empêchait pas le prononcé d'une non-entrée en matière. L'expression "traître à la nation" avait été utilisée une première fois dans Le Matin du 29 août 2009 et avait notoirement trouvé écho dans l'opinion publique; elle avait été reprise par le magistrat lors de l'émission télévisée du 20 mars 2011, sans susciter de plainte de la part de l'intéressé. Celui-ci avait usé de son droit de réponse et, en tant que polémiste et pamphlétaire, devait s'attendre à quelques piques virulentes. Le litige relevait du rapport d'antipathie entre deux personnalités publiques, plutôt que de la défense de l'honneur bafoué. Par acte du 20 juin 2012, Charles Poncet forme un recours en matière pénale par lequel il demande au Tribunal fédéral d'annuler l'arrêt cantonal et d'ordonner au Ministère public d'entrer en matière sur la plainte, subsidiairement de renvoyer la cause à la Cour de justice pour nouvelle décision. Le Chambre pénale se réfère à son arrêt. Le Procureur général conclut au rejet du recours. 